From 447eaf93d4d6fbb76c0dc5703929969e4a7fef59 Mon Sep 17 00:00:00 2001 From: Kienan Stewart Date: Mon, 7 Aug 2023 16:21:22 -0400 Subject: [PATCH] jjb: Derive lttng-modules architecture from platform label This change updates the URL for fetching built kernels to key them by build platform. This is done so that it's possible to differentiate a kernel built on on deb12-amd64 (which will use gcc-12 by default) and those built on bionic-amd64 which use gcc-7 by default. An effect of this change is that all the kernels will need to be rebuilt once the jobs are updated. It may be worth flushing the object store of the linux kernels as this change is made so files in the old paths are not kept endlessly without reason. Change-Id: I96e0e6140827c660012e1264d96a324d8cca8801 --- jobs/lttng-modules.yaml | 71 +++++++++++++++++++++++++--- scripts/lttng-modules/param-build.sh | 17 +++++-- 2 files changed, 78 insertions(+), 10 deletions(-) diff --git a/jobs/lttng-modules.yaml b/jobs/lttng-modules.yaml index f741ddf..4b5482b 100644 --- a/jobs/lttng-modules.yaml +++ b/jobs/lttng-modules.yaml @@ -444,8 +444,8 @@ axes: - axis: type: slave - name: arch - values: '{obj:arch}' + name: platforms + values: '{obj:platforms}' properties: - build-discarder: @@ -496,8 +496,8 @@ axes: - axis: type: slave - name: arch - values: '{obj:arch}' + name: platforms + values: '{obj:platforms}' properties: - build-discarder: @@ -535,6 +535,62 @@ - workspace-cleanup +- job-template: + name: dev_mjeanson_lttng-modules_PARAM_crossbuild + defaults: lttng-modules + description: | + This is a parametrized job used by 'master' jobs to build any combinations + of lttng-modules and linux kernel versions. + +

Job is managed by Jenkins Job Builder.

+ + project-type: matrix + node: 'master' # Applies only to matrix flyweight task + axes: + - axis: + type: user-defined + name: cross_arch + values: '{obj:cross_arch}' + - axis: + type: slave + name: platforms + values: '{obj:platforms}' + + properties: + - build-discarder: + days-to-keep: 2 + + parameters: + - string: + name: 'mversion' + default: 'master' + description: 'The lttng-modules branch to build.' + - string: + name: 'mgitrepo' + default: 'git://git-mirror.internal.efficios.com/lttng/lttng-modules.git' + description: 'The lttng-modules git repository url.' + - string: + name: 'ktag' + default: '' + description: 'The linux kernel git tag to build against.' + - string: + name: 'kgitrepo' + default: 'git://git-mirror.internal.efficios.com/git/linux-all.git' + description: 'The linux kernel git repository url.' + + concurrent: true + + scm: [] + + triggers: [] + + builders: + - shell: + !include-raw-escape: scripts/lttng-modules/param-build.sh + + publishers: + - workspace-cleanup + - job-template: name: lttng-modules_PARAM_crossbuild defaults: lttng-modules @@ -750,7 +806,7 @@ # Parametrized kernel and modules build jobs - 'lttng-modules_PARAM_build': - arch: !!python/tuple [amd64] + platforms: !!python/tuple [amd64] - 'lttng-modules_PARAM_crossbuild': cross_arch: !!python/tuple [armhf, arm64, powerpc, ppc64el] @@ -785,7 +841,10 @@ email_to: '' jobs: - 'dev_mjeanson_lttng-modules_PARAM_build': - arch: !!python/tuple [amd64] + platforms: !!python/tuple [deb12-amd64] + - 'dev_mjeanson_lttng-modules_PARAM_crossbuild': + platforms: !!python/tuple [deb12-amd64] + cross_arch: !!python/tuple [armhf, arm64, powerpc, ppc64el] - 'dev_mjeanson_lttng-modules_{mversion}_{buildtype}-vanilla': mversion: - master diff --git a/scripts/lttng-modules/param-build.sh b/scripts/lttng-modules/param-build.sh index 68320e2..ab604a9 100644 --- a/scripts/lttng-modules/param-build.sh +++ b/scripts/lttng-modules/param-build.sh @@ -18,14 +18,23 @@ set -exu # Parameters -arch=${arch:-amd64} +platforms=${platforms:-} +# Derive arch from label if it isn't set +if [ -z "${arch:-}" ] ; then + # Labels may be platform specific, eg. jammy-amd64, deb12-armhf + regex='[[:alnum:]]+-([[:alnum:]]+)' + if [[ "${platforms}" =~ ${regex} ]] ; then + arch="${BASH_REMATCH[1]}" + else + arch="${platforms:-}" + fi +fi cross_arch=${cross_arch:-} ktag=${ktag:-} kgitrepo=${kgitrepo:-} mversion=${mversion:-} mgitrepo=${mgitrepo:-} - ## FUNCTIONS ## # Kernel version compare functions @@ -648,9 +657,9 @@ url_hash="$(echo -n "$kgitrepo" | md5sum | awk '{ print $1 }')" obj_name="linux.tar.bz2" if [ "x${cross_arch}" = "x" ]; then - obj_url_prefix="$OBJ_STORE_URL/linux-build/$url_hash/$ktag/$arch/native" + obj_url_prefix="$OBJ_STORE_URL/linux-build/$url_hash/$ktag/platform-${platform}/$arch/native" else - obj_url_prefix="$OBJ_STORE_URL/linux-build/$url_hash/$ktag/${cross_arch}" + obj_url_prefix="$OBJ_STORE_URL/linux-build/$url_hash/$ktag/platform-${platform}/${cross_arch}" fi obj_url="$obj_url_prefix/$obj_name" -- 2.34.1