diff options
author | Levente Polyak <anthraxx@archlinux.org> | 2022-08-13 16:48:50 +0200 |
---|---|---|
committer | Levente Polyak <anthraxx@archlinux.org> | 2022-08-31 23:55:05 +0200 |
commit | 2e4060445a894cc91a7b4281ee5ae48cb4f210ab (patch) | |
tree | 26c6fc48be62512c49430c1099ffe072064c122b /src | |
parent | 1e23bbc164dedf58a62177fb5da861b6895ce63c (diff) | |
download | devtools-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
Diffstat (limited to 'src')
-rw-r--r-- | src/crossrepomove.in | 9 |
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 |