Added support for multiple modules at a time and exclude pattern.
This commit is contained in:
parent
5d51934894
commit
d710e1f528
1 changed files with 90 additions and 54 deletions
|
@ -1,24 +1,46 @@
|
||||||
#!/bin/bash -l
|
#!/bin/bash -l
|
||||||
#
|
#
|
||||||
# Copyright (c) 2012-2015 Christoph Niethammer <niethammer@hlrs.de>
|
# Copyright (c) 2012-2016 Christoph Niethammer <niethammer@hlrs.de>
|
||||||
#
|
#
|
||||||
# Script checking the module environment for problems during module loading/unloading
|
# Script checking the module environment for problems during module loading/unloading
|
||||||
#
|
#
|
||||||
# Usage:
|
|
||||||
# check_modules.sh [MODULE]
|
function print_usage() {
|
||||||
#
|
echo <<EOT
|
||||||
# Options:
|
Script checking the module environment for problems during module loading/unloading
|
||||||
# MODULE May be any valid module path as used for 'module avail [MODULE]'
|
usage: $0 [MODULE_PATTERN] [--exclude PATTERN]"
|
||||||
#
|
EOT
|
||||||
|
}
|
||||||
|
|
||||||
# Command line options:
|
# Command line options:
|
||||||
moduleclass=$1 # check only subset of modules
|
declare -a moduleclasses # check only subset of modules
|
||||||
|
declare -a exclude_pattern # exclude modules with given pattern, e.g. nightly builds
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]
|
||||||
|
do
|
||||||
|
key="$1"
|
||||||
|
case $key in
|
||||||
|
--exclude-pattern|--exclude)
|
||||||
|
exclude_patterns+=($2)
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-h|--help)
|
||||||
|
print_usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
moduleclasses+=($1)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
# definitions for esear color output to display
|
# definitions for esear color output to display
|
||||||
Color_Off='\e[0m' # Text Reset
|
Color_Off='\e[0m' # Text Reset
|
||||||
IGreen='\e[0;92m' # Intense Green
|
IGreen='\e[0;92m' # Intense Green
|
||||||
IRed='\e[0;91m' # Intense Red
|
IRed='\e[0;91m' # Intense Red
|
||||||
|
|
||||||
|
echo Moduleclasses: ${moduleclasses[@]}
|
||||||
|
echo Exclude: ${exclude_patterns[@]}
|
||||||
# intermediate files, logfiles
|
# intermediate files, logfiles
|
||||||
LOGDIR=${LOGDIR:=$PWD}
|
LOGDIR=${LOGDIR:=$PWD}
|
||||||
tmpdir=/tmp/check_modules-$USER
|
tmpdir=/tmp/check_modules-$USER
|
||||||
|
@ -48,7 +70,20 @@ echo "Environment:" >> $logfile
|
||||||
cat $module_clean_env_file >> $logfile
|
cat $module_clean_env_file >> $logfile
|
||||||
echo "--------------------" >> $logfile
|
echo "--------------------" >> $logfile
|
||||||
|
|
||||||
for m_original in $(module av -t $moduleclass 2>&1); do
|
for moduleclass in ${moduleclasses[@]}
|
||||||
|
do
|
||||||
|
for m_original in $(module av -t $moduleclass 2>&1); do
|
||||||
|
match=0
|
||||||
|
for exclude_pattern in ${exclude_patterns[@]}
|
||||||
|
do
|
||||||
|
if [[ "$m_original" =~ "$exclude_pattern" ]]; then
|
||||||
|
echo MATCH: $exclude_pattern
|
||||||
|
match=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ $match == 1 ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
if [[ $m_original =~ ^[A-Za-z] ]]; then # skip any non module line in output
|
if [[ $m_original =~ ^[A-Za-z] ]]; then # skip any non module line in output
|
||||||
m=$(echo $m_original | sed -e 's/(.*)//') # Remove aliases e.g. (default)
|
m=$(echo $m_original | sed -e 's/(.*)//') # Remove aliases e.g. (default)
|
||||||
echo -n "Checking $m_original ... "
|
echo -n "Checking $m_original ... "
|
||||||
|
@ -102,6 +137,7 @@ for m_original in $(module av -t $moduleclass 2>&1); do
|
||||||
|
|
||||||
echo >>$logfile 2>&1
|
echo >>$logfile 2>&1
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
# clean up file storing the initial environment
|
# clean up file storing the initial environment
|
||||||
|
|
Loading…
Reference in a new issue