This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository buildscripts. commit 076765937252bf9285d8f72a3dfbd934466213fa Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Sep 5 01:04:43 2019 +0200 bin/build-rpm-package: when uploading packages also clean out architectures that are supposed to be skipped. We need this if dropping an architecture after it was previously built. --- bin/build-rpm-package | 73 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 46 insertions(+), 27 deletions(-) diff --git a/bin/build-rpm-package b/bin/build-rpm-package index 8d264be..01267d1 100755 --- a/bin/build-rpm-package +++ b/bin/build-rpm-package @@ -1272,44 +1272,63 @@ upload_packages() { esac for l_ARCH in "${arches[@]}"; do - if [ "x${SKIP_ARCH}" != "x${l_ARCH}" ]; then - if [ "${l_DIST}" = "opensuse" ] || [ "${l_DIST}" = "sle" ]; then - # Rename the i386 arch to i586 for OpenSuSE and SLE{S,D}. - [[ "${l_ARCH}" = "i386" ]] && l_ARCH="i586" - - # create remote directories in archive - 0</dev/null ssh -- "${REPOS_SERVER}" "mkdir -p -- '${RPM_REPOS_BASE}/${l_DIST}/${l_CODENAME}/${COMPONENT}/${l_ARCH}/${PROJECT}'" + if [ "${l_DIST}" = "opensuse" ] || [ "${l_DIST}" = "sle" ]; then + # Rename the i386 arch to i586 for OpenSuSE and SLE{S,D}. + typeset real_arch="${l_ARCH}" + [[ "${real_arch}" = "i386" ]] && real_arch="i586" - # remove rpm packages of the same name (pattern) - 0</dev/null ssh -- "${REPOS_SERVER}" "rm -f -- '${RPM_REPOS_BASE}/${l_DIST}/${l_CODENAME}/${COMPONENT}/${l_ARCH}/${PROJECT}/'*.rpm" + if [ "x${SKIP_ARCH}" != "x${l_ARCH}" ]; then + # Create remote directories in archive. + 0</dev/null ssh -- "${REPOS_SERVER}" "mkdir -p -- '${RPM_REPOS_BASE}/${l_DIST}/${l_CODENAME}/${COMPONENT}/${real_arch}/${PROJECT}'" + fi - # copy (s)rpms into repo - cd "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_ARCH}" - scp *.rpm "${REPOS_SERVER}:'${RPM_REPOS_BASE}/${l_DIST}/${l_CODENAME}/${COMPONENT}/${l_ARCH}/${PROJECT}/'" || true + # Remove rpm packages of the same name (pattern). + # Also remove old packages if we decide to suddenly drop an architecture. + 0</dev/null ssh -- "${REPOS_SERVER}" "rm -f -- '${RPM_REPOS_BASE}/${l_DIST}/${l_CODENAME}/${COMPONENT}/${real_arch}/${PROJECT}/'*.rpm" - else - # create remote directories in archive + if [ "x${SKIP_ARCH}" != "x${l_ARCH}" ]; then + # Copy (s)rpms into repo. + cd "${PKGDIST}/${l_DIST}/${l_CODENAME}/${real_arch}" + scp *.rpm "${REPOS_SERVER}:'${RPM_REPOS_BASE}/${l_DIST}/${l_CODENAME}/${COMPONENT}/${real_arch}/${PROJECT}/'" || true + fi + else + if [ "x${SKIP_ARCH}" != "x${l_ARCH}" ]; then + # Create remote directories in archive. 0</dev/null ssh -- "${REPOS_SERVER}" "mkdir -p -- '${RPM_REPOS_BASE}/${l_DIST}/${l_CODENAME}/${COMPONENT}/${l_ARCH}/rpms/${PROJECT}'" 0</dev/null ssh -- "${REPOS_SERVER}" "mkdir -p -- '${RPM_REPOS_BASE}/${l_DIST}/${l_CODENAME}/${COMPONENT}/${l_ARCH}/repodata'" + fi - # remove rpm packages of the same name (pattern) - 0</dev/null ssh -- "${REPOS_SERVER}" "rm -f -- '${RPM_REPOS_BASE}/${l_DIST}/${l_CODENAME}/${COMPONENT}/${l_ARCH}/rpms/${PROJECT}/'*.rpm" + # Remove rpm packages of the same name (pattern). + # Also remove old packages if we decide to suddenly drop an architecture. + 0</dev/null ssh -- "${REPOS_SERVER}" "rm -f -- '${RPM_REPOS_BASE}/${l_DIST}/${l_CODENAME}/${COMPONENT}/${l_ARCH}/rpms/${PROJECT}/'*.rpm" - # copy (s)rpms into repo + # Copy (s)rpms into repo. + if [ "x${SKIP_ARCH}" != "x${l_ARCH}" ]; then cd "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_ARCH}" scp *.rpm "${REPOS_SERVER}:'${RPM_REPOS_BASE}/${l_DIST}/${l_CODENAME}/${COMPONENT}/${l_ARCH}/rpms/${PROJECT}/'" || true + fi - typeset createrepo_opts="" - typeset gpg_sign_with="${GPG_KEY}" - if [ "${l_DIST}" = "epel" ] && [ "${l_CODENAME}" = "5" ]; then - createrepo_opts="-s sha" - gpg_sign_with="${GPG_KEY_EPEL5}" - fi - 0</dev/null ssh -- "${REPOS_SERVER}" "cd '${RPM_REPOS_BASE}/${l_DIST}/${l_CODENAME}/${COMPONENT}/${l_ARCH}/' && createrepo ${createrepo_opts} '.'" - - 0</dev/null ssh -- "${REPOS_SERVER}" "cd '${RPM_REPOS_BASE}/${l_DIST}/${l_CODENAME}/${COMPONENT}/${l_ARCH}/repodata' && rm -f -- 'repomd.xml.asc' && gpg -a -u '${gpg_sign_with}' --detach-sign 'repomd.xml'" 1>/dev/null 2>/dev/null - 0</dev/null ssh -- "${REPOS_SERVER}" "cd '${RPM_REPOS_BASE}/${l_DIST}/${l_CODENAME}/${COMPONENT}/${l_ARCH}/repodata' && test -e 'repomd.xml.key' || gpg -a --output 'repomd.xml.key' --export '${gpg_sign_with}'" + typeset createrepo_opts="" + typeset gpg_sign_with="${GPG_KEY}" + if [ "${l_DIST}" = "epel" ] && [ "${l_CODENAME}" = "5" ]; then + createrepo_opts="-s sha" + gpg_sign_with="${GPG_KEY_EPEL5}" fi + # Make sure that these operations don't fail if the architecture directory doesn't exist. + # Rationale: we don't want to skip architectures completely, but rather clean up old + # packages if they exist. + # To this effect, we only try to create the architecture directory (and copy generated + # binary packages into the arch's "rpm" sub-directory) iff skipping the architecture was + # not requested, but always delete old packages (with failures to do so being + # non-critical.) + # After package deletion, we have to make sure to update the repository metadata. + # Observant readers might have noticed that doing so unconditionally would be fine if the + # architecture existed before, but would fail badly if the architecture never existed + # in the first place. + 0</dev/null ssh -- "${REPOS_SERVER}" "if cd '${RPM_REPOS_BASE}/${l_DIST}/${l_CODENAME}/${COMPONENT}/${l_ARCH}/'; then createrepo ${createrepo_opts} '.' ; else : ; fi" + + 0</dev/null ssh -- "${REPOS_SERVER}" "if cd '${RPM_REPOS_BASE}/${l_DIST}/${l_CODENAME}/${COMPONENT}/${l_ARCH}/repodata'; then rm -f -- 'repomd.xml.asc' && gpg -a -u '${gpg_sign_with}' --detach-sign 'repomd.xml' ; else : ; fi" 1>/dev/null 2>/dev/null + 0</dev/null ssh -- "${REPOS_SERVER}" "if cd '${RPM_REPOS_BASE}/${l_DIST}/${l_CODENAME}/${COMPONENT}/${l_ARCH}/repodata'; then test -e 'repomd.xml.key' || gpg -a --output 'repomd.xml.key' --export '${gpg_sign_with}' ; else : ; fi" fi done -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/buildscripts.git