|
1 | 1 | #!/bin/bash |
2 | 2 |
|
3 | | -set -e |
4 | | - |
5 | 3 | if [ $# -ne 2 ]; then |
6 | 4 | echo "Usage: $0 <name>-<version> <prefix>" |
7 | 5 | exit 1 |
8 | 6 | fi |
9 | | -PKG=$1 |
10 | | -PREFIX=$2 |
11 | 7 |
|
12 | | -PKG_NAME=`echo $PKG | sed 's/-[^-]*$//g'` |
13 | | -PKG_VERSION=`echo $PKG | sed 's/.*-//g'` |
| 8 | +set -eu |
| 9 | + |
| 10 | +PKG="$1" |
| 11 | +PREFIX="$2" |
| 12 | + |
| 13 | +PKG_NAME="${PKG%-*}" |
| 14 | +PKG_VERSION="${PKG##*-}" |
14 | 15 |
|
15 | 16 | CONFIG_OPTIONS= |
16 | 17 | PRECONFIG_CMD= |
17 | 18 |
|
18 | | -if [ x$PKG_NAME == 'xmodules' ] && [ x$PKG_VERSION == 'x3.2.10' ]; then |
| 19 | +if [ "$PKG_NAME" == 'modules' ] && [ "$PKG_VERSION" == '3.2.10' ]; then |
19 | 20 | PKG_URL="http://prdownloads.sourceforge.net/modules/${PKG}.tar.gz" |
20 | 21 | BACKUP_PKG_URL="https://easybuilders.github.io/easybuild/files/${PKG}.tar.gz" |
21 | | - export PATH=$PREFIX/Modules/$PKG_VERSION/bin:$PATH |
22 | | - export MOD_INIT=$HOME/Modules/$PKG_VERSION/init/bash |
| 22 | + export PATH="$PREFIX/Modules/$PKG_VERSION/bin:$PATH" |
| 23 | + export MOD_INIT="$PREFIX/Modules/$PKG_VERSION/init/bash" |
23 | 24 |
|
24 | | -elif [ x$PKG_NAME == 'xmodules' ]; then |
| 25 | +elif [ "$PKG_NAME" == 'modules' ]; then |
25 | 26 | PKG_URL="http://prdownloads.sourceforge.net/modules/${PKG}.tar.gz" |
26 | | - export PATH=$PREFIX/bin:$PATH |
27 | | - export MOD_INIT=$HOME/init/bash |
| 27 | + export PATH="$PREFIX/bin:$PATH" |
| 28 | + export MOD_INIT="$PREFIX/init/bash" |
28 | 29 |
|
29 | | -elif [ x$PKG_NAME == 'xlua' ]; then |
| 30 | +elif [ "$PKG_NAME" == 'lua' ]; then |
30 | 31 | PKG_URL="http://downloads.sourceforge.net/project/lmod/${PKG}.tar.gz" |
31 | 32 | BACKUP_PKG_URL="https://easybuilders.github.io/easybuild/files/${PKG}.tar.gz" |
32 | 33 | PRECONFIG_CMD="make clean" |
33 | 34 | CONFIG_OPTIONS='--with-static=yes' |
34 | | - export PATH=$PWD/$PKG:$PREFIX/bin:$PATH |
| 35 | + export PATH="$PWD/$PKG:$PREFIX/bin:$PATH" |
35 | 36 |
|
36 | | -elif [ x$PKG_NAME == 'xLmod' ]; then |
| 37 | +elif [ "$PKG_NAME" == 'Lmod' ]; then |
37 | 38 | PKG_URL="https://github.com/TACC/Lmod/archive/${PKG_VERSION}.tar.gz" |
38 | | - export PATH=$PREFIX/lmod/$PKG_VERSION/libexec:$PATH |
39 | | - export MOD_INIT=$HOME/lmod/$PKG_VERSION/init/bash |
| 39 | + export PATH="$PREFIX/lmod/$PKG_VERSION/libexec:$PATH" |
| 40 | + export MOD_INIT="$PREFIX/lmod/$PKG_VERSION/init/bash" |
40 | 41 |
|
41 | | -elif [ x$PKG_NAME == 'xmodules-tcl' ]; then |
| 42 | +elif [ "$PKG_NAME" == 'modules-tcl' ]; then |
42 | 43 | # obtain tarball from upstream via http://modules.cvs.sourceforge.net/viewvc/modules/modules/?view=tar&revision=1.147 |
43 | 44 | PKG_URL="https://easybuilders.github.io/easybuild/files/modules-tcl-${PKG_VERSION}.tar.gz" |
44 | | - export MODULESHOME=$PREFIX/$PKG/tcl # required by init/bash source script |
45 | | - export PATH=$MODULESHOME:$PATH |
46 | | - export MOD_INIT=$MODULESHOME/init/bash.in |
| 45 | + export MODULESHOME="$PREFIX/$PKG/tcl" # required by init/bash source script |
| 46 | + export PATH="$MODULESHOME:$PATH" |
| 47 | + export MOD_INIT="$MODULESHOME/init/bash.in" |
47 | 48 | else |
48 | 49 | echo "ERROR: Unknown package name '$PKG_NAME'" |
49 | 50 | exit 2 |
50 | 51 | fi |
51 | 52 |
|
52 | 53 | echo "Installing ${PKG} @ ${PREFIX}..." |
53 | | -mkdir -p ${PREFIX} |
54 | | -set +e |
55 | | -wget ${PKG_URL} && tar xfz *${PKG_VERSION}.tar.gz |
56 | | -if [ $? -ne 0 ] && [ ! -z $BACKUP_PKG_URL ]; then |
57 | | - rm -f *${PKG_VERSION}.tar.gz |
58 | | - wget ${BACKUP_PKG_URL} && tar xfz *${PKG_VERSION}.tar.gz |
| 54 | +mkdir -p "${PREFIX}" |
| 55 | +if ! wget "${PKG_URL}" && [ -n "$BACKUP_PKG_URL" ]; then |
| 56 | + rm -f ./*"${PKG_VERSION}".tar.gz |
| 57 | + wget "${BACKUP_PKG_URL}" |
59 | 58 | fi |
60 | | -set -e |
| 59 | + |
| 60 | +tar xfz ./*"${PKG_VERSION}".tar.gz |
| 61 | +rm ./*"${PKG_VERSION}".tar.gz |
61 | 62 |
|
62 | 63 | # environment-modules needs a patch to work with Tcl8.6 |
63 | | -if [ x$PKG_NAME == 'xmodules' ] && [ x$PKG_VERSION == 'x3.2.10' ]; then |
| 64 | +if [ "$PKG_NAME" == 'modules' ] && [ "$PKG_VERSION" == '3.2.10' ]; then |
64 | 65 | wget -O 'modules-tcl8.6.patch' 'https://easybuilders.github.io/easybuild/files/modules-3.2.10-tcl8.6.patch' |
65 | | - patch ${PKG}/cmdModule.c modules-tcl8.6.patch |
| 66 | + patch "${PKG}/cmdModule.c" modules-tcl8.6.patch |
66 | 67 | fi |
67 | 68 |
|
68 | | -if [ x$PKG_NAME == 'xmodules-tcl' ]; then |
69 | | - mv modules $PREFIX/${PKG} |
| 69 | +if [ "$PKG_NAME" == 'modules-tcl' ]; then |
| 70 | + mv modules "$PREFIX/${PKG}" |
70 | 71 | else |
71 | | - cd ${PKG} |
72 | | - if [[ ! -z $PRECONFIG_CMD ]]; then |
73 | | - eval ${PRECONFIG_CMD} |
| 72 | + cd "${PKG}" |
| 73 | + if [[ -n "$PRECONFIG_CMD" ]]; then |
| 74 | + eval "${PRECONFIG_CMD}" |
74 | 75 | fi |
75 | | - ./configure $CONFIG_OPTIONS --prefix=$PREFIX && make && make install |
| 76 | + ./configure $CONFIG_OPTIONS --prefix="$PREFIX" && make && make install |
76 | 77 | cd - > /dev/null |
| 78 | + rm -r "${PKG}" |
77 | 79 | fi |
| 80 | + |
| 81 | +set +eu |
0 commit comments