#!/bin/bash # Releases 'any' packages from Arch arches to ours trap_exit() { echo error "$@" exit 1 } source "$(dirname "$(readlink -e "$0")")/config" source "$(dirname "$(readlink -e "$0")")/db-import-archlinux.conf" source "$(librelib messages)" # From makepkg set -E trap 'trap_exit "$(gettext "TERM signal caught. Exiting...")"' TERM HUP QUIT trap 'trap_exit "$(gettext "Aborted by user! Exiting...")"' INT trap 'trap_exit "$(gettext "An unknown error has occurred. Exiting...")"' ERR # The architecture to compare with BASEARCH='x86_64' # Traverse all Arch repos for _repo in "${ARCHREPOS[@]}"; do msg "Processing %s..." "${_repo}" # Find 'any' packages # This is hardcoded but it could release other arches... PKGS=($(find "${FTP_BASE}/${_repo}/os/${BASEARCH}/" \ -iname '*-any.pkg.tar.?z' \ -printf "%f ")) if [ ${#PKGS[@]} -eq 0 ]; then msg2 "No '%s' packages here" any continue fi for _arch in "${OURARCHES[@]}"; do msg2 "Syncing %s..." "${_arch}" # Sync 'any' only and extract the synced packages SYNCED=($( rsync -av \ --include='*-any.pkg.tar.?z' \ --include='*-any.pkg.tar.?z.sig' \ --exclude='*' \ "${FTP_BASE}/${_repo}/os/${BASEARCH}/" \ "${FTP_BASE}/${_repo}/os/${_arch}/" 2>&1 | \ grep 'any\.pkg\.tar\..z$' | \ cut -d ' ' -f 1 )) if [ ${#SYNCED[@]} -eq 0 ]; then msg2 "Already synced (or error happened)" continue fi msg2 "Synced %d packages: %s" "${#SYNCED[@]}" "${SYNCED[*]}" msg2 "Adding to db..." pushd "${FTP_BASE}/${_repo}/os/${_arch}/" >/dev/null # Add the packages to the db repo-add "${_repo}${DBEXT}" "${SYNCED[@]}" popd >/dev/null # Avoid mixups unset SYNCED PKGS done done