diff --git a/podman-6.1.4-0.build.sh b/podman-6.1.4-0.build.sh new file mode 100755 index 0000000..d135bc5 --- /dev/null +++ b/podman-6.1.4-0.build.sh @@ -0,0 +1,264 @@ +#! /bin/bash + +# ------------------------------------------------------------------- Debug + +# COOKIE=$(mcookie|cut -c-8); grep -v V_GREP_ME $0 > /dev/shm/runme-$COOKIE.sh ; sleep 0.3; exec bash /dev/shm/runme-$COOKIE.sh +# TESTING=1 + +# ---------------------------------------------------------------- Preamble + +PKG=podman +VERSION=6.1.4 +BUILD=0 + +TASK=${TASK:-ALL} # when testing parts, do #> TASK=md2man ./podman-6.1.4-0.build.sh + +PREFIX=/pkg/$PKG-$VERSION-$BUILD +if [ -n "${TESTING:-}" ]; then PREFIX=/scratch/local2/$PKG-$VERSION-$BUILD ; fi + +PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin + +set -eu +umask 022 + +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 ) +export TMPDIR=$BUILD_TMPDIR +export HOME=$BUILD_TMPDIR/home +mkdir -vp $HOME + +exec $PREFIX/profile <<-EOF + PATH=$PREFIX/bin:\$PATH + # podman is built with current package python-3.12.8-0, if it is phased out, source it ... + python -VV | grep -q '3.12.8.*Jan 6 2025, 13:15:47' || . /pkg/python-3.12.8-0/profile + PYTHONPATH=$PREFIX/lib/python3.12/site-packages\${PYTHONPATH:+:\$PYTHONPATH} + export PYTHONPATH + export PYTHONNOUSERSITE=1 + if [ -d $PREFIX/.compatlibs ]; then export LD_LIBRARY_PATH=$PREFIX/.compatlibs\${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH} ; fi + export MX_NVIDIA_CDI_DIR=\${MX_NVIDIA_CDI_DIR:-/dev/shm/nvidia_cdi} +EOF +. $PREFIX/profile + + +NPROC=$(( $(nproc) * 4 / 5 + 1 )) +export MAKEFLAGS="-j $NPROC" + +BUILDDIR=$PREFIX/build + +mkdir -p $PREFIX/bin +mkdir -p $PREFIX/share/man +mkdir -p $BUILDDIR +cd $BUILDDIR + + +# ------------------------------------------------------------- Maintenance + +if [ $TASK = 'zap' ]; then # reset + test -d $PREFIX && rm -rf $PREFIX/* + echo "# $PREFIX cleaned ..." + test -d $BUILD_TMPDIR && rm -rf $BUILD_TMPDIR/* + echo "# $BUILD_TMPDIR cleaned (again ...)" + exit +fi + +# -------------------------------------- Now all the little building blocks + +( if ! [ $TASK = 'ALL' -o $TASK = 'md2man' ]; then exit; fi + + # orig: https://github.com/cpuguy83/go-md2man/archive/refs/tags/v2.0.7.tar.gz + BEEHIVE=https://beehive.molgen.mpg.de/62c26841be8216afe8ebe50bb200d805/go-md2man-2.0.7.tar.gz + + test -e go-md2man-2.0.7.tar.gz || wget -nv $BEEHIVE + test -d go-md2man-2.0.7 || tar -xf go-md2man-2.0.7.tar.gz + + cd go-md2man-2.0.7 + go telemetry off + make V=1 bin/go-md2man + + cp -pv bin/go-md2man $PREFIX/bin + chmod -c 0755 $PREFIX/bin/go-md2man + +) + + +( if ! [ $TASK = 'ALL' -o $TASK = 'conmon' ]; then exit; fi + + # orig: https://github.com/containers/conmon/archive/refs/tags/v2.2.1.tar.gz + BEEHIVE=https://beehive.molgen.mpg.de/beea74914108dfc2ca7196b86a4905bf/conmon-2.2.1.tar.gz + + test -e conmon-2.2.1.tar.gz || wget -nv $BEEHIVE + test -d conmon-2.2.1 || tar -xf conmon-2.2.1.tar.gz + + cd conmon-2.2.1 + go telemetry off + make V=1 PREFIX=$PREFIX + make V=1 install PREFIX=$PREFIX + +) + +( if ! [ $TASK = 'ALL' -o $TASK = 'runc' ]; then exit; fi + + # orig: https://github.com/opencontainers/runc/archive/v1.5.2/runc-1.5.2.tar.gz + BEEHIVE=https://beehive.molgen.mpg.de/bbbd5a90ed28a726b5b0830fa53350b2/runc-1.5.2.tar.gz + GITHASH=29dd3dc + test -e runc-1.5.2.tar.gz || wget -nv $BEEHIVE + test -d runc-1.5.2 || tar -xf runc-1.5.2.tar.gz + + cd runc-1.5.2 + go telemetry off + # libpathrs is not packaged, use the vendored pure-Go pathrs-lite instead + make GIT_BRANCH=main COMMIT=$GITHASH RUNC_BUILDTAGS=-libpathrs all man + make install BINDIR=$PREFIX/bin +) + +( if ! [ $TASK = 'ALL' -o $TASK = 'crun' ]; then exit; fi + + # orig: https://github.com/containers/crun/releases/download/1.30.1/crun-1.30.1.tar.gz + BEEHIVE=https://beehive.molgen.mpg.de/5cf213d08aec8fe6078d6cbac8ec0778/crun-1.30.1.tar.gz + + test -e crun-1.30.1.tar.gz || wget -nv $BEEHIVE + test -d crun-1.30.1 || tar -xf crun-1.30.1.tar.gz + + cd crun-1.30.1 + ./configure --prefix=$PREFIX + make V=1 + make install +) + +# catatonit by Suse -- replaces 'docker-init' +( if ! [ $TASK = 'ALL' -o $TASK = 'catatonit' ]; then exit; fi + + # orig: https://github.com/openSUSE/catatonit/archive/refs/tags/v0.2.1.tar.gz + BEEHIVE=https://beehive.molgen.mpg.de/1b8887244915508590c8d0e9b161b0ca/catatonit-0.2.1.tar.gz + + test -e catatonit-0.2.1.tar.gz || wget -nv $BEEHIVE + test -d catatonit-0.2.1 || tar -xf catatonit-0.2.1.tar.gz + + cd catatonit-0.2.1 + ./autogen.sh + ./configure --prefix=$PREFIX + make + make install +) + +# . . . . . . . . . . And, when was your last visit at a 'Baumarkt' ? + +( if ! [ $TASK = 'ALL' -o $TASK = 'passt' ]; then exit; fi + + # https://passt.top/passt/about/ -- passt implements a translation layer between a Layer-2 network + # interface and native Layer-4 sockets (TCP, UDP, ICMP/ICMPv6 echo) on a host. It doesn't require + # any capabilities or privileges, and it can be used as a simple replacement for Slirp. + + # orig: https://passt.top/passt/snapshot/passt-2026_10_02.cba3570.tar + BEEHIVE=https://beehive.molgen.mpg.de/0c61e7ccb03cda8787a6696b92cf8539/passt-2026_10_02.cba3570.tar + + test -e passt-2026_10_02.cba3570.tar || wget -nv $BEEHIVE + test -d passt-2026_10_02.cba3570 || tar -xf passt-2026_10_02.cba3570.tar + + cd passt-2026_10_02.cba3570 + make + make prefix=$PREFIX install +) + +( if ! [ $TASK = 'ALL' -o $TASK = 'netavark' ]; then exit; fi + + source /pkg/rustc-1.97.0-0/profile + + # orig: https://github.com/containers/netavark/archive/v2.1.0/netavark-2.1.0.tar.gz + BEEHIVE=https://beehive.molgen.mpg.de/0eb1dfb4a156e76f1160bcab23244be4/netavark-2.1.0.tar.gz + + test -e netavark-2.1.0.tar.gz || wget -nv $BEEHIVE + test -d netavark-2.1.0 || tar -xf netavark-2.1.0.tar.gz + + cd netavark-2.1.0 + make PREFIX=$PREFIX + make install PREFIX=$PREFIX +) + +( if ! [ $TASK = 'ALL' -o $TASK = 'aardvarkdns' ]; then exit; fi + + source /pkg/rustc-1.97.0-0/profile + + # orig: https://github.com/containers/aardvark-dns/archive/v2.1.0/aardvark-dns-2.1.0.tar.gz + BEEHIVE=https://beehive.molgen.mpg.de/c40c5a8636b7be85ba1051cf07cd984d/aardvark-dns-2.1.0.tar.gz + + test -e aardvark-dns-2.1.0.tar.gz || wget -nv $BEEHIVE + test -d aardvark-dns-2.1.0 || tar -xf aardvark-dns-2.1.0.tar.gz + + cd aardvark-dns-2.1.0 + make PREFIX=$PREFIX + make install PREFIX=$PREFIX +) + +( if ! [ $TASK = 'ALL' -o $TASK = 'podman' ]; then exit; fi + + # orig: https://github.com/containers/podman/archive/v6.1.4/podman-6.1.4.tar.gz + BEEHIVE=https://beehive.molgen.mpg.de/c82c4a9c46db5d911e65ca5955fd81cd/podman-6.1.4.tar.gz + + test -e podman-6.1.4.tar.gz || wget -nv $BEEHIVE + test -d podman-6.1.4 || tar -xf podman-6.1.4.tar.gz + + cd podman-6.1.4 + + # Help with 'Error: could not find "netavark" ...', and may save some + # clutter in config files ... + sed -i -e \ + "/defaultHelperBinariesDir = / a \ \"$PREFIX/libexec/podman\"," \ + vendor/go.podman.io/common/pkg/config/config_linux.go + + go telemetry off + make BUILDTAGS="seccomp libsubid" PREFIX=$PREFIX + make install PREFIX=$PREFIX +) + +# Right now the CDI spec is generated on a per user basis. +# Could be generated at boot time, given nvidia-ctk could be build +# w/o downloading go packages. +( if ! [ $TASK = 'ALL' -o $TASK = 'gpuwraper' ]; then exit; fi + + cat > $PREFIX/bin/podman-gpu <<- EOF + #! /usr/bin/bash + + set -eu + + MX_NVIDIA_CDI_DIR=\${MX_NVIDIA_CDI_DIR:-} + NVIDIA_CDI=nvidia.yaml + + if ! test -f "\$MX_NVIDIA_CDI_DIR/\$NVIDIA_CDI"; then + MX_NVIDIA_CDI_DIR=/dev/shm/\$USER + if ! test -f "\$MX_NVIDIA_CDI_DIR/\$NVIDIA_CDI"; then + echo "# Creating CDI setup '\$MX_NVIDIA_CDI_DIR/\$NVIDIA_CDI' ..." >&2 + mkdir -pv \$MX_NVIDIA_CDI_DIR + nvidia-ctk cdi generate --mode=nvml --output=\$MX_NVIDIA_CDI_DIR/\$NVIDIA_CDI > \\ + \$MX_NVIDIA_CDI_DIR/nvidia-ctk.log 2>&1 + fi + fi + + exec podman --cdi-spec-dir "\$MX_NVIDIA_CDI_DIR" "\$@" + + EOF + + chmod -c 0755 $PREFIX/bin/podman-gpu +) + +( if ! [ $TASK = 'ALL' -o $TASK = 'compose' ]; then exit; fi + + # a single dependency ... + # orig: https://files.pythonhosted.org/packages/74/26/2fbeedb218a787a5eea551c7532cac4e009f83d689dd2faa0d0353473f86/python_dotenv-1.2.4.tar.gz + BEEHIVE=https://beehive.molgen.mpg.de/ef4507c345544f1b9ef984b8e31eaad1/python_dotenv-1.2.4.tar.gz + python -m pip install --prefix $PREFIX $BEEHIVE + + # orig: https://files.pythonhosted.org/packages/1f/80/a6ada19562b12ed466dac5c3e02aef5ed7c8d0881864d80e0d94d0dc71f5/podman_compose-1.6.0.tar.gz + BEEHIVE=https://beehive.molgen.mpg.de/4f4f1a2a15215d6db99b172a30d02003/podman_compose-1.6.0.tar.gz + python -m pip install --prefix $PREFIX $BEEHIVE + + python -c 'import podman_compose; print("# *** Load & version check:", podman_compose.__version__)' +) + +# -------------------------------------------------------- This is the end. + +exit