Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2025-03-30 10:25:01 +0200
committerErich Eckner <git@eckner.net>2025-03-30 10:25:01 +0200
commit7a657b186c34f131618b70d1d4ec013ac58d8fbe (patch)
tree7a4ff3fa832dd4b75291180757b7c654b431906b
parent24e7bbc55686b703c561af7cddaaca2f19744194 (diff)
sync-any-packages: use bsdtar to create repoHEADmaster
* it is a lot faster
-rwxr-xr-xsync-any-packages41
1 files changed, 19 insertions, 22 deletions
diff --git a/sync-any-packages b/sync-any-packages
index 8ca9ef7..7c8fb1a 100755
--- a/sync-any-packages
+++ b/sync-any-packages
@@ -68,27 +68,24 @@ for repo in core extra; do
| parallel -N 2 -j 20 "$0"
done
-ls "${dir}/pool-any" \
-| grep -vxFf <(
- for repo in core extra; do
- bsdtar -Oxf "/var/lib/pacman/sync/${repo}.db"
- done \
- | sed -n '
- /^%FILENAME%/ {
- N
- s/^.*\n//
- p
- s/$/.sig/
- p
- }
- '
-) \
-| while read -r pkg; do
- rm -vf "${dir}/pool-any/${pkg}" "${dir}/pool-any/${pkg}.sig"
+tmp_dir=$(mktemp -d)
+trap 'cd / && rm -rf --one-file-system "${tmp_dir:?}"' EXIT
+
+for repo in core extra; do
+ bsdtar -C "${tmp_dir}" -xf "/var/lib/pacman/sync/${repo}.db"
+done
+
+for desc_file in "${tmp_dir}/"*"/desc"; do
+ sed '
+ /^%ARCH%$/ !d
+ N
+ s/^.*\n//
+ ' "${desc_file}" \
+ | grep -qxF any \
+ && continue
+ rm "${desc_file}"
+ rmdir "${desc_file%/*}"
done
-cd "${dir}/pool-any"
-repo-add build-support-any.db.tar.gz $(
- ls "${dir}/pool-any" \
- | grep -v '\.sig$'
-)
+cd "${tmp_dir}"
+bsdtar -czf "${dir}/pool-any/build-support-any.db.tar.gz" --strip-components=1 .