summaryrefslogtreecommitdiff
path: root/any-to-ours
diff options
context:
space:
mode:
Diffstat (limited to 'any-to-ours')
-rwxr-xr-xany-to-ours75
1 files changed, 61 insertions, 14 deletions
diff --git a/any-to-ours b/any-to-ours
index a901d54..a84c368 100755
--- a/any-to-ours
+++ b/any-to-ours
@@ -1,5 +1,5 @@
#!/bin/bash
-# Releases 'any' packages from Arch arches to ours
+# Releases 'any' packages from Arch-derivations arches to ours
trap_exit() {
echo
@@ -7,7 +7,8 @@ trap_exit() {
exit 1
}
-source "$(dirname "$(readlink -e "$0")")/config"
+platform_name="${platform/\//+}"
+source "$(dirname "$(readlink -e "$0")")/config_${platform_name,,}"
source "$(dirname "$(readlink -e "$0")")/db-libremessages"
# From makepkg
@@ -17,16 +18,13 @@ 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
+for '_repo' in "${MAIN_REPOS[@]}"; do
msg "Processing %s..." "${_repo}"
# Find 'any' packages
# This is hardcoded but it could release other arches...
- PKGS=($(find "${FTP_BASE}/${_repo}/os/${BASEARCH}/" \
+ PKGS=($(find "${REPO_DIR}/${_repo}/os/${ARCHES[0]}/" \
-iname '*-any.pkg.tar.?z' \
-printf "%f "))
@@ -35,7 +33,7 @@ for _repo in "${ARCHREPOS[@]}"; do
continue
fi
- for _arch in "${OURARCHES[@]}"; do
+ for '_arch' in "${ARCHES[@]}"; do
msg2 "Syncing %s..." "${_arch}"
# Sync 'any' only and extract the synced packages
@@ -44,12 +42,12 @@ for _repo in "${ARCHREPOS[@]}"; do
--include='*-any.pkg.tar.?z' \
--include='*-any.pkg.tar.?z.sig' \
--exclude='*' \
- "${FTP_BASE}/${_repo}/os/${BASEARCH}/" \
- "${FTP_BASE}/${_repo}/os/${_arch}/" 2>&1 | \
+ "${REPO_DIR}/${_repo}/os/${ARCHES[0]}/" \
+ "${REPO_DIR}/${_repo}/os/${_arch}/" 2>&1 | \
grep 'any\.pkg\.tar\..z$' | \
cut -d ' ' -f 1 ))
- if [ ${#SYNCED[@]} -eq 0 ]; then
+ if [ "${#SYNCED[@]}" -eq 0 ]; then
msg2 "Already synced (or error happened)"
continue
fi
@@ -58,14 +56,63 @@ for _repo in "${ARCHREPOS[@]}"; do
msg2 "Adding to db..."
- pushd "${FTP_BASE}/${_repo}/os/${_arch}/" >/dev/null
+ pushd "${REPO_DIR}/${_repo}/os/${_arch}/" >/dev/null
# Add the packages to the db
- repo-add "${_repo}${DBEXT}" "${SYNCED[@]}"
+ repo-add "${_repo}${DB_EXT}" "${SYNCED[@]}"
popd >/dev/null
# Avoid mixups
- unset SYNCED PKGS
+ unset 'SYNCED' 'PKGS'
done
+ if [ -n "${MULTILIB}" ]; then
+ for '_repo_multilib' in "${MULTILIB_REPOS[@]}"; do
+ msg "Processing %s..." "${_repo}" '(multilib)'
+
+ # Find 'any' packages
+ # This is hardcoded but it could release other arches...
+ PKGS_MULTILIB=($(find "${REPO_DIR}/${_repo_multilib}/os/${MULTILIB[0]}/" \
+ -iname '*-any.pkg.tar.?z' \
+ -printf "%f "))
+
+ if [ ${#PKGS_MULTILIB[@]} -eq 0 ]; then
+ msg2 "No '%s' multilib packages here" any
+ continue
+ fi
+
+ for '_arch_multilib' in "${MULTILIB[@]}"; do
+ msg2 "Syncing %s..." "${_arch_multilib}" '(multilib)'
+
+ # Sync 'any' only and extract the synced packages
+ SYNCED_MULTILIB=($(
+ rsync -av \
+ --include='*-any.pkg.tar.?z' \
+ --include='*-any.pkg.tar.?z.sig' \
+ --exclude='*' \
+ "${REPO_DIR}/${_repo_multilib}/os/${MULTILIB[0]}/" \
+ "${REPO_DIR}/${_repo_multilib}/os/${_arch_multilib}/" 2>&1 | \
+ grep 'any\.pkg\.tar\..z$' | \
+ cut -d ' ' -f 1 ))
+
+ if [ "${#SYNCED_MULTILIB[@]}" -eq 0 ]; then
+ msg2 "Already synced (or error happened)"
+ continue
+ fi
+
+ msg2 "Synced %d packages: %s" "${#SYNCED_MULTILIB[@]}" "${SYNCED_MULTILIB[*]}"
+
+ msg2 "Adding Multilib to db..."
+
+ pushd "${REPO_DIR}/${_repo_multilib}/os/${_arch_multilib}/" >/dev/null
+
+ # Add the packages to the db
+ repo-add "${_repo_multilib}${DB_EXT}" "${SYNCED_MULTILIB[@]}"
+
+ popd >/dev/null
+
+ # Avoid mixups
+ unset 'SYNCED_MULTILIB' 'PKGS_MULTILIB'
+ done
+ fi
done