[X2Go-Commits] [buildscripts] 04/04: 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).

git-admin at x2go.org git-admin at x2go.org
Wed Dec 14 23:03:02 CET 2022


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 at 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


More information about the x2go-commits mailing list