Skip to content

Instantly share code, notes, and snippets.

@robert-werner
Last active May 7, 2021 17:27
Show Gist options
  • Select an option

  • Save robert-werner/316d2da0c2f46b4008cde9342c0d3188 to your computer and use it in GitHub Desktop.

Select an option

Save robert-werner/316d2da0c2f46b4008cde9342c0d3188 to your computer and use it in GitHub Desktop.
Installs ESA SNAP
#!/bin/sh
# https://senbox.atlassian.net/wiki/spaces/SNAP/pages/30539778/Install+SNAP+on+the+command+line
# https://senbox.atlassian.net/wiki/spaces/SNAP/pages/30539785/Update+SNAP+from+the+command+line
# SNAP latest Version: http://step.esa.int/main/download/snap-download/
./diskspace_probe.sh "`basename $0`" begin
SNAPVER=8
# avoid NullPointer crash during S-1 processing
java_max_mem=10G
JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
BUILD_DIR=`pwd`
if [ -z "$USER_NAME" ] ; then
USER_NAME="user"
fi
USER_HOME="/home/$USER_NAME"
# install module 'jpy' (A bi-directional Python-Java bridge)
git clone https://github.com/bcdev/jpy.git /src/snap/jpy
python3 -m ensurepip
pip3 install --upgrade pip wheel
(cd /src/snap/jpy && python3 setup.py build maven bdist_wheel)
# hack because ./snappy-conf will create this dir but also needs *.whl files...
mkdir -p $USER_HOME/.snap/snap-python/snappy
cp /src/snap/jpy/dist/*.whl $USER_HOME/.snap/snap-python/snappy
# install and update snap
wget -q -O /src/snap/esa-snap_all_unix_${SNAPVER}_0.sh \
"http://step.esa.int/downloads/${SNAPVER}.0/installers/esa-snap_all_unix_${SNAPVER}_0.sh"
# more hacks to use system java and not oracle (included in installer).
# Oracle JAVA is not supported with alpine due to missing glibc.
sed -i 's+$INSTALL4J_JAVA_PREFIX "$app_java_home/bin/java"+$INSTALL4J_JAVA_PREFIX java+g' /src/snap/esa-snap_all_unix_${SNAPVER}_0.sh
sed -i 's+-Dinstall4j.jvmDir="$app_java_home"+-Dinstall4j.jvmDir=$JAVA_HOME/jre+g' /src/snap/esa-snap_all_unix_${SNAPVER}_0.sh
sed -i 's+-Djava.ext.dirs="$app_java_home/lib/ext:$app_java_home/jre/lib/ext"++g' /src/snap/esa-snap_all_unix_${SNAPVER}_0.sh
sed -i 's+-classpath "$local_classpath"+-classpath "$local_classpath:$app_java_home/lib/ext:$app_java_home/jre/lib/ext"+g' /src/snap/esa-snap_all_unix_${SNAPVER}_0.sh
sh /src/snap/esa-snap_all_unix_${SNAPVER}_0.sh -q -varfile /src/snap/response.varfile
# one more hack to keep using system java
sed -i 's+jdkhome="./jre"+jdkhome="$JAVA_HOME"+g' /usr/local/snap/etc/snap.conf
# freezing at time, likely no longer needed
# /usr/local/snap/bin/snap --nosplash --nogui --modules --update-all
rm -rf /usr/local/snap/jre
# create snappy and python binding with snappy
/usr/local/snap/bin/snappy-conf /usr/bin/python3
(cd /root/.snap/snap-python/snappy && python3 setup.py install)
# increase the JAVA VM size to avoid NullPointer exception in Snappy during S-1 processing
(cd /root/.snap/snap-python/snappy && sed -i "s/^java_max_mem:.*/java_max_mem: $java_max_mem/" snappy.ini)
# test
/usr/bin/python3 -c 'from snappy import ProductIO'
if [ -f /src/snap/about.py ]
then
/usr/bin/python3 /src/snap/about.py
cp /src/snap/about.py /root/.snap/
fi
# cleanup installer
rm -f /src/snap/esa-snap_all_unix_${SNAPVER}_0.sh
################################################################################
# keep for debugging
# export INSTALL4J_KEEP_TEMP=yes
"$BUILD_DIR"/diskspace_probe.sh "`basename $0`" end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment