-
Notifications
You must be signed in to change notification settings - Fork 0
/
bootstrap
executable file
·101 lines (89 loc) · 2.48 KB
/
bootstrap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/bin/bash -e
REPO="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# two versions of module available: git and latest stable
#modulever=git
modulever=3.2.10
# check if module command is available (eg clusters)
modulemiss=`type module >/dev/null 2>&1 && echo no || echo yes`
echo "REPO: ${REPO}"
echo "modules missing on system = $modulemiss"
# directory skeleton
mkdir -pv $REPO/{modulefiles,buildfiles,src,opt}
if [ "x${modulemiss}" = "xyes" ]; then
# download modules
pushd src
if [ "x${modulever}" = "xgit" ]; then
if [ -d "modules-git" ]; then
git -C modules-git pull
else
git clone git://git.code.sf.net/p/modules/git modules-git
fi
pushd modules-git
autoreconf -fi
popd
else
_baseurl=https://downloads.sourceforge.net/project/modules/Modules
moduleurl=$_baseurl/modules-${modulever}/modules-${modulever}.tar.bz2
if [ ! -f "modules-${modulever}.tar.bz2" ]; then
curl -O -L ${moduleurl}
fi
if [ -d "modules-${modulever}" ]; then
rm -rvf modules-${modulever}
fi
tar xvfj modules-${modulever}.tar.bz2
fi
# build modules
cd modules-${modulever}
[[ -d "build" ]] && rm -rf build
mkdir build
cd build
../configure \
--prefix=$REPO/opt/modules \
CPPFLAGS=-DUSE_INTERP_ERRORLINE
#--with-module-path=$REPO/opt \
#--with-version-path=$REPO/modules/versions \
make install
popd
if [ "x${modulever}" = "xgit" ]; then
MODULES=opt/modules/${modulever}
MODULESHOME=$REPO/$MODULES/share
modulever=3.3.a
else
MODULES=opt/modules/Modules/${modulever}
MODULESHOME=$REPO/$MODULES
fi
# cleanup
rm -rf $REPO/src/modules-${modulever}
fi
# private modules
cp ${MODULESHOME}/modulefiles/null $REPO/modulefiles
# create local environment file
cat >$REPO/pkgs.conf <<EOL
REPO=$REPO
EOL
# add a few lines to setup modules in case not available externally
if [ "x${modulemiss}" = "xyes" ]; then
cat >>$REPO/pkgs.conf <<EOL
# setup modules if not externally provided
if [ -z "\${MODULES_SOURCED+x}" ]; then
# safe-guard
export MODULES_SOURCED=yes
# init modules
source \$REPO/$MODULES/init/bash
export REPO
# this is required to have modules available
# when calling module from makepkg after
# module being sourced
export -f module
fi
EOL
fi
# set-up modulefiles directory
cat >>$REPO/pkgs.conf <<EOL
module use-append \$REPO/modulefiles
export REPO
# this is required to have modules available
# when calling module from makepkg after
# module being sourced
export -f module
EOL