Skip to content

rstudio-server: bug fixes in launcher script, rebuild needed #306

Merged
merged 1 commit into from
Nov 18, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
131 changes: 131 additions & 0 deletions rstudio-server-2024.09.0-375-1.build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
#! /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