#! /bin/sh set -xe umask 022 PKG=charliecloud VERSION=0.32 BUILD=1 PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/package/bin PREFIX=/pkg/$PKG-$VERSION-$BUILD if [ -n "$TESTING" ]; then PREFIX=/scratch/local2/$PKG-$VERSION-$BUILD ; fi mkdir -p $PREFIX cat >$PREFIX/profile <<-EOF #source nvidia-container-toolkit PATH=$PREFIX/bin:\$PATH if [ -d $PREFIX/.compatlibs ]; then export LD_LIBRARY_PATH=$PREFIX/.compatlibs\${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH} ; fi EOF source $PREFIX/profile # needed for ~/.cache/go-build ... BUILD_TMPDIR=/scratch/local2/$PKG-$VERSION-$BUILD.$USER.build.tmp test -d $BUILD_TMPDIR && ( chmod -R u+rwx $BUILD_TMPDIR || true ; rm -rf $BUILD_TMPDIR ) mkdir -p $BUILD_TMPDIR/home export TMPDIR=$BUILD_TMPDIR export HOME=$BUILD_TMPDIR/home mkdir -p $PREFIX/build cd $PREFIX/build # start with libnvidia-container and nvidia-container-toolkit ( VERSION=1.13.1 # orig: https://github.com/NVIDIA/libnvidia-container/archive/refs/tags/v1.13.1.tar.gz BEEHIVE=https://beehive.molgen.mpg.de/ed31ad76317bf46ee29205d10adf457d/libnvidia-container-1.13.1.tar.gz test -e libnvidia-container-$VERSION.tar.gz || wget -nv $BEEHIVE test -d libnvidia-container-$VERSION || tar -xf libnvidia-container-$VERSION.tar.gz cd libnvidia-container-$VERSION # remove "libnvidia-ngx.so" from the list of libs to be checked, focus on the basics now. sed -i -e '/^\s\s*"libnvidia-ngx.so"/ s,"lib,//"lib,' src/nvc_info.c # during the build some stuff gets downloaded, and the lsb_release command is required from within # a make file, so give the people what they want ... # (D. would not like what I would have liked to have written ...) mkdir -p $PREFIX/bin ln -sfv /usr/bin/chicken $PREFIX/bin/lsb_release make install prefix=$PREFIX REVISION=mariux WITH_TIRPC=yes WITH_SECCOMP=no cd $PREFIX/lib ln -svf libnvidia-container.so.1.13.1 libnvidia-container.so.1 ln -svf libnvidia-container-go.so.1.13.1 libnvidia-container-go.so.1 rm -v $PREFIX/bin/lsb_release # and free the chicken again :) ) ( VERSION=1.13.1 # orig: https://github.com/NVIDIA/nvidia-container-toolkit/archive/refs/tags/v1.13.1.tar.gz BEEHIVE=https://beehive.molgen.mpg.de/4336b6fe833e1b52e24a3e157fb843b4/nvidia-container-toolkit-1.13.1.tar.gz test -e nvidia-container-toolkit-$VERSION.tar.gz || wget -nv $BEEHIVE test -d nvidia-container-toolkit-$VERSION || tar -xf nvidia-container-toolkit-$VERSION.tar.gz cd nvidia-container-toolkit-$VERSION mkdir -p bin GO_LDFLAGS="-Wl,-z,lazy,${LDFLAGS}" \ GO111MODULE=auto \ GOPATH="$PWD/gopath" \ go build -v \ -modcacherw \ -buildmode=pie \ -gcflags "all=-trimpath=${PWD}" \ -asmflags "all=-trimpath=${PWD}" \ -ldflags "-s -w -extldflags=${GO_LDFLAGS/%,/}" \ -o bin \ "./..." install -D -m755 "./bin/nvidia-container-runtime-hook" "$PREFIX/bin/nvidia-container-runtime-hook" install -D -m755 "./bin/nvidia-ctk" "$PREFIX/bin/nvidia-ctk" install -D -m644 "./config/config.toml.rpm-yum" "$PREFIX/etc/nvidia-container-runtime/config.toml" install -D -m644 "./oci-nvidia-hook.json" "$PREFIX/share/containers/oci/hooks.d/00-oci-nvidia-hook.json" install -D -m644 "./LICENSE" "$PREFIX/share/licenses/$PKG-$VERSION/LICENSE" ln -vsf nvidia-container-runtime-hook $PREFIX/bin/nvidia-container-toolkit ) # orig: https://github.com/hpc/charliecloud/releases/download/v0.32/charliecloud-0.32.tar.gz BEEHIVE=https://beehive.molgen.mpg.de/d5a31bae85d99179dc2dd884e6ff5dd5/charliecloud-0.32.tar.gz test -e charliecloud-$VERSION.tar.gz || wget --no-verbose $BEEHIVE test -d charliecloud-$VERSION || tar -xf charliecloud-$VERSION.tar.gz cd charliecloud-$VERSION # an upcoming release of nextflow will make this one obsolete :/ # (basically reverting hpc/charliecloud#1536) cat <<- PATCH | patch -p0 --verbose --- bin/ch-run.c.dist 2023-03-14 20:43:52.000000000 +0100 +++ bin/ch-run.c 2023-05-17 14:07:58.825040328 +0200 @@ -58,2 +58,3 @@ { "mount", 'm', "DIR", 0, "SquashFS mount point"}, + { "no-home", -2, 0, 0, "(ignored)"}, { "no-passwd", -9, 0, 0, "don't bind-mount /etc/{passwd,group}"}, @@ -387,2 +388,4 @@ switch (key) { + case -2: // --no-home, a noop. + break; case -3: // --join-ct PATCH ./configure --prefix=$PREFIX nice -12 make -j $(( $(nproc) * 4 / 5 + 1 )) make install exit