-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #325 from mariux64/add-icy-2.5.2
icy-2.5.2: imageanalysis tool - add to repo
- Loading branch information
Showing
1 changed file
with
163 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,163 @@ | ||
#! /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 |