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 163 lines (109 sloc) 3.84 KB
#! /usr/bin/bash
set -eu
# ---------------------------------------------------------------- Preamble
PKG=icy
VERSION=2.5.2
BUILD=0
PREFIX=/pkg/icy-$VERSION-$BUILD
if [ -n "${TESTING:-}" ]; then PREFIX=/scratch/local2/$PKG-$VERSION-$BUILD ; fi
mkdir -p $PREFIX/bin
cd $PREFIX
cat > profile <<- EOF
PATH=$PREFIX/bin:\$PATH
if [ -d $PREFIX/.compatlibs ]; then export LD_LIBRARY_PATH=$PREFIX/.compatlibs\${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH} ; fi
EOF
# ----------------------------------------------------------------- Install
mkdir -p app
cd app
# orig: https://icy.bioimageanalysis.org/wp-content/uploads/2024/02/icy_2.5.2.tar.gz
BEEHIVE=https://beehive.molgen.mpg.de/f94861acd15245b01b57e24fc36c39a4/icy_2.5.2.tar.gz
wget -O- -nv $BEEHIVE | tar -xz --strip-components=2 --exclude='._*' --exclude='.DS*' --no-xattrs -f- 2>/dev/null
# dump the 'updating' start wrapper
mv icy icy.dist; chmod -c -x icy.dist
# the vtk-libs seem a bit weird, so straighten out a bit ...
rm -vrf lib/unix32
cd lib/unix64
rm -vf vtk.zip # it is also unpacked here ...
mkdir vtk # this is needed
mv lib* vtk
cd vtk
# restore symlinks ... (who ever has created this archive, ...)
echo '# running ldconfig -xnv .'
ldconfig -xnv .
# ---------------------------------------------------------- Create startup
cd $PREFIX
sed -e "s,@PREFIX@,$PREFIX,g" > bin/icy <<- 'EOF'
#! /usr/bin/bash
set -eu
# ----------------------------------------------- Make libraries accessible
# Some vtk plugins refer to libawt.so
if [ -z "${LIBAWTPATH:-}" ]; then
LIBAWTPATH=$(java -XshowSettings:properties --version 2>&1 | grep sun.boot.library.path)
LIBAWTPATH=${LIBAWTPATH#*sun.boot.library.path = }
fi
test -e "$LIBAWTPATH/libawt.so" || LIBAWTPATH= # then not, at least we gave it a try ...
LD_LIBRARY_PATH=@PREFIX@/lib/unix64/vtk${LIBAWTPATH:+:$LIBAWTPATH}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
# echo $LD_LIBRARY_PATH | tr ':' '\n' | nl
export LD_LIBRARY_PATH
# --------------------------------------------- Prepare local icy directory
mkdir -pv $HOME/.local/Icy
cd $HOME/.local/Icy
# ----------------------------------------------- Handle possible leftovers
if [ $# -gt 0 ]; then
if [ $1 = clean ]; then
rm -vf icy.run
shift
fi
fi
if [ -e icy.run ]; then
cat << EOM
---------------------------------------------------------------------
Note:
EOM
cat icy.run
cat << EOM
So it may be already running somewhere else, and you need to
close the application before you can proceed.
If icy or the machine crashed, you may need to remove.
$PWD/icy.run
#> rm $PWD/icy.run
or start icy with
#> icy clean
---------------------------------------------------------------------
EOM
exit
fi
echo " icy started on host '$(hostname -s)', on $(date +%c)." >> icy.run
# ---------------------------------------------------- Prepare fuse overlay
# upper and workdir must be on the same file system (hmm, on NFS ...)
UPPER=icy_user
WORK=.fuse_transient
LOWER=@PREFIX@
MOUNTPOINT=icy_fmount
mkdir -pv $UPPER $MOUNTPOINT $WORK
if [ "$(stat -c %D $UPPER)" = "$(stat -c %D $MOUNTPOINT)" ] ; then
fuse-overlayfs \
-o lowerdir=$LOWER \
-o workdir=$WORK \
-o squash_to_uid=$UID \
-o squash_to_gid=$(id -g $UID) \
-o noacl \
-o upperdir=$UPPER \
$MOUNTPOINT
else
if [ ! -e $MOUNTPOINT/app/icy.jar ]; then
echo "# ERROR: Something is wrong, can not find 'icy.jar'."
exit 1
fi
fi
# --------------------------------------------------------- Finally run icy
cd icy_fmount/app
java -jar icy.jar "$@"
# ----------------------------------------------------------------- Tidy up
cd $HOME/.local/Icy
sleep 1
fusermount -u $MOUNTPOINT
rm icy.run || echo "# ERROR: Something is wrong, can not find 'icy.run' in $PWD."
EOF
chmod +x -c bin/icy
exit 0