Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Community
feature-scripts
Commits
c0aae671
Commit
c0aae671
authored
Jun 29, 2017
by
Mark Olesen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ENH: add foamCreateModuleInclude
- original source from Ivan Spisso (CINECA) modified by OpenCFD
parent
c9c2fbcf
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
328 additions
and
0 deletions
+328
-0
modules/foamCreateModuleInclude
modules/foamCreateModuleInclude
+328
-0
No files found.
modules/foamCreateModuleInclude
0 → 100755
View file @
c0aae671
#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2017 OpenCFD Ltd.
# \\/ M anipulation | Copyright (C) 2016-2017 CINECA
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# Script
# foamCreateModuleInclude
#
# Description
# Script to create module settings.
# This is still incomplete, but can be a useful basis when using a module
# system.
#------------------------------------------------------------------------------
usage
()
{
exec
1>&2
while
[
"$#"
-ge
1
]
;
do
echo
"
$1
"
;
shift
;
done
cat
<<
USAGE
usage:
${
0
##*/
}
[OPTION] projectDir
options:
-output=file The output name (default: ModuleInclude.tcl)
-preload=file Specify (module) file to preload. Can use multiple times
-tmpdir=file The tmp directory to use.
-help print the usage
Create module settings for inclusion in a top-level openfoam module.
USAGE
exit
1
}
# Report error and exit
die
()
{
exec
1>&2
echo
echo
"Error encountered:"
while
[
"$#"
-ge
1
]
;
do
echo
"
$1
"
;
shift
;
done
echo
echo
"See '
${
0
##*/
}
-help' for usage"
echo
exit
1
}
#------------------------------------------------------------------------------
unset
optBackend optDebug preload projectDir
unset
moduleOutput moduleTmpDir
# Parse some options
while
[
"$#"
-gt
0
]
do
case
"
$1
"
in
''
)
# Ignore empty args
;;
-h
|
-help
)
usage
;;
-debug
)
optDebug
=
true
;;
-preload
=
*
)
preload
=
"
$preload
${
preload
:+
}${
1
#*=
}
"
;;
--recursive-backend--
)
optBackend
=
true
;;
--output
=
*
)
moduleOutput
=
"
${
1
#*=
}
"
;;
--tmpdir
=
*
)
moduleTmpDir
=
"
${
1
#*=
}
"
;;
-
*
)
die
"unknown option:
$1
"
;;
*
)
break
;;
esac
shift
done
[
"$#"
-eq
1
]
||
die
"missing projectDir, or too many arguments"
projectDir
=
"
${
1
%/
}
"
#------------------------------------------------------------------------------
# Filter accepts system paths only
syspath
()
{
local
path
set
--
$(
echo
"
${
1
}
"
|
tr
':'
'\n'
)
for
i
in
$@
do
case
$i
in
/bin
|
/usr/bin
|
/usr/lib
*
)
path
=
"
${
path
}${
path
:+:
}
$i
"
;;
esac
done
echo
"
$path
"
}
# Frontend: do all basic sanity checks in the front-end only
if
[
-z
"
$optBackend
"
]
then
# Check that it appears to be an OpenFOAM installation
[
-d
"
$projectDir
"
-a
-f
"
$projectDir
/etc/bashrc"
]
||
\
die
"Incorrect projectDir?
$projectDir
"
# Check preloads
for
file
in
$preloads
do
[
-f
"
$file
"
]
||
echo
"No such file to preload:
$file
"
1>&2
done
# Call itself with clean environment.
# Tag the start/end of the original PATH, LD_LIBRARY_PATH
exec env
-i
\
HOME
=
$HOME
\
USER
=
$USER
\
PATH
=
":MOD_PREPEND:
$(
syspath
$PATH
)
:MOD_APPEND:"
\
LD_LIBRARY_PATH
=
":MOD_PREPEND:
$(
syspath
$LD_LIBRARY_PATH
)
:MOD_APPEND:"
\
$0
\
--recursive-backend--
\
"
${
optDebug
:+-debug
}
"
\
"
${
output
:+-output
=
$moduleOutput
}
"
\
"
${
preloads
:+-preload
=
$preloads
}
"
\
"
${
moduleTmpDir
:+-tmpdir
=
$moduleTmpDir
}
"
\
$projectDir
exitCode
=
$?
# exec failed?
echo
"exec somehow failed?"
1>&2
exit
$exitCode
fi
#------------------------------------------------------------------------------
# Backend
:
${
moduleOutput
:
=ModuleInclude.tcl
}
:
${
moduleTmpDir
:
=
${
TMPDIR
:-
/tmp
}}
# Preload any/all modules
for
file
in
$preloads
do
[
-f
"
$file
"
]
&&
.
"
$file
"
''
done
# Temporary files
tmpFiles
=
"
$moduleTmpDir
/modules-
$USER
.
$$
"
if
[
-n
"
$optDebug
"
]
then
echo
"Preserving intermediate files:
$tmpFiles
.*"
1>&2
else
trap
'rm -f $tmpFiles.* 2>/dev/null; exit 0'
EXIT TERM INT
fi
#
# Initial snapshot of the environment, without any functions
#
env
|
sed
-n
-e
'/^[^ {}]/p'
|
sort
-f
>
$tmpFiles
.env.pre.log
alias
|
sort
-f
>
$tmpFiles
.alias.pre.log
# OpenFOAM settings
.
$projectDir
/etc/bashrc
''
echo
"Using openfoam:
$WM_PROJECT_DIR
"
1>&2
echo
"==>
$moduleOutput
"
1>&2
# Remove some cruft
unset
FOAM_JOB_DIR FOAM_RUN FOAM_SETTINGS FOAM_INST_DIR
unset
WM_PROJECT_USER_DIR WM_THIRD_PARTY_DIR
unset
SCOTCH_VERSION
foamOldDirs
=
"
$CEI_HOME
$BOOST_ARCH_PATH
$CGAL_ARCH_PATH
$FFTW_ARCH_PATH
$MPI_ARCH_PATH
$SCOTCH_ARCH_PATH
\
$FOAM_SITE_APPBIN
$FOAM_SITE_LIBBIN
$WM_PROJECT_SITE
\
$FOAM_USER_APPBIN
$FOAM_USER_LIBBIN
"
foamClean
=
$WM_PROJECT_DIR
/bin/foamCleanPath
if
[
-x
"
$foamClean
"
]
then
cleaned
=
$(
$foamClean
"
$PATH
"
"
$foamOldDirs
"
)
&&
PATH
=
"
$cleaned
"
cleaned
=
$(
$foamClean
"
$LD_LIBRARY_PATH
"
"
$foamOldDirs
"
)
\
&&
LD_LIBRARY_PATH
=
"
$cleaned
"
# May not have/need any third party at all
if
[
-n
"
$FOAM_EXT_LIBBIN
"
-a
!
-d
"
$FOAM_EXT_LIBBIN
"
]
then
cleaned
=
$(
$foamClean
"
$LD_LIBRARY_PATH
"
"
$FOAM_EXT_LIBBIN
"
)
\
&&
LD_LIBRARY_PATH
=
"
$cleaned
"
unset
FOAM_EXT_LIBBIN
fi
fi
unset
CEI_HOME
unset
ENSIGHT9_INPUT ENSIGHT9_READER
unset
ENSIGHT10_INPUT ENSIGHT10_READER
# Always consider site to be bogus. If needed, should be done elsewhere.
unset
FOAM_SITE_APPBIN FOAM_SITE_LIBBIN WM_PROJECT_SITE
# Make user directories more generic.
export
FOAM_USER_APPBIN
=
'$env(HOME)/OpenFOAM/$env(USER)-'
"
$WM_PROJECT_VERSION
/platforms/
$WM_OPTIONS
/bin"
export
FOAM_USER_LIBBIN
=
'$env(HOME)/OpenFOAM/$env(USER)-'
"
$WM_PROJECT_VERSION
/platforms/
$WM_OPTIONS
/lib"
# Remove non-essential aliases
unalias
wmDP 2>/dev/null
unalias
wmInt32 2>/dev/null
unalias
wmInt64 2>/dev/null
unalias
wmSP 2>/dev/null
unalias
wmSchedOff 2>/dev/null
unalias
wmSchedOn 2>/dev/null
unalias
wmSet 2>/dev/null
unalias
wmUnset 2>/dev/null
unalias
app 2>/dev/null
unalias
foamSite 2>/dev/null
unalias
lib 2>/dev/null
unalias
run 2>/dev/null
unalias
sol 2>/dev/null
unalias
src 2>/dev/null
unalias
tut 2>/dev/null
unalias
util 2>/dev/null
#------------------------------------------------
#
# Updated snapshot of the environment, without any functions
#
env
|
sed
-n
-e
'/^[^ {}]/p'
|
sort
-f
>
$tmpFiles
.env.post.log
alias
|
sort
-f
>
$tmpFiles
.alias.post.log
# Create a diff of the environment and aliases
diff
$tmpFiles
.env.pre.log
$tmpFiles
.env.post.log
>
$tmpFiles
.env.diff.log
diff
$tmpFiles
.alias.pre.log
$tmpFiles
.alias.post.log
>
$tmpFiles
.alias.diff.log
echo
"# -------------------"
>
$moduleOutput
# -------------------
# Environment other than PATH, LD_LIBRARY_PATH
echo
"# Environment"
>>
$moduleOutput
grep
'> '
$tmpFiles
.env.diff.log |
\
sed
\
-e
'/^> *PATH=/d'
\
-e
'/^> *LD_LIBRARY_PATH=/d'
\
-e
's/^>/setenv /'
\
-e
's/=/ "/'
-e
's/$/\"/'
>>
$moduleOutput
# -------------------
# Changes in PATH - without junk and system directories
echo
"# PATH"
>>
$moduleOutput
sed
-ne
's/^< *PATH=//p'
$tmpFiles
.env.diff.log |
tr
':'
'\n'
>
$tmpFiles
.path.pre.log
sed
-ne
's/^> *PATH=//p'
$tmpFiles
.env.diff.log |
tr
':'
'\n'
>
$tmpFiles
.path.post.log
grep
-vxFf
$tmpFiles
.path.pre.log
$tmpFiles
.path.post.log |
\
sed
\
-e
'\@^/bin$@d'
\
-e
'\@^/usr/bin$@d'
\
-e
'\@^/usr/local/bin$@d'
\
-e
'\@^[.]$@d'
\
-e
'\@^$@d'
\
>
$tmpFiles
.path.diff.log
sed
\
-e
's/^/append-path PATH "/'
\
-e
's/$/\"/'
\
$tmpFiles
.path.diff.log
>>
$moduleOutput
# -------------------
# -------------------
# Changes in LD_LIBRARY_PATH - without junk and system directories
echo
"# LD_LIBRARY_PATH"
>>
$moduleOutput
sed
-ne
's/^< *LD_LIBRARY_PATH=//p'
$tmpFiles
.env.diff.log |
tr
':'
'\n'
>
$tmpFiles
.ldpath.pre.log
sed
-ne
's/^> *LD_LIBRARY_PATH=//p'
$tmpFiles
.env.diff.log |
tr
':'
'\n'
>
$tmpFiles
.ldpath.post.log
grep
-vxFf
$tmpFiles
.ldpath.pre.log
$tmpFiles
.ldpath.post.log |
\
sed
\
-e
'\@^/lib.*$@d'
\
-e
'\@^/usr/lib.*$@d'
\
-e
'\@^/usr/local/lib.*$@d'
\
-e
'\@^[.]$@d'
\
-e
'\@^$@d'
\
>
$tmpFiles
.ldpath.diff.log
sed
\
-e
's/^/append-path LD_LIBRARY_PATH "/'
\
-e
's/$/\"/'
\
$tmpFiles
.ldpath.diff.log
>>
$moduleOutput
# -------------------
# aliases
# Some diff give "> alias". Others give ">", needed extended regular expressions '-r'
echo
"# aliases"
>>
$moduleOutput
cat
$tmpFiles
.alias.diff.log |
\
sed
-r
-n
-e
's/^> (alias)?/set-alias /p'
|
\
sed
-e
"s/='/
\"
/"
-e
"s/'/
\"
/g"
>>
$moduleOutput
echo
"# -------------------"
>>
$moduleOutput
# -----------------------------------------------------------------------------
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment