#!/bin/sh # copy the given package(s) into build-support # shellcheck source=conf/default.conf . "${0%/*}/../conf/default.conf" if [ "$#" -ne 1 ]; then >&2 echo 'usage:' >&2 echo ' copy-to-build-support package-list' exit 2 fi tmp_dir=$(mktemp -d "${work_dir}/tmp.copy-to-build-support.0.XXXXXXXXXX") trap 'rm -rf --one-file-system "${tmp_dir}"' EXIT to_copy='build_assignment epoch pkgver pkgrel sub_pkgrel has_issues is_tested pkgname architecture' sed -n ' s/.\+/\0 \0/ T s/\.pkg\.tar\.xz$// s/\(-[0-9]\+\)\(-[^- ]\+\)$/\1.0\2/ s/-\([^-: ]\+\)\(\(-[^- ]\+\)\{2\}\)$/-0:\1\2/ s/-\([^-: ]\+\):\([^-: ]\+\)-\([^-. ]\+\).\([^-. ]\+\)-\([^- ]\+\)$/ \1 \2 \3 \4 \5/ p ' "$1" | \ while read -r package pkgname epoch pkgver pkgrel sub_pkgrel architecture; do # shellcheck disable=SC2016 id=$( { printf 'SELECT `binary_packages`.`id`,`repositories`.`name`' printf ' FROM `binary_packages`' mysql_join_binary_packages_repositories mysql_join_binary_packages_architectures printf ' WHERE' printf ' `binary_packages`.`%s`=from_base64("%s") AND' \ 'epoch' "$(printf '%s' "${epoch}" | base64 -w0)" \ 'pkgver' "$(printf '%s' "${pkgver}" | base64 -w0)" \ 'pkgrel' "$(printf '%s' "${pkgrel}" | base64 -w0)" \ 'sub_pkgrel' "$(printf '%s' "${sub_pkgrel}" | base64 -w0)" \ 'pkgname' "$(printf '%s' "${pkgname}" | base64 -w0)" printf ' `architectures`.`name`=from_base64("%s")' \ "$(printf '%s' "${architecture}" | base64 -w0)" printf ' LIMIT 1;\n' } | \ mysql_run_query | \ tr '\t' ' ' ) if [ -z "${id}" ]; then continue fi repository="${id#* }" id="${id%% *}" printf '%s\n' "${package}" >> \ "${tmp_dir}/packages" for suffix in '' '.sig'; do printf 'ln "i686/%s/%s%s" "i686/build-support/%s%s"\n' \ "${repository}" \ "${package}" \ "${suffix}" \ "${package}" \ "${suffix}" done >> \ "${tmp_dir}/sftp-command" printf '%s/i686/%s/%s\n' \ "${master_mirror_rsync_directory}" \ "${repository}" \ "${package}" | \ sed ' p s/$/.sig/ ' >> \ "${tmp_dir}/to-copy" # shellcheck disable=SC2016 { printf 'INSERT IGNORE INTO `binary_packages`' printf ' (`repository`' # shellcheck disable=SC2086 printf ',`%s`' ${to_copy} printf ')' printf ' SELECT' printf ' (SELECT `repositories`.`id` FROM `repositories` WHERE `repositories`.`name`="build-support")' # shellcheck disable=SC2086 printf ',`binary_packages`.`%s`' ${to_copy} printf ' FROM `binary_packages`' mysql_join_binary_packages_architectures printf ' WHERE' printf ' `binary_packages`.`id`=%s;\n' \ "${id}" } >> \ "${tmp_dir}/mysql-command" done ${master_mirror_rsync_command} \ "${master_mirror_rsync_directory}/i686/build-support/build-support.db."* \ "${master_mirror_rsync_directory}/i686/build-support/build-support.files."* \ "${tmp_dir}/" if [ -s "${tmp_dir}/to-copy" ]; then mkdir "${tmp_dir}/transit/" # shellcheck disable=SC2046 ${master_mirror_rsync_command} \ $(cat "${tmp_dir}/to-copy") \ "${tmp_dir}/transit/" repo-add "${tmp_dir}/build-support.db.tar.gz" \ "${tmp_dir}/transit/"*".pkg.tar.xz" fi if [ -s "${tmp_dir}/sftp-command" ]; then ${master_mirror_sftp_command} < \ "${tmp_dir}/sftp-command" fi ${master_mirror_rsync_command} \ "${tmp_dir}/build-support.db."* \ "${tmp_dir}/build-support.files."* \ "${master_mirror_rsync_directory}/i686/build-support/" if [ -s "${tmp_dir}/mysql-command" ]; then mysql_run_query < \ "${tmp_dir}/mysql-command" fi if [ -s "${tmp_dir}/packages" ]; then while read -r package; do remove_old_package_versions 'i686' 'build-support' "${package}" done < \ "${tmp_dir}/packages" fi if [ -w "$1" ]; then cat "${tmp_dir}/packages" > \ "$1" fi