From: David Galloway Date: Fri, 13 May 2022 17:28:55 +0000 (-0400) Subject: pbuilder: build in $WORKSPACE or tmpfs if available X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2d4fe238d117207eae0326bb025ce379e80eb43a;p=ceph-build.git 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 --- 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