-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmodules.sh
108 lines (88 loc) · 2.89 KB
/
modules.sh
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
101
102
103
104
105
106
107
108
LOADED_MODULES_BAK=`echo $LOADEDMODULES | sed 's/:/ /g'`
function load_modules()
{
module purge
LOADED_MODULES=`echo $LOADEDMODULES | sed 's/:/ /g'`
for module in $1
do
echo -n "Trying to load $module... "
module_name=`echo $module | awk -F'/' '{print $1}'`
module_version=`echo $module | awk -F'/' '{print $2}'`
if echo $LOADED_MODULES | grep -vq "$module_name"
then
# module has not been loaded yet
module load $module
echo "done (loaded)"
else
if echo $LOADED_MODULES | grep -q "$module"
then
echo "done (already loaded)"
else
if [[ "$module_version" == "" ]]
then
echo "done (already loaded, unversioned)"
else
echo ""
echo "A module named $module_name is already loaded with a different version and will conflict"
module list
exit 1
fi
fi
fi
done
module list
}
function create_modulefile()
{
# first argument is name
# second argument is version
# third argument are the required modules
# fourth argument is the root directory
mkdir -p $BASE_PATH/modulefiles/$1
cat << EOF > $BASE_PATH/modulefiles/$1/$2
#%Module1.0
##
## Required internal variables
set name HPX
set version 0.9.11
set root $4
# List conflicting modules here
conflict $1
## List prerequesite modules here
EOF
for req in $3
do
echo "module load $req" >> $BASE_PATH/modulefiles/$1/$2
done
cat << EOF >> $BASE_PATH/modulefiles/$1/$2
## Required for SVN hook to generate SWDB entry
set fullname HPX
set externalurl https://github.com/STEllAR-GROUP/hpx
set nerscurl https://www.nersc.gov/users/computational-systems/testbeds/babbage/hpx-on-babbage-and-edison/
set maincategory libraries
set subcategory "programming"
set description "HPX - A general purpose C++ runtime system for parallel and distributed applications of any scale"
## Required for "module help ..."
proc ModulesHelp { } {
global description nerscurl externalurl
puts stderr "Description - \$description"
puts stderr "NERSC Docs - \$nerscurl"
puts stderr "Other Docs - \$externalurl"
}
## Required for "module display ..." and SWDB
module-whatis "\$description"
## Software-specific settings exported to user environment
setenv HPX_ROOT "\$root"
setenv HPX_DIR "\$root/lib/cmake/HPX"
prepend-path CMAKE_PREFIX_PATH \$root
prepend-path LD_LIBRARY_PATH \$root/lib
prepend-path PATH \$root/bin
## Log "module load ..." commands
if [ module-info mode load ] {
set usgsbin /global/common/shared/usg/sbin
if [ expr [ file exists \$usgsbin/logmod ] ] {
exec \$usgsbin/logmod \${name} \${version}
}
}
EOF
}