From 2d4fe238d117207eae0326bb025ce379e80eb43a Mon Sep 17 00:00:00 2001 From: David Galloway Date: Fri, 13 May 2022 13:28:55 -0400 Subject: [PATCH] pbuilder: build in $WORKSPACE or tmpfs if available Come to find out unless --buildplace is defined, pbuilder builds in /var/cache/pbuilder/build. The braggi and adami builders have separate faster and larger SSDs mounted at /home/jenkins-build but pbuilder hasn't been using them. Additionally, it is possible to build in memory. The braggi and adami have plenty of space available to build in it so let's use it. Signed-off-by: David Galloway --- scripts/build_utils.sh | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/scripts/build_utils.sh b/scripts/build_utils.sh index 60d8d558..12c309da 100644 --- a/scripts/build_utils.sh +++ b/scripts/build_utils.sh @@ -618,8 +618,23 @@ setup_pbuilder() { setup_pbuilder_for_ppa $hookdir echo "HOOKDIR=$hookdir" >> ~/.pbuilderrc fi + + # As of this writing, Ceph needs about 100GB of space to build the binaries. + # If the Jenkins builder has 150% that amount in RAM available, let's build + # on a tmpfs + available_mem=$(cat /proc/meminfo | grep MemAvailable | awk '{ print $2 }') + if [ $available_mem -gt 157286400 ]; then + echo "Will be building in a tmpfs" + sudo mkdir -p /var/cache/pbuilder/build + sudo mount -t tmpfs -o size=150G tmpfs /var/cache/pbuilder/build + echo "APTCACHEHARDLINK=no" >> ~/.pbuilderrc + PBUILDER_IN_TMPFS=true + else + echo "$available_mem kB is not enough space to build Ceph in a tmpfs. Will use the Jenkins workspace instead" + PBUILDER_IN_TMPFS=false + fi + sudo cp ~/.pbuilderrc /root/.pbuilderrc - sudo pbuilder clean if [ -e $basedir/$DIST.tgz ]; then echo updating $DIST base.tgz @@ -915,11 +930,17 @@ build_debs() { pbuilddir="/srv/debian-base" cephver=$vers + if $PBUILDER_IN_TMPFS; then + pbuild_build_dir="/var/cache/pbuilder/build" + else + mkdir -p $WORKSPACE/build + pbuild_build_dir="$WORKSPACE/build" + fi + echo version $cephver echo deb vers $bpvers - echo building debs for $DIST CEPH_EXTRA_CMAKE_ARGS="$CEPH_EXTRA_CMAKE_ARGS $(extra_cmake_args)" @@ -935,8 +956,13 @@ build_debs() { --basetgz $pbuilddir/$DIST.tgz \ --buildresult $releasedir/$cephver \ --use-network yes \ + --buildplace $pbuild_build_dir \ $releasedir/$cephver/ceph_$bpvers.dsc + if $PBUILDER_IN_TMPFS; then + sudo umount /var/cache/pbuilder/build + fi + # do lintian checks echo lintian checks for $bpvers echo lintian --allow-root $releasedir/$cephver/*$bpvers*.deb -- 2.39.5