summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLevente Polyak <anthraxx@archlinux.org>2022-08-13 16:48:50 +0200
committerLevente Polyak <anthraxx@archlinux.org>2022-08-31 23:55:05 +0200
commit2e4060445a894cc91a7b4281ee5ae48cb4f210ab (patch)
tree26c6fc48be62512c49430c1099ffe072064c122b
parent1e23bbc164dedf58a62177fb5da861b6895ce63c (diff)
downloaddevtools-2e4060445a894cc91a7b4281ee5ae48cb4f210ab.tar.xz
crossrepomove: fix moving debug packages to the target repo
We did not copy over the optional debug packages to the staging environment before db-updating the moved state. Afterwards the db-remove call removed the debug packages from the source repo. This lead to dropping debug packages when using crossrepomove. This approach ensures we have a uniform shell to avoid shell glob behavior inconsistencies. The copy of the package path is mandatory and will error out if missing while the debug package path is optional as reflected by a subshell that succeeds either way. Fixes #92
-rw-r--r--src/crossrepomove.in9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/crossrepomove.in b/src/crossrepomove.in
index e4caeea..08a3067 100644
--- a/src/crossrepomove.in
+++ b/src/crossrepomove.in
@@ -57,9 +57,14 @@ for _arch in "${arch[@]}"; do
fi
for _pkgname in "${pkgname[@]}"; do
fullver=$(get_full_version "$_pkgname")
- pkgpath="/srv/ftp/$source_repo/os/$repo_arch/$_pkgname-$fullver-${_arch}.pkg.tar.*"
+ pkgpath="/srv/ftp/${source_repo}/os/${repo_arch}/${_pkgname}-${fullver}-${_arch}.pkg.tar.*"
+ debugpath="/srv/ftp/${source_repo}-debug/os/${repo_arch}/${_pkgname}-debug-${fullver}-${_arch}.pkg.tar.*"
+ # Fail if $pkgpath doesn't match but keep $debugpath optional
# shellcheck disable=2029
- ssh "$server" "cp $pkgpath staging/$target_repo" || die
+ ssh "${server}" "bash -c '
+ install ${pkgpath} -Dt staging/${target_repo} &&
+ (install ${debugpath} -Dt staging/${target_repo} 2>/dev/null || true)
+ '" || die
done
done