Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
executable file 131 lines (96 sloc) 3.92 KB
#! /usr/bin/bash
# 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
PKG=rstudio-server
VERSION=2024.09.0-375
BUILD=1
CONTAINER_NAME=$PKG-$VERSION-$BUILD-container
CONTAINER_TYPE=sandbox # otherwise a sif is created, but here there is still trouble
PREFIX=/pkg/$PKG-$VERSION-$BUILD
if [ -n "$TESTING" ]; then PREFIX=/scratch/local2/$PKG-$VERSION-$BUILD ; fi
set -xe
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 )
mkdir -p $BUILD_TMPDIR/home
export TMPDIR=$BUILD_TMPDIR
export HOME=$BUILD_TMPDIR/home
mkdir -p $PREFIX
cat >$PREFIX/profile <<-EOF
PATH=$PREFIX/bin:\$PATH:/usr/local/package/bin
if [ -d $PREFIX/.compatlibs ]; then export LD_LIBRARY_PATH=$PREFIX/.compatlibs\${LD_LIBRARY_PATH:+:}\$LD_LIBRARY_PATH ; fi
EOF
. $PREFIX/profile
BUILD=$PREFIX/build
mkdir -p $BUILD
cd $BUILD
mkdir -p rstudio-server
cd rstudio-server
# orig: https://download2.rstudio.org/server/jammy/amd64/rstudio-server-2024.09.0-375-amd64.deb
BEEHIVE=https://beehive.molgen.mpg.de/048f99f73ce9442ef2efca9b92c14a31/rstudio-server-2024.09.0-375-amd64.deb
test -e rstudio-server-$VERSION-amd64.deb || wget -nv $BEEHIVE
test -d rstudio-server || ar p rstudio-server-$VERSION-amd64.deb data.tar.xz | unxz | tar -x --strip-components=3 -f -
cd $BUILD
mkdir -p apptainer
cd apptainer
echo 'root:x:0:0:root:/root:/bin/bash' > passwd
echo 'root:x:0:' > group
echo '# this is just a stub file, needed to keep /usr/sbin/hostconfig happy (almost).' > hostconfig
cat > apptainer.def <<-EOF
# our build mode
Bootstrap: scratch
# %environment
# export PATH=''
# what goes into the container ...
%files
$BUILD/rstudio-server/rstudio-server /apps/rstudio-server
$BUILD/apptainer/group /etc/group
$BUILD/apptainer/hostconfig /etc/hostconfig
$BUILD/apptainer/passwd /etc/passwd
/etc/services /etc/services
# This is a scriptlet that will be executed on the host, not in the container
%setup
ln -s usr/bin \$APPTAINER_ROOTFS/bin
ln -s usr/sbin \$APPTAINER_ROOTFS/sbin
ln -s usr/lib \$APPTAINER_ROOTFS/lib
ln -s usr/lib \$APPTAINER_ROOTFS/lib64
# %runscript
# echo "This is what happens when you run the container..."
# %post
# echo "Hello from inside the container"
EOF
if [ "$CONTAINER_TYPE" = "sandbox" ]; then
CONTAINER=$CONTAINER_NAME-sandbox
test -d $CONTAINER && rm -r $CONTAINER
apptainer build --sandbox $CONTAINER apptainer.def
else
CONTAINER=$CONTAINER_NAME.sif
rm -vf $CONTAINER
apptainer build $CONTAINER apptainer.def
fi
cd $BUILD
mkdir -p launcher
cd launcher
# Need a proper startup for rstudio-server (search: 'rstudio-server docker singularity/apptainer')
# see e.g. https://github.com/oist/BioinfoUgrp/blob/master/RStudio/launch_rserver.sh
GITCOMMIT_PAM_HELPER=a4d695b
GITCOMMIT_LAUNCHER=3f3fc19
wget https://github.molgen.mpg.de/thomas/utilities_for_rstudio_server/raw/$GITCOMMIT_PAM_HELPER/rstudio-server.pam-helper.sh
sed -i \
-e "/^# @ID@ #/ s,@ID@,source: github.molgen.mpg.de/thomas/utilities_for_rstudio_server rstudio-server.pam-helper.sh $GITCOMMIT_PAM_HELPER," \
rstudio-server.pam-helper.sh
chmod -c +x rstudio-server.pam-helper.sh
wget https://github.molgen.mpg.de/thomas/utilities_for_rstudio_server/raw/$GITCOMMIT_LAUNCHER/rstudio-server.launcher.sh
sed -i \
-e "/^# @ID@ #/ s,@ID@,source: github.molgen.mpg.de/thomas/utilities_for_rstudio_server rstudio-server.launcher.sh $GITCOMMIT_LAUNCHER," \
-e "/^PREFIX=/ s,@PREFIX@,$PREFIX," \
-e "/^CONTAINER=/ s,@CONTAINER@,$CONTAINER," \
rstudio-server.launcher.sh
mv rstudio-server.launcher.sh rstudio-server
chmod -c +x rstudio-server
cd $BUILD
# now 'install'
mkdir -vp $PREFIX/bin $PREFIX/libexec
cp -vp launcher/rstudio-server $PREFIX/bin
cp -vp launcher/rstudio-server.pam-helper.sh $PREFIX/bin
mv -v apptainer/$CONTAINER $PREFIX/libexec