This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository buildscripts. commit 94032bb6526ea77aa19388e7860c16d06ce29c3d Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Dec 14 23:00:58 2022 +0100 bin/{build-{deb,osx,rpm}-package,build-nsis-package.sh,sbuild-deb-package}: switch to git date instead of script starting date and add build number to version, coming in from the environment (most likely Jenkins). This should fix the "cross-day" build issues we've been seeing for quite some time, in which builders started a calendrical day later published packages with a higher version number than others, which lead to dependency failures due to diverging arch-indep and arch sub-packages. --- bin/build-deb-package | 9 +++++++-- bin/build-nsis-package.sh | 5 +++++ bin/build-osx-package | 12 ++++++++---- bin/build-rpm-package | 9 +++++++-- bin/sbuild-deb-package | 9 +++++++-- 5 files changed, 34 insertions(+), 10 deletions(-) diff --git a/bin/build-deb-package b/bin/build-deb-package index 665b82e..7bc9be6 100755 --- a/bin/build-deb-package +++ b/bin/build-deb-package @@ -104,6 +104,10 @@ set_vars() { # the DATE might be given as ,,today'' from the command line [ "x${DATE}" = "xtoday" ] && DATE="$(date -u '+%Y%m%d')" + # This should typically be part of Jenkins's environment, but if we're + # building packages manually, provide a sane default.' + BUILD_NUMBER="${BUILD_NUMBER:-'0'}" + # setting paths PROJECT_DIR="${HOME}/build/${COMPONENT}/${PROJECT}" PKGDIST="${HOME}/pkg-dist/${COMPONENT}/${PROJECT}" @@ -253,6 +257,7 @@ build_packages() { git checkout "${CHECKOUT}" || git checkout master find "${PROJECT_DIR}/../" -maxdepth 0 -mindepth 0 -type f | grep -qs "${PROJECT}_"*.orig.tar.gz && cp -- "${PROJECT_DIR}/../${PROJECT}_"*.orig.tar.gz .. GITREV="$(gitrevno)" + typeset gitdate="$(gitdate)" # we always build native packages for our repos SA_OPTION="" @@ -307,9 +312,9 @@ build_packages() { # modify changelog for this build if [ "${COMPONENT}" != "${COMPONENT_NIGHTLY}" ]; then - dch --distribution "${codename}" --force-distribution -l "+git${DATE}.${GITREV}+${numerical_version}.${COMPONENT}." "Auto-built ${pretty_dist} ${l_CODENAME} (${numerical_version}) package for ${REPOS_SERVER} repository (Git commit: ${GIT_OBJECT_ID})." + dch --distribution "${codename}" --force-distribution -l "+git${gitdate}.${GITREV}.${BUILD_NUMBER}+${numerical_version}.${COMPONENT}." "Auto-built ${pretty_dist} ${l_CODENAME} (${numerical_version}) package for ${REPOS_SERVER} repository (Git commit: ${GIT_OBJECT_ID})." else - dch --distribution "${codename}" --force-distribution -l "~git${DATE}.${GITREV}+${numerical_version}.${COMPONENT}." "Development-Snapshot!!! Auto-built ${pretty_dist} ${l_CODENAME} (${numerical_version}) package for ${REPOS_SERVER} repository (Git commit: ${GIT_OBJECT_ID})." + dch --distribution "${codename}" --force-distribution -l "~git${gitdate}.${GITREV}.${BUILD_NUMBER}+${numerical_version}.${COMPONENT}." "Development-Snapshot!!! Auto-built ${pretty_dist} ${l_CODENAME} (${numerical_version}) package for ${REPOS_SERVER} repository (Git commit: ${GIT_OBJECT_ID})." fi mkdir -p -- "${PKGDIST}/${l_DIST}/${l_CODENAME}/"{amd64,i386} OTHERMIRROR="" diff --git a/bin/build-nsis-package.sh b/bin/build-nsis-package.sh index 95a3310..4193d9b 100755 --- a/bin/build-nsis-package.sh +++ b/bin/build-nsis-package.sh @@ -95,6 +95,10 @@ set_vars() { # the DATE might be given as ,,today'' from the command line [ "x${DATE}" = "xtoday" ] && DATE="$(date -u '+%Y%m%d')" + # This should typically be part of Jenkins's environment, but if we're + # building packages manually, provide a sane default.' + BUILD_NUMBER="${BUILD_NUMBER:-'0'}" + # setting paths : ${PROJECT_DIR:="/cygdrive/d/Build/GIT/nightly/${l_DIST}/${l_CODENAME}/x2goclient"} PKGDIST="/cygdrive/d/Build/pkg-dist/nightly/${l_DIST}/${l_CODENAME}/x2goclient" @@ -212,6 +216,7 @@ build_packages() { git checkout "${CHECKOUT}" || git checkout master find "${PROJECT_DIR}/../" -type f -maxdepth 0 -mindepth 0 | grep -qs "${PROJECT}_"*.orig.tar.gz && cp "${PROJECT_DIR}/../${PROJECT}_"*.orig.tar.gz .. GITREV="$(gitrevno)" + typeset gitdate="$(gitdate)" # TODO: Improve generate-nsis-version.pl so that it can be run from another dir cd "/cygdrive/d/Build/buildscripts/bin/" diff --git a/bin/build-osx-package b/bin/build-osx-package index e309517..75ee650 100755 --- a/bin/build-osx-package +++ b/bin/build-osx-package @@ -106,6 +106,10 @@ set_vars() { # the DATE might be given as ,,today'' from the command line [ "x${DATE}" = "xtoday" ] && DATE="$(date -u '+%Y%m%d')" + # This should typically be part of Jenkins's environment, but if we're + # building packages manually, provide a sane default.' + BUILD_NUMBER="${BUILD_NUMBER:-'0'}" + # setting paths PROJECT_DIR="${HOME}/build/${COMPONENT}/${PROJECT}" PKGDIST="${HOME}/pkg-dist/${COMPONENT}/${PROJECT}" @@ -269,9 +273,9 @@ build_packages() { typeset top_commit_id="$(git rev-parse --no-flags "HEAD^{commit}")" typeset base_name="${PROJECT}-${upstream_version}." if [ "${is_release}" -eq "0" ]; then - base_name="${base_name}git${DATE}.${gitrev}.${COMPONENT}." + base_name="${base_name}git${gitdate}.${gitrev}.${BUILD_NUMBER}.${COMPONENT}." else - base_name="${base_name}${DATE}." + base_name="${base_name}${gitdate}.${BUILD_NUMBER}." fi base_name="${base_name}OSX_${os_major}_${os_minor}.dmg" mv "client_build/${PROJECT}.dmg" "${PKGDIST}/${l_CODENAME}/${base_name}" @@ -314,10 +318,10 @@ upload_packages() { # Delete files so that checksums are always regenerated. if [ "${is_release}" -eq "0" ]; then # Nightly builds are tracked by date and gitrev, so that multiple packages are possible per day if the repository changes between builds. - 0</dev/null ssh -- "${REPOS_SERVER}" "rm -rf -- '${OSX_REPOS_BASE}/${PROJECT}/${COMPONENT}/${upstream_version}/'*${DATE}.${gitrev}*OSX_${os_major}_${os_minor}*" + 0</dev/null ssh -- "${REPOS_SERVER}" "rm -rf -- '${OSX_REPOS_BASE}/${PROJECT}/${COMPONENT}/${upstream_version}/'*${gitdate}.${gitrev}.${BUILD_NUMBER}*OSX_${os_major}_${os_minor}*" else # Releases are tracked by date, so that only one specific build per day is available. - 0</dev/null ssh -- "${REPOS_SERVER}" "rm -rf -- '${OSX_REPOS_BASE}/${PROJECT}/${COMPONENT}/${upstream_version}/'*${DATE}*OSX_${os_major}_${os_minor}*" + 0</dev/null ssh -- "${REPOS_SERVER}" "rm -rf -- '${OSX_REPOS_BASE}/${PROJECT}/${COMPONENT}/${upstream_version}/'*${gitdate}.${BUILD_NUMBER}*OSX_${os_major}_${os_minor}*" fi # Remove packages that are older than 30 days, if building nightlies. diff --git a/bin/build-rpm-package b/bin/build-rpm-package index 31b1f83..b612357 100755 --- a/bin/build-rpm-package +++ b/bin/build-rpm-package @@ -159,6 +159,10 @@ set_vars() { # the DATE might be given as ,,today'' from the command line [ "x${DATE}" = "xtoday" ] && DATE="$(date -u '+%Y%m%d')" + # This should typically be part of Jenkins's environment, but if we're + # building packages manually, provide a sane default.' + BUILD_NUMBER="${BUILD_NUMBER:-'0'}" + # setting paths PROJECT_DIR="${HOME}/build/${COMPONENT}/${PROJECT}" PKGDIST="${HOME}/pkg-dist/${COMPONENT}/${PROJECT}" @@ -905,6 +909,7 @@ build_packages() { git clone --no-hardlinks --no-local "${PROJECT_DIR}" "${TEMP_DIR}/${PROJECT}/" cd "${TEMP_DIR}" GITREV="$(cd "${PROJECT}" && gitrevno && cd - 1>/dev/null)" + typeset gitdate="$(gitdate)" # create git changelog immediately prior to building the SRPM package pushd "${PROJECT}" >/dev/null 2>&1 && \ @@ -925,7 +930,7 @@ build_packages() { else IS_RELEASE="1" fi - sed -i "${PROJECT}.spec" -e "s/%{?dist}/.${IS_RELEASE}.git${DATE}.${GITREV}.${COMPONENT}%{?dist}/" + sed -i "${PROJECT}.spec" -e "s/%{?dist}/.${IS_RELEASE}.git${gitdate}.${GITREV}.${BUILD_NUMBER}.${COMPONENT}%{?dist}/" # apply patches from debian/patches/* so that they end up in the tarball # ... esp. relevant for NX (redistributed) @@ -1208,7 +1213,7 @@ build_packages() { # For information on why this weird -print0 | read -r -d '' construction works, # refer to the first instance of this in this script. - find "${PKGDIST}/${l_DIST}/${l_CODENAME}/SRPM/" -type 'f' -iname "${RPMSRCPKG}-${UPSTREAM_VERSION}-${PKG_SRCRELEASE}.${IS_RELEASE}.git${DATE}.${GITREV}.${COMPONENT}.*.src.rpm" -print0 | while read -r -d '' srpm; do + find "${PKGDIST}/${l_DIST}/${l_CODENAME}/SRPM/" -type 'f' -iname "${RPMSRCPKG}-${UPSTREAM_VERSION}-${PKG_SRCRELEASE}.${IS_RELEASE}.git${gitdate}.${GITREV}.${BUILD_NUMBER}.${COMPONENT}.*.src.rpm" -print0 | while read -r -d '' srpm; do if /usr/bin/mock ${MOCK_CHROOT_CONFIG} --resultdir="${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_ARCH}" "${srpm}"; then # Clean up source RPM files. We build them separately. find "${PKGDIST}/${l_DIST}/${l_CODENAME}/${l_ARCH}" -type 'f' -iname '*.src.rpm' -exec rm -f -- '{}' \; diff --git a/bin/sbuild-deb-package b/bin/sbuild-deb-package index 31ed634..5b2b59e 100755 --- a/bin/sbuild-deb-package +++ b/bin/sbuild-deb-package @@ -107,6 +107,10 @@ set_vars() { # the DATE might be given as ,,today'' from the command line [ "x${DATE}" = "xtoday" ] && DATE="$(date -u '+%Y%m%d')" + # This should typically be part of Jenkins's environment, but if we're + # building packages manually, provide a sane default.' + BUILD_NUMBER="${BUILD_NUMBER:-'0'}" + # setting paths PROJECT_DIR="${HOME}/build/${COMPONENT}/${PROJECT}" PKGDIST="${HOME}/pkg-dist/${COMPONENT}/${PROJECT}" @@ -335,6 +339,7 @@ build_packages() { git checkout "${CHECKOUT}" || git checkout 'master' find "${PROJECT_DIR}/../" -maxdepth 0 -mindepth 0 -type f | grep -qs "${PROJECT}_"*.orig.tar.gz && cp -- "${PROJECT_DIR}/../${PROJECT}_"*.orig.tar.gz .. GITREV="$(gitrevno)" + typeset gitdate="$(gitdate)" # we always build native packages for our repos SA_OPTION="" @@ -408,9 +413,9 @@ build_packages() { # modify changelog for this build if [ "${COMPONENT}" != "${COMPONENT_NIGHTLY}" ]; then - dch --distribution "${codename}" --force-distribution -l "+git${DATE}.${GITREV}+${numerical_version}.${COMPONENT}." "Auto-built ${pretty_dist} ${l_CODENAME} (${numerical_version}) package for ${REPOS_SERVER} repository (Git commit: ${GIT_OBJECT_ID})." + dch --distribution "${codename}" --force-distribution -l "+git${gitdate}.${GITREV}.${BUILD_NUMBER}+${numerical_version}.${COMPONENT}." "Auto-built ${pretty_dist} ${l_CODENAME} (${numerical_version}) package for ${REPOS_SERVER} repository (Git commit: ${GIT_OBJECT_ID})." else - dch --distribution "${codename}" --force-distribution -l "~git${DATE}.${GITREV}+${numerical_version}.${COMPONENT}." "Development-Snapshot!!! Auto-built ${pretty_dist} ${l_CODENAME} (${numerical_version}) package for ${REPOS_SERVER} repository (Git commit: ${GIT_OBJECT_ID})." + dch --distribution "${codename}" --force-distribution -l "~git${gitdate}.${GITREV}.${BUILD_NUMBER}+${numerical_version}.${COMPONENT}." "Development-Snapshot!!! Auto-built ${pretty_dist} ${l_CODENAME} (${numerical_version}) package for ${REPOS_SERVER} repository (Git commit: ${GIT_OBJECT_ID})." fi typeset -i skip_arch_all="0" -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/buildscripts.git