summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2017-08-31 16:08:11 +0200
committerErich Eckner <git@eckner.net>2017-08-31 16:08:11 +0200
commit906480fae444bfc44070836963ca613e438f5abe (patch)
treec74f1903f1a2decd61782f62797fc801c4907123
parent71e420d29b063dec02fd1c8a85fd5237ba3cefb2 (diff)
downloadbuilder-906480fae444bfc44070836963ca613e438f5abe.tar.xz
bin/common-functions: remove_old_package_versions: remove older packages in not-newer repositories and not-older packages in newer repositories
-rwxr-xr-xbin/common-functions60
-rwxr-xr-xconf/default.conf16
2 files changed, 55 insertions, 21 deletions
diff --git a/bin/common-functions b/bin/common-functions
index b1fb9f0..fda2288 100755
--- a/bin/common-functions
+++ b/bin/common-functions
@@ -393,8 +393,8 @@ ls_master_mirror() {
}
# remove_old_package_versions $arch $repository $package_file
-# removes all older versions of $package_file for architecture $arch in all
-# repositories not-older than $repository
+# removes all older (not-newer) versions of $package_file for architecture
+# $arch in all repositories not-older (newer) than $repository
remove_old_package_versions() {
@@ -402,32 +402,47 @@ remove_old_package_versions() {
local repository="$2"
local package="$3"
- local delete_repositories
- local repo
+ # repositories in which older packages should be deleted
+ local delete_older_repositories
+ # repositories in which not-newer packages should be deleted
+ local delete_not_newer_repositories
if echo "${standalone_package_repositories}" | \
- tr ' ' '\n' | \
grep -qxF "${repository}"; then
- delete_repositories="${repository}"
+ delete_older_repositories="${repository}"
+ delete_not_newer_repositories=''
elif echo "${staging_package_repositories}" | \
- tr ' ' '\n' | \
grep -qxF "${repository}"; then
- delete_repositories="${staging_package_repositories}"
+ delete_older_repositories="${repository}"
+ delete_not_newer_repositories=$(
+ echo "${staging_package_repositories}" | \
+ grep -vxF "${repository}"
+ ) || true
elif echo "${testing_package_repositories}" | \
- tr ' ' '\n' | \
grep -qxF "${repository}"; then
- delete_repositories="${staging_package_repositories} ${testing_package_repositories}"
+ delete_older_repositories=$(
+ printf '%s\n' "${staging_package_repositories}" "${repository}"
+ )
+ delete_not_newer_repositories=$(
+ echo "${testing_package_repositories}" | \
+ grep -vxF "${repository}"
+ ) || true
elif echo "${stable_package_repositories}" | \
- tr ' ' '\n' | \
grep -qxF "${repository}"; then
- delete_repositories="${staging_package_repositories} ${testing_package_repositories} ${stable_package_repositories}"
+ delete_older_repositories=$(
+ printf '%s\n' "${staging_package_repositories}" "${testing_package_repositories}" "${repository}"
+ )
+ delete_not_newer_repositories=$(
+ echo "${stable_package_repositories}" | \
+ grep -vxF "${repository}"
+ ) || true
else
@@ -441,22 +456,33 @@ remove_old_package_versions() {
trap 'rm -rf --one-file-system "${tmp_dir}"' EXIT
{
- for repo in ${delete_repositories}; do
+ for repo in ${delete_older_repositories}; do
+ echo "do: '${repo}'" >&2
+ ls_master_mirror "${arch}/${repo}" | \
+ sed '
+ /\.pkg\.tar\.xz$/!d
+ s|-\([^-]\+-[^-]\+\)-\([^-]\+\)$| \1 \2|
+ /^'"$(str_to_regex "${package%-*-*-*}")"' /!d
+ s|^|2 '"${arch} ${repo}"' |
+ '
+ done
+ for repo in ${delete_not_newer_repositories}; do
+ echo "dnn: '${repo}'" >&2
ls_master_mirror "${arch}/${repo}" | \
sed '
/\.pkg\.tar\.xz$/!d
s|-\([^-]\+-[^-]\+\)-\([^-]\+\)$| \1 \2|
/^'"$(str_to_regex "${package%-*-*-*}")"' /!d
- s|^|1 '"${arch} ${repo}"' |
+ s|^|0 '"${arch} ${repo}"' |
'
done
echo "${package%-*}" | \
- sed 's|^.*-\([^-]\+-[^-]\+\)$|0 %cut% %it% %here% \1|'
+ sed 's|^.*-\([^-]\+-[^-]\+\)$|1 %cut% %it% %here% \1|'
} | \
sort -k5V,5 -k1n,1 | \
sed -n '
- /^0 %cut% %it% %here% /q
- s/^1 //
+ /^1 %cut% %it% %here% /q
+ s/^[02] //
s/ \(\S\+\)$/-\1/
p
' > \
diff --git a/conf/default.conf b/conf/default.conf
index 731f22c..fcaa39a 100755
--- a/conf/default.conf
+++ b/conf/default.conf
@@ -68,10 +68,18 @@ straws_that_might_repair_failing_builds=$(
webserver_directory='/srv/http'
# known package repositories
-standalone_package_repositories='build-support gnome-unstable kde-unstable'
-stable_package_repositories='community core extra'
-testing_package_repositories='community-testing testing'
-staging_package_repositories='community-staging staging'
+standalone_package_repositories=$(
+ printf '%s\n' 'build-support' 'gnome-unstable' 'kde-unstable'
+)
+stable_package_repositories=$(
+ printf '%s\n' 'community' 'core' 'extra'
+)
+testing_package_repositories=$(
+ printf '%s\n' 'community-testing' 'testing'
+)
+staging_package_repositories=$(
+ printf '%s\n' 'community-staging' 'staging'
+)
# possibly pull in custom modifications