Skip to content

Commit 9f4f5ff

Browse files
authored
Merge pull request #1319 from jvgeiger/feature/appimage_action
Add worklow to build LISF AppImage
2 parents b0ab8e4 + 43c0d4b commit 9f4f5ff

File tree

9 files changed

+503
-0
lines changed

9 files changed

+503
-0
lines changed

.github/scripts/appimage/AppRun

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
#!/bin/bash
2+
3+
SELF=$(readlink -f "${0}")
4+
HERE=${SELF%/*}
5+
6+
LISF_LIBS_OPENJPEG=${HERE}/usr/lib/openjpeg/2.4.0_gnu-11.2.0
7+
LISF_LIBS_ECCODES=${HERE}/usr/lib/eccodes/2.22.0_gnu-11.2.0
8+
LISF_LIBS_NETCDF=${HERE}/usr/lib/netcdf/4.7.4_gnu-11.2.0
9+
LISF_LIBS_HDF4=${HERE}/usr/lib/hdf4/4.2.15_gnu-11.2.0
10+
LISF_LIBS_HDFEOS=${HERE}/usr/lib/hdfeos2/3.0_gnu-11.2.0
11+
LISF_LIBS_HDF5=${HERE}/usr/lib/hdf5/1.12.0_gnu-11.2.0
12+
LISF_LIBS_ESMF=${HERE}/usr/lib/esmf/8.1.1_gnu-11.2.0_mpich-3.4
13+
LISF_LIBS_GDAL=${HERE}/usr/lib/gdal/3.5.2_gnu-11.2.0
14+
LISF_LIBS_FORTRANGIS=${HERE}/usr/lib/fortrangis/2.6-6_gnu-11.2.0
15+
LISF_LIBS_LIBGEOTIFF=${HERE}/usr/lib/geotiff/1.7.0_gnu-11.2.0
16+
LISF_LIBS_PROJ=${HERE}/usr/lib/proj/9.1.0_gnu-11.2.0
17+
LISF_LIBS_TIFF=${HERE}/usr/lib/tiff/4.0.9_gnu-11.2.0
18+
19+
LISF_LIBS_PATH=""
20+
LISF_LIBS_PATH+=":${LISF_LIBS_ECCODES}/lib"
21+
LISF_LIBS_PATH+=":${LISF_LIBS_NETCDF}/lib"
22+
LISF_LIBS_PATH+=":${LISF_LIBS_ESMF}/lib/libO/Linux.gfortran.64.mpich3.default"
23+
LISF_LIBS_PATH+=":${LISF_LIBS_HDF5}/lib"
24+
LISF_LIBS_PATH+=":${LISF_LIBS_HDF4}/lib"
25+
LISF_LIBS_PATH+=":${LISF_LIBS_GDAL}/lib"
26+
LISF_LIBS_PATH+=":${LISF_LIBS_LIBGEOTIFF}/lib"
27+
LISF_LIBS_PATH+=":${LISF_LIBS_FORTRANGIS}/lib"
28+
LISF_LIBS_PATH+=":${LISF_LIBS_OPENJPEG}/lib"
29+
LISF_LIBS_PATH+=":${LISF_LIBS_PROJ}/lib"
30+
LISF_LIBS_PATH+=":${LISF_LIBS_TIFF}/lib"
31+
export LISF_LIBS_PATH
32+
33+
export LANG=C
34+
export LD_LIBRARY_PATH=${LISF_LIBS_PATH}:${LD_LIBRARY_PATH}
35+
export ECCODES_DEFINITION_PATH=${LISF_LIBS_ECCODES}/share/eccodes/definitions
36+
export ECCODES_SAMPLES_PATH=${LISF_LIBS_ECCODES}/share/eccodes/samples
37+
38+
export PATH=${HERE}/usr/bin:${PATH}
39+
40+
function lisf_usage {
41+
NAME="LISF-x86_64.AppImage"
42+
echo "Usage: $NAME [options] [-- LISF options]"
43+
echo ""
44+
echo " where [options] are:"
45+
echo " -h show this help message"
46+
echo " -v show revision info about LISF"
47+
echo " -i show configuration info about LISF"
48+
echo " -a <LDT|LIS|LVT> specify which app to run"
49+
echo ""
50+
echo " where [LISF options] are options to pass to LISF;"
51+
echo " these must be preceeded by --"
52+
echo ""
53+
echo " Examples:"
54+
echo " $NAME -a LDT ldt.config"
55+
echo " mpirun -n N $NAME -a LIS -- --file lis.config"
56+
echo " $NAME -a LVT lvt.config"
57+
}
58+
59+
function lisf_version {
60+
echo "## Revision info"
61+
echo ""
62+
cat "${HERE}/info/revision.log"
63+
}
64+
65+
function lisf_info {
66+
lisf_version
67+
echo ""
68+
echo "## LDT info"
69+
echo ""
70+
echo "### LDT_NetCDF_inc.h"
71+
cat "${HERE}/info/ldt/LDT_NetCDF_inc.h"
72+
echo ""
73+
echo "### LDT_misc.h"
74+
cat "${HERE}/info/ldt/LDT_misc.h"
75+
echo ""
76+
echo "### configure.ldt"
77+
cat "${HERE}/info/ldt/configure.ldt"
78+
echo ""
79+
echo "## LIS info"
80+
echo ""
81+
echo "### LIS_NetCDF_inc.h"
82+
cat "${HERE}/info/lis/LIS_NetCDF_inc.h"
83+
echo ""
84+
echo "### LIS_misc.h"
85+
cat "${HERE}/info/lis/LIS_misc.h"
86+
echo ""
87+
echo "### LIS_plugins.h"
88+
cat "${HERE}/info/lis/LIS_plugins.h"
89+
echo ""
90+
echo "### configure.lis"
91+
cat "${HERE}/info/lis/configure.lis"
92+
echo ""
93+
echo "## LVT info"
94+
echo ""
95+
echo "### LVT_misc.h"
96+
cat "${HERE}/info/lvt/LVT_NetCDF_inc.h"
97+
echo ""
98+
echo "### LVT_misc.h"
99+
cat "${HERE}/info/lvt/LVT_misc.h"
100+
echo ""
101+
echo "### configure.lvt"
102+
cat "${HERE}/info/lvt/configure.lvt"
103+
}
104+
105+
if [[ ${#} -eq 0 ]]
106+
then
107+
lisf_usage
108+
fi
109+
110+
optstring=":hvia:"
111+
while getopts ${optstring} arg
112+
do
113+
case ${arg} in
114+
h)
115+
lisf_usage
116+
exit 0
117+
;;
118+
v)
119+
lisf_version
120+
exit 0
121+
;;
122+
i)
123+
lisf_info
124+
exit 0
125+
;;
126+
a)
127+
APP="${OPTARG}"
128+
;;
129+
?)
130+
echo "Invalid option: -${OPTARG}"
131+
echo ""
132+
lisf_usage
133+
exit 1
134+
;;
135+
esac
136+
done
137+
138+
shift $((${OPTIND} - 1))
139+
exec "${HERE}/usr/bin/${APP}" "${@}"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
FROM lisf_libraries
2+
3+
# LISF {{{
4+
WORKDIR /home/workdir
5+
COPY LISF ./LISF
6+
RUN cp ./LISF/.github/scripts/appimage/lisf.env .
7+
RUN cp ./LISF/.github/scripts/appimage/compile_lisf .
8+
RUN ./compile_lisf
9+
# }}}
10+
11+
# AppImage {{{
12+
WORKDIR /home/workdir
13+
COPY ./LISF/.github/scripts/appimage/AppRun .
14+
COPY ./LISF/.github/scripts/appimage/LISF.png .
15+
COPY ./LISF/.github/scripts/appimage/LISF.desktop .
16+
COPY ./LISF/.github/scripts/appimage/prep_appdir .
17+
RUN ./prep_appdir
18+
# }}}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[Desktop Entry]
2+
Name=LISF
3+
Exec=LISF
4+
Icon=LISF
5+
Type=Application
6+
Categories=Utility;

.github/scripts/appimage/LISF.png

28.2 KB
Loading
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#!/usr/bin/env bash
2+
3+
source lisf.env
4+
cd LISF
5+
6+
#
7+
# Revision
8+
#
9+
10+
git log -n 1 --oneline --decorate >revision.log
11+
12+
#
13+
# LDT
14+
#
15+
16+
# Parallelism (0-serial, 1-dmpar, default=0): 0
17+
# Optimization level (-3=strict checks with warnings, -2=strict checks, -1=debug, 0,1,2,3, default=2): 2
18+
# Assume little/big_endian data format (1-little, 2-big, default=2): 2
19+
# Use GRIBAPI/ECCODES? (0-neither, 1-gribapi, 2-eccodes, default=2): 2
20+
# NETCDF version (3 or 4, default=4)?: 4
21+
# NETCDF use shuffle filter? (1-yes, 0-no, default = 1): 1
22+
# NETCDF use deflate filter? (1-yes, 0-no, default = 1): 1
23+
# NETCDF use deflate level? (1 to 9-yes, 0-no, default = 9): 1
24+
# Use HDF4? (1-yes, 0-no, default=1): 1
25+
# Use HDF5? (1-yes, 0-no, default=1): 1
26+
# Use HDFEOS? (1-yes, 0-no, default=1): 1
27+
# Enable GeoTIFF support? (1-yes, 0-no, default=1): 1
28+
# Enable LIBGEOTIFF support? (1-yes, 0-no, default=1): 1
29+
# Include date/time stamp history? (1-yes, 0-no, default=1): 1
30+
31+
cd ldt
32+
printf '%s\n' "0" "2" "2" "2" "4" "1" "1" "1" "1" "1" "1" "1" "1" "1" | ./configure
33+
./compile -j 2
34+
35+
#
36+
# LIS
37+
#
38+
39+
# Parallelism (0-serial, 1-dmpar, default=1): 1
40+
# Optimization level (-3=strict checks with warnings, -2=strict checks, -1=debug, 0,1,2,3, default=2): 2
41+
# Assume little/big_endian data format (1-little, 2-big, default=2): 2
42+
# Use GRIBAPI/ECCODES? (0-neither, 1-gribapi, 2-eccodes, default=2): 2
43+
# Enable AFWA-specific grib configuration settings? (1-yes, 0-no, default=0): 0
44+
# Use NETCDF? (1-yes, 0-no, default=1): 1
45+
# NETCDF version (3 or 4, default=4): 4
46+
# NETCDF use shuffle filter? (1-yes, 0-no, default = 1): 1
47+
# NETCDF use deflate filter? (1-yes, 0-no, default = 1): 1
48+
# NETCDF use deflate level? (1 to 9-yes, 0-no, default = 9): 1
49+
# Use HDF4? (1-yes, 0-no, default=1): 1
50+
# Use HDF5? (1-yes, 0-no, default=1): 1
51+
# Use HDFEOS? (1-yes, 0-no, default=1): 1
52+
# Use MINPACK? (1-yes, 0-no, default=0): 0
53+
# Use LIS-CRTM? (1-yes, 0-no, default=0): 0
54+
# Use LIS-CMEM? (1-yes, 0-no, default=0): 0
55+
# Use LIS-LAPACK? (1-yes, 0-no, default=0): 0
56+
# Use LIS-MKL-LAPACK? (1-yes, 0-no, default=0): 0
57+
58+
cd ../lis
59+
printf '%s\n' "1" "2" "2" "2" "0" "1" "4" "1" "1" "1" "1" "1" "1" "0" "0" "0" "0" "0" | ./configure
60+
./compile -j 2
61+
62+
#
63+
# LVT
64+
#
65+
66+
# Optimization level (-3=strict checks with warnings, -2=strict checks, -1=debug, 0,1,2,3, default=2): 2
67+
# Assume little/big_endian data format (1-little, 2-big, default=2): 2
68+
# Use GRIBAPI/ECCODES? (1-gribapi, 2-eccodes, default=2): 2
69+
# Use NETCDF? (1-yes, 0-no, default=1): 1
70+
# NETCDF version (3 or 4, default=4): 4
71+
# NETCDF use shuffle filter? (1-yes, 0-no, default = 1): 1
72+
# NETCDF use deflate filter? (1-yes, 0-no, default = 1): 1
73+
# NETCDF use deflate level? (1 to 9-yes, 0-no, default = 9): 1
74+
# Use HDF4? (1-yes, 0-no, default=1): 1
75+
# Use HDF5? (1-yes, 0-no, default=1): 1
76+
# Use HDFEOS? (1-yes, 0-no, default=1): 1
77+
# Enable AFWA-specific grib configuration settings? (1-yes, 0-no, default=0): 0
78+
# Enable GeoTIFF support? (1-yes, 0-no, default=1): 1
79+
# Use MATLAB support? (1-yes, 0-no, default=0): 0
80+
81+
cd ../lvt
82+
printf '%s\n' "2" "2" "2" "1" "4" "1" "1" "1" "1" "1" "1" "0" "1" "0" | ./configure
83+
./compile -j 2

.github/scripts/appimage/lisf.env

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
LISF_LIBS_MPICH=/home/workdir/lib/mpich/3.4_gnu-11.2.0
2+
LISF_LIBS_OPENJPEG=/home/workdir/lib/openjpeg/2.4.0_gnu-11.2.0
3+
LISF_LIBS_ECCODES=/home/workdir/lib/eccodes/2.22.0_gnu-11.2.0
4+
LISF_LIBS_NETCDF=/home/workdir/lib/netcdf/4.7.4_gnu-11.2.0
5+
LISF_LIBS_HDF4=/home/workdir/lib/hdf4/4.2.15_gnu-11.2.0
6+
LISF_LIBS_HDFEOS=/home/workdir/lib/hdfeos2/3.0_gnu-11.2.0
7+
LISF_LIBS_HDF5=/home/workdir/lib/hdf5/1.12.0_gnu-11.2.0
8+
LISF_LIBS_ESMF=/home/workdir/lib/esmf/8.1.1_gnu-11.2.0_mpich-3.4
9+
LISF_LIBS_PROJ=/home/workdir/lib/proj/9.1.0_gnu-11.2.0
10+
LISF_LIBS_GDAL=/home/workdir/lib/gdal/3.5.2_gnu-11.2.0
11+
LISF_LIBS_FORTRANGIS=/home/workdir/lib/fortrangis/2.6-6_gnu-11.2.0
12+
LISF_LIBS_LIBGEOTIFF=/home/workdir/lib/geotiff/1.7.0_gnu-11.2.0
13+
LISF_LIBS_TIFF=/home/workdir/lib/tiff/4.0.9_gnu-11.2.0
14+
15+
LISF_LIBS_PATH="$LISF_LIBS_MPICH/lib"
16+
LISF_LIBS_PATH+=":$LISF_LIBS_ECCODES/lib"
17+
LISF_LIBS_PATH+=":$LISF_LIBS_NETCDF/lib"
18+
LISF_LIBS_PATH+=":$LISF_LIBS_ESMF/lib/libO/Linux.gfortran.64.mpich3.default"
19+
LISF_LIBS_PATH+=":$LISF_LIBS_HDF5/lib"
20+
LISF_LIBS_PATH+=":$LISF_LIBS_HDF4/lib"
21+
LISF_LIBS_PATH+=":$LISF_LIBS_PROJ/lib"
22+
LISF_LIBS_PATH+=":$LISF_LIBS_GDAL/lib"
23+
LISF_LIBS_PATH+=":$LISF_LIBS_LIBGEOTIFF/lib"
24+
LISF_LIBS_PATH+=":$LISF_LIBS_OPENJPEG/lib"
25+
LISF_LIBS_PATH+=":$LISF_LIBS_TIFF/lib"
26+
export LISF_LIBS_PATH
27+
28+
def_lis_jpeg=""
29+
def_lis_openjpeg=$LISF_LIBS_OPENJPEG
30+
def_lis_eccodes=$LISF_LIBS_ECCODES
31+
def_lis_netcdf=$LISF_LIBS_NETCDF
32+
def_lis_hdf4=$LISF_LIBS_HDF4
33+
def_lis_hdfeos=$LISF_LIBS_HDFEOS
34+
def_lis_hdf5=$LISF_LIBS_HDF5
35+
def_lis_modesmf=$LISF_LIBS_ESMF/mod/modO/Linux.gfortran.64.mpich3.default
36+
def_lis_libesmf=$LISF_LIBS_ESMF/lib/libO/Linux.gfortran.64.mpich3.default
37+
def_lis_minpack=""
38+
def_lis_crtm=""
39+
def_lis_crtm_prof=""
40+
def_lis_cmem=""
41+
def_lis_lapack=""
42+
def_lvt_gdal=$LISF_LIBS_GDAL
43+
def_lvt_fortrangis=$LISF_LIBS_FORTRANGIS
44+
def_ldt_libgeotiff=$LISF_LIBS_LIBGEOTIFF
45+
46+
export LIS_ARCH=linux_gfortran
47+
export LIS_SPMD=parallel
48+
export LIS_FC=mpif90
49+
export LIS_CC=mpicc
50+
export LIS_CPPC=mpiCC
51+
export LIS_JPEG=$def_lis_jpeg
52+
export LIS_OPENJPEG=$def_lis_openjpeg
53+
export LIS_ECCODES=$def_lis_eccodes
54+
export LIS_NETCDF=$def_lis_netcdf
55+
export LIS_HDF4=$def_lis_hdf4
56+
export LIS_HDFEOS=$def_lis_hdfeos
57+
export LIS_HDF5=$def_lis_hdf5
58+
export LIS_MODESMF=$def_lis_modesmf
59+
export LIS_LIBESMF=$def_lis_libesmf
60+
export LIS_MINPACK=$def_lis_minpack
61+
export LIS_CRTM=$def_lis_crtm
62+
export LIS_CRTM_PROF=$def_lis_crtm_prof
63+
export LIS_CMEM=$def_lis_cmem
64+
export LIS_LAPACK=$def_lis_lapack
65+
66+
export LDT_ARCH=linux_gfortran
67+
export LDT_FC=mpif90
68+
export LDT_CC=mpicc
69+
export LDT_JPEG=$def_lis_jpeg
70+
export LDT_OPENJPEG=$def_lis_openjpeg
71+
export LDT_ECCODES=$def_lis_eccodes
72+
export LDT_NETCDF=$def_lis_netcdf
73+
export LDT_HDF4=$def_lis_hdf4
74+
export LDT_HDFEOS=$def_lis_hdfeos
75+
export LDT_HDF5=$def_lis_hdf5
76+
export LDT_MODESMF=$def_lis_modesmf
77+
export LDT_LIBESMF=$def_lis_libesmf
78+
export LDT_GDAL=$def_lvt_gdal
79+
export LDT_FORTRANGIS=$def_lvt_fortrangis
80+
export LDT_LIBGEOTIFF=$def_ldt_libgeotiff
81+
82+
export LVT_ARCH=linux_gfortran
83+
export LVT_FC=mpif90
84+
export LVT_CC=mpicc
85+
export LVT_JPEG=$def_lis_jpeg
86+
export LVT_OPENJPEG=$def_lis_openjpeg
87+
export LVT_ECCODES=$def_lis_eccodes
88+
export LVT_NETCDF=$def_lis_netcdf
89+
export LVT_HDF4=$def_lis_hdf4
90+
export LVT_HDFEOS=$def_lis_hdfeos
91+
export LVT_HDF5=$def_lis_hdf5
92+
export LVT_MODESMF=$def_lis_modesmf
93+
export LVT_LIBESMF=$def_lis_libesmf
94+
export LVT_GDAL=$def_lvt_gdal
95+
export LVT_FORTRANGIS=$def_lvt_fortrangis
96+
97+
export LANG=C
98+
export PATH=$LISF_LIBS_MPICH/bin:$PATH
99+
export LD_LIBRARY_PATH=$LISF_LIBS_PATH:$LD_LIBRARY_PATH
100+
101+
unset def_lis_jpeg
102+
unset def_lis_openjpeg
103+
unset def_lis_eccodes
104+
unset def_lis_netcdf
105+
unset def_lis_hdf4
106+
unset def_lis_hdfeos
107+
unset def_lis_hdf5
108+
unset def_lis_modesmf
109+
unset def_lis_libesmf
110+
unset def_lis_minpack
111+
unset def_lis_crtm
112+
unset def_lis_crtm_prof
113+
unset def_lis_cmem
114+
unset def_lis_lapack
115+
unset def_lvt_gdal
116+
unset def_lvt_fortrangis
117+
unset def_ldt_libgeotiff
118+
unset LISF_LIBS_MPICH
119+
unset LISF_LIBS_OPENJPEG
120+
unset LISF_LIBS_ECCODES
121+
unset LISF_LIBS_NETCDF
122+
unset LISF_LIBS_HDF4
123+
unset LISF_LIBS_HDFEOS
124+
unset LISF_LIBS_HDF5
125+
unset LISF_LIBS_ESMF
126+
unset LISF_LIBS_PROJ
127+
unset LISF_LIBS_GDAL
128+
unset LISF_LIBS_FORTRANGIS
129+
unset LISF_LIBS_LIBGEOTIFF
130+
unset LISF_LIBS_TIFF
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/usr/bin/env bash
2+
3+
sudo docker create --name dummy lisf_appdir
4+
sudo docker cp dummy:/home/workdir/LISF.AppDir .
5+
sudo docker rm -f dummy
6+
7+
sudo appimagetool LISF.AppDir

0 commit comments

Comments
 (0)