diff --git a/Jenkinsfile b/Jenkinsfile index 2c19beedb37..812f79ce68b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -553,7 +553,7 @@ pipeline { } } } - stage('Build RPM on Leap 15.5') { + stage('Build RPM on Leap 15.6') { when { beforeAgent true expression { !skipStage() } @@ -566,8 +566,7 @@ pipeline { ' --cap-add=SYS_ADMIN' + ' --privileged=true' + ' -v /scratch:/scratch' - additionalBuildArgs dockerBuildArgs() + - '--build-arg FVERSION=37' + additionalBuildArgs dockerBuildArgs() } } steps { @@ -707,10 +706,10 @@ pipeline { } } } - stage('Build on Leap 15.5') { + stage('Build on Leap 15.6') { when { beforeAgent true - expression { !params.CI_leap15_NOBUILD && !skipStage() } + expression { !params.CI_leap15_NOBUILD && !skipStage() } } agent { dockerfile { @@ -719,15 +718,19 @@ pipeline { additionalBuildArgs dockerBuildArgs(repo_type: 'stable', parallel_build: true, deps_build: true) + - " -t ${sanitized_JOB_NAME()}-leap15-gcc" + " -t ${sanitized_JOB_NAME()}-leap15-gcc" + + ' --build-arg POINT_RELEASE=.6 ' + + ' --build-arg REPOS="' + prRepos() + '"' } } steps { job_step_update( sconsBuild(parallel_build: true, + stash_files: 'ci/test_files_to_stash.txt', + build_deps: 'no', + stash_opt: true, scons_args: sconsFaultsArgs() + - ' PREFIX=/opt/daos TARGET_TYPE=release', - build_deps: 'yes')) + ' PREFIX=/opt/daos TARGET_TYPE=release')) } post { unsuccessful { diff --git a/ci/parse_ci_envs.sh b/ci/parse_ci_envs.sh index 84cb0183f91..332b578239b 100755 --- a/ci/parse_ci_envs.sh +++ b/ci/parse_ci_envs.sh @@ -23,7 +23,7 @@ if [ -n "${STAGE_NAME:?}" ]; then : "${REPO_SPEC:=el-9}" ;; *Leap\ 15.6*|*leap15.6*|*opensuse15.6*|*sles15.6*) - : "${CHROOT_NAME:=opensuse-leap-15.5-x86_64}" + : "${CHROOT_NAME:=opensuse-leap-15.6-x86_64}" : "${TARGET:=leap15.6}" ;; *Leap\ 15.5*|*leap15.5*|*opensuse15.5*|*sles15.5*) @@ -39,7 +39,7 @@ if [ -n "${STAGE_NAME:?}" ]; then : "${TARGET:=leap15.3}" ;; *Leap\ 15*|*leap15*|*opensuse15*|*sles15*) - : "${CHROOT_NAME:=opensuse-leap-15.5-x86_64}" + : "${CHROOT_NAME:=opensuse-leap-15.6-x86_64}" : "${TARGET:=leap15}" : "${REPO_SPEC:=sl-15}" ;; diff --git a/ci/provisioning/post_provision_config_nodes_LEAP.sh b/ci/provisioning/post_provision_config_nodes_LEAP.sh index 5a2a553e56f..14c972d63de 100644 --- a/ci/provisioning/post_provision_config_nodes_LEAP.sh +++ b/ci/provisioning/post_provision_config_nodes_LEAP.sh @@ -1,14 +1,14 @@ #!/bin/bash # # Copyright 2021-2024 Intel Corporation. -# Copyright 2025 Hewlett Packard Enterprise Development LP +# Copyright 2025-2026 Hewlett Packard Enterprise Development LP # # SPDX-License-Identifier: BSD-2-Clause-Patent bootstrap_dnf() { rm -rf "$REPOS_DIR" ln -s ../zypp/repos.d "$REPOS_DIR" - dnf -y remove lua54 lua-lmod + dnf -y remove lua-lmod dnf -y --nogpgcheck install lua-lmod --repo '*lua*' --repo '*network-cluster*' --repo '*oss-proxy*' } diff --git a/utils/docker/Dockerfile.leap.15 b/utils/docker/Dockerfile.leap.15 index 7a982f0a237..64449aa3efd 100644 --- a/utils/docker/Dockerfile.leap.15 +++ b/utils/docker/Dockerfile.leap.15 @@ -45,6 +45,20 @@ RUN if [ -n "$REPO_FILE_URL" ]; then direct="${REPO_FILE_URL##*//}; "\ dnf clean all && \ rm -f /tmp/install.sh +# According to https://pkgs.org/search/?q=lua-lmod, Leap 15.6 only has lua-lmod-8.7.34. +# This version has a problem with loading modules, as described in https://github.com/TACC/Lmod/issues/687. +# This affects MPI detection in scons, so DAOS cannot be built with MPI support. +# A custom source of the package is required in CI to install a valid version +# of lua-lmod and its dependencies: +# opensuse-network-cluster for lua-lmod (>=8.7.55) +# opensuse-oss for lua53, lua53-luaterm,, sqlite3-tcl, tcl +# opensuse-devel-languages-lua for lua53-luafilesystem, lua53-luaposix +ARG JENKINS_URL +RUN if [ -n "$JENKINS_URL" ]; then \ + dnf -y remove lua-lmod; \ + dnf -y --nogpgcheck install lua-lmod --repo '*lua*' --repo '*network-cluster*' --repo '*oss-proxy*'; \ + fi + # Add DAOS users ARG UID=1000 COPY ./utils/scripts/helpers/daos-server-user-setup.sh \ diff --git a/utils/rpms/packaging/rpm_chrootbuild b/utils/rpms/packaging/rpm_chrootbuild index 250eee810ba..8b86a6d699a 100755 --- a/utils/rpms/packaging/rpm_chrootbuild +++ b/utils/rpms/packaging/rpm_chrootbuild @@ -53,6 +53,14 @@ EOF repo_adds=() repo_dels=() +# Only for Leap 15.6 chroot +# see ../../docker/Dockerfile.leap.15 for more details +if [[ "${CHROOT_NAME}" == *opensuse-leap-15.6* ]]; then + repo_adds+=("--enablerepo=*opensuse-devel-languages-lua-*") + repo_adds+=("--enablerepo=*opensuse-network-cluster-*") + repo_adds+=("--enablerepo=*opensuse-oss-*") +fi + echo -e "config_opts['yum.conf'] += \"\"\"\n" >> mock.cfg if [ -n "${ARTIFACTORY_URL:-}" ] && "$LOCAL_REPOS"; then @@ -121,6 +129,23 @@ enabled=1\n" >> mock.cfg done echo "\"\"\"" >> mock.cfg +# Only for Leap 15.6 chroot +# see ../../docker/Dockerfile.leap.15 for more details +if [[ "${CHROOT_NAME}" == *opensuse-leap-15.6* ]]; then + # Ensure lua-lmod is installed in the chroot + cat >> mock.cfg <<'EOF' + +_pkgs = config_opts.get('chroot_additional_packages') +if _pkgs is None: + config_opts['chroot_additional_packages'] = ['lua-lmod'] +elif isinstance(_pkgs, str): + config_opts['chroot_additional_packages'] = f"{_pkgs} lua-lmod".strip() +else: + config_opts['chroot_additional_packages'] = list(_pkgs) + ['lua-lmod'] +EOF + +fi + if [ -n "$DISTRO_VERSION" ]; then releasever_opt=("--config-opts=releasever=$DISTRO_VERSION") fi