From 43407380f9d21022a2379a5dc550cb5bb42db073 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@Germany> Date: Tue, 6 Jul 2010 16:33:25 +0200 Subject: [PATCH] ENH: improve debian handling in foamEtcFile - remove all corresponding logic from foamExec --- bin/foamEtcFile | 116 ++++++++++++++++++++++++++++++++++-------------- bin/foamExec | 68 +++++----------------------- 2 files changed, 95 insertions(+), 89 deletions(-) diff --git a/bin/foamEtcFile b/bin/foamEtcFile index 1af5ae9bdd0..7cea6358856 100755 --- a/bin/foamEtcFile +++ b/bin/foamEtcFile @@ -52,10 +52,9 @@ options: -list list the directories to be searched -mode <mode> any combination of u(user), g(group), o(other) -prefix <dir> specify an alternative installation prefix - (default: $WM_PROJECT_INST_DIR) -quiet suppress all normal output -version <ver> specify an alternative OpenFOAM version - (default: $WM_PROJECT_VERSION) + in the form Maj.Min.Rev (eg, 1.7.0) -help print the usage Locate user/group/shipped file with semantics similar to the @@ -73,20 +72,64 @@ USAGE exit 1 } +# +# This script must exist in <foamInstall>/OpenFOAM-<VERSION>/bin/ +# or <foamInstall>/openfoam<VERSION>/bin/ (for the debian version) +# +#------------------------------------------------------------------------------- -# default mode is 'ugo' -mode=ugo +# the bindir: +binDir="${0%/*}" + +# the project dir: +projectDir="${binDir%/bin}" -# default prefix/version correspond to the active values, -# but could also extract from the $0 value. -prefix="$WM_PROJECT_INST_DIR" -version="$WM_PROJECT_VERSION" +# the prefix dir (same as foamInstall): +prefixDir="${projectDir%/*}" + +# the name used for the project directory +projectDirName="${projectDir##*/}" + +# version number used for debian packaging +unset versionNum + +# +# handle standard and debian naming convention +# +case "$projectDirName" in +OpenFOAM-*) # standard naming convention OpenFOAM-<VERSION> + version="${projectDirName##OpenFOAM-}" + ;; -# default naming convention is "OpenFOAM-<VERSION>" -projectNamePrefix="${WM_PROJECT:-OpenFOAM}-" +openfoam[0-9]*) # debian naming convention 'openfoam<VERSION>' + versionNum="${projectDirName##openfoam}" + case "$versionNum" in + ??) # convert 2 digit version number to decimal delineated + version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)@\1.\2@') + ;; + ???) # convert 3 digit version number to decimal delineated + version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)\(.\)@\1.\2.\3@') + ;; + ????) # convert 4 digit version number to decimal delineated + version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)\(.\)\(.\)@\1.\2.\3.\4@') + ;; + *) # failback - use current environment setting + version="$WM_PROJECT_VERSION" + ;; + esac + ;; +*) + echo "Error : unknown/unsupported naming convention" + exit 1 + ;; +esac + +# default mode is 'ugo' +mode=ugo unset listOpt quietOpt + # parse options while [ "$#" -gt 0 ] do @@ -96,7 +139,6 @@ do ;; -l | -list) listOpt=true - shift ;; -m | -mode) [ "$#" -ge 2 ] || usage "'$1' option requires an argument" @@ -110,21 +152,29 @@ do usage "'$1' option with invalid mode '$mode'" ;; esac - shift 2 + shift ;; -p | -prefix) [ "$#" -ge 2 ] || usage "'$1' option requires an argument" - prefix="$2" - shift 2 + prefixDir="$2" + shift ;; -q | -quiet) quietOpt=true - shift ;; -v | -version) [ "$#" -ge 2 ] || usage "'$1' option requires an argument" version="$2" - shift 2 + # convert x.y.z -> xyz version (if installation looked like debian) + if [ -n "$versionNum" ] + then + versionNum=$(echo "$version" | sed -e 's@\.@@g') + fi + shift + ;; + --) + shift + break ;; -*) usage "unknown option: '$*'" @@ -133,23 +183,16 @@ do break ;; esac + shift done -# -# handle standard and debian naming convention -# -case "$version" in -OpenFOAM-*) # standard naming convention OpenFOAM-<VERSION> - projectNamePrefix="OpenFOAM-" - version="${version##OpenFOAM-}" - ;; - -openfoam[0-9]*) # debian naming convention 'openfoam<VERSION>' - projectNamePrefix="openfoam" - version="${version##openfoam}" - ;; -esac +# debugging: +# echo "Installed locations:" +# for i in projectDir prefixDir projectDirName version versionNum +# do +# eval echo "$i=\$$i" +# done # Save the essential bits of information: @@ -167,14 +210,21 @@ esac case "$mode" in *g*) # group - dirList="$dirList $prefix/site/$version" - dirList="$dirList $prefix/site" + dirList="$dirList $prefixDir/site/$version" + dirList="$dirList $prefixDir/site" ;; esac case "$mode" in *o*) # other (shipped) - dirList="$dirList $prefix/$projectNamePrefix$version/etc" + if [ -n "$versionNum" ] + then + # debian packaging + dirList="$dirList $prefixDir/openfoam$versionNum/etc" + else + # standard packaging + dirList="$dirList $prefixDir/${WM_PROJECT:-OpenFOAM}-$version/etc" + fi ;; esac set -- $dirList diff --git a/bin/foamExec b/bin/foamExec index 05cf2539388..1e1d438dfae 100755 --- a/bin/foamExec +++ b/bin/foamExec @@ -35,10 +35,8 @@ # mpirun -np <nProcs> \ # foamExec -v <foamVersion> <foamCommand> ... -parallel # -# Note: - not consistent with foamEtcFiles - does not search 'site' -# directories -# - version switch -v will not work with the debian naming -# openfoamXXX +# SeeAlso +# foamEtcFile #------------------------------------------------------------------------------ usage() { while [ "$#" -ge 1 ]; do echo "$1"; shift; done @@ -48,7 +46,7 @@ Usage: ${0##*/} [OPTION] <application> ... options: -version <ver> specify an alternative OpenFOAM version - (default: taken from \$0 parameter) + pass through to foamEtcFile -help this usage * run a particular OpenFOAM version of <application> @@ -57,54 +55,14 @@ USAGE exit 1 } +# # This script must exist in <foamInstall>/OpenFOAM-<VERSION>/bin/ # or <foamInstall>/openfoam<VERSION>/bin/ (for the debian version) # +# foamEtcFile is found in the same directory +#------------------------------------------------------------------------------- -# the bindir: -binDir="${0%/*}" - -# the project dir: -projectDir="${binDir%/bin}" -export WM_PROJECT_DIR="$projectDir" - -# the prefix dir (same as foamInstall): -prefixDir="${projectDir%/*}" -foamInstall="$prefixDir" - -# the name used for the project directory -projectDirName="${projectDir##*/}" - -# -# handle standard and debian naming convention -# -case "$projectDirName" in -OpenFOAM-*) # standard naming convention OpenFOAM-<VERSION> - projectNamePrefix="OpenFOAM-" - version="${projectDirName##OpenFOAM-}" - versionNum=$version - ;; - -openfoam[0-9]*) # debian naming convention 'openfoam<VERSION>' - projectNamePrefix="openfoam" - versionNum="${projectDirName##openfoam}" - version=$WM_PROJECT_DIR - ;; -*) - echo "Error : unknown/unsupported naming convention" - exit 1 - ;; -esac - - -# debugging: -# echo "Installed locations:" -# for i in projectDir prefixDir foamInstall projectDirName version versionNum -# do -# eval echo "$i=\$$i" -# done - - +unset etcOpts # parse options while [ "$#" -gt 0 ] do @@ -112,11 +70,10 @@ do -h | -help) usage ;; - -v | version) + -v | -version) [ "$#" -ge 2 ] || usage "'$1' option requires an argument" - version=$2 - versionNum=$version - shift 2 + etcOpts="-version $2" + shift ;; --) shift @@ -129,14 +86,13 @@ do break ;; esac + shift done [ "$#" -ge 1 ] || usage "no application specified" - # find OpenFOAM settings (bashrc) -foamDotFile="$($binDir/foamEtcFile -version $version bashrc)" -[ $? -eq 0 ] || { +foamDotFile="$(${0%/*}/foamEtcFile $etcOpts bashrc)" || { echo "Error : bashrc file could not be found for OpenFOAM-$version" 1>&2 exit 1 } -- GitLab