mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: update, cleanup foam packing routines
- update packing for FOAM_EXT_LIBBIN and newer FOAM_APPBIN - pack OpenFOAM source via 'git archive' for consistency with the git repository (use -nogit option to revert to manual packing) - combine foamPackBin + foamPackThirdPartyBin - add foamPackThirdPartyBinAll (like foamPackBinAll) - relocate service scripts into bin/tools - use more standard 'tgz' instead of 'gtgz'
This commit is contained in:
121
bin/tools/foamListBinDirs
Executable file
121
bin/tools/foamListBinDirs
Executable file
@ -0,0 +1,121 @@
|
||||
#!/bin/sh
|
||||
#------------------------------------------------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 1991-2011 OpenCFD Ltd.
|
||||
# \\/ M anipulation |
|
||||
#-------------------------------------------------------------------------------
|
||||
# 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
|
||||
# foamListBinDirs <directory> <archOptions>
|
||||
#
|
||||
# Description
|
||||
# Lists directories containing binary files of OpenFOAM
|
||||
#
|
||||
# Note
|
||||
# Not normally called directly by the user.
|
||||
#------------------------------------------------------------------------------
|
||||
toolsDir="${0%/*}" # this script is already located in the tools/ directory
|
||||
|
||||
[ $# -eq 2 ] || {
|
||||
cat <<USAGE 1>&2
|
||||
Usage : ${0##*/} <packDir> <archOptions>
|
||||
|
||||
* Lists directories containing binary files for OpenFOAM
|
||||
|
||||
The value of 'archOptions' normally corresponds to \$WM_OPTIONS
|
||||
The current value of \$WM_OPTIONS = $WM_OPTIONS
|
||||
|
||||
USAGE
|
||||
exit 1
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
packDir="$1"
|
||||
|
||||
# same as $WM_OPTIONS - eg, 'linux64GccDPOpt'
|
||||
archOptions="$2"
|
||||
|
||||
# base arch (w/o precision, optimization, etc)
|
||||
# same as "$WM_ARCH$WM_COMPILER"
|
||||
archCompiler=$(echo "$archOptions" | sed -e 's@[DS]P.*$@@')
|
||||
|
||||
# same as $WM_ARCH - eg, 'linux64'
|
||||
# TODO: only works for Gcc, Icc, Clang
|
||||
archOS=$(echo "$archOptions" | sed -e 's@[GI]cc.*$@@' -e 's@Clang.*$@@')
|
||||
|
||||
# links for 32-bit version, eg convert linux64 -> linux-64
|
||||
arch3264=$(echo "$archOS" | sed -e 's@64@-64@')
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# check for essential directories
|
||||
for dir in $packDir $packDir/lib/$archOptions
|
||||
do
|
||||
[ -d $dir ] || {
|
||||
echo "Error: directory $dir does not exist" 1>&2
|
||||
exit 1
|
||||
}
|
||||
done
|
||||
|
||||
# check new/old places for executables - same as $FOAM_APPBIN
|
||||
[ -d $packDir/bin/$archOptions -o -d $packDir/applications/bin/$archOptions ] || {
|
||||
cat <<BIN_CHECK 1>&2
|
||||
Error: no directory for executables exists:
|
||||
$packDir/bin/$archOptions
|
||||
$packDir/applications/bin/$archOptions
|
||||
BIN_CHECK
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# list of directories
|
||||
dirList=$(
|
||||
for dir in \
|
||||
$packDir/bin/$archOptions \
|
||||
$packDir/lib/$archOptions \
|
||||
$packDir/applications/bin/$archOptions \
|
||||
$packDir/wmake/bin/$archCompiler \
|
||||
$packDir/wmake/bin/$archOS \
|
||||
$packDir/wmake/rules/General \
|
||||
$packDir/wmake/rules/$archCompiler \
|
||||
$packDir/wmake/rules/$archOS \
|
||||
;
|
||||
do
|
||||
[ -d $dir ] && echo $dir
|
||||
done
|
||||
)
|
||||
|
||||
|
||||
cat <<INFO 1>&2
|
||||
-------------------------------------------------------------------------------
|
||||
Packing $archOptions ($archCompiler) port of $packDir
|
||||
archOS = $archOS
|
||||
32bit archOS = $arch3264
|
||||
|
||||
dirs:
|
||||
$(echo ${dirList:-NONE})
|
||||
|
||||
INFO
|
||||
|
||||
echo "$dirList"
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
93
bin/tools/foamListSourceFiles
Executable file
93
bin/tools/foamListSourceFiles
Executable file
@ -0,0 +1,93 @@
|
||||
#!/bin/sh
|
||||
#------------------------------------------------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 1991-2011 OpenCFD Ltd.
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# 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
|
||||
# foamListSourceFiles <directory>
|
||||
#
|
||||
# Description
|
||||
# Lists source files and Make/{files,options} in given directory
|
||||
#
|
||||
# Note
|
||||
# Not normally called directly by the user.
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
[ $# -eq 1 ] || {
|
||||
cat <<USAGE 1>&2
|
||||
Usage : ${0##*/} directory
|
||||
|
||||
* Lists source files and Make/{files,options} in given directory
|
||||
|
||||
USAGE
|
||||
exit 1
|
||||
}
|
||||
|
||||
# canonical form (no double and no trailing dashes)
|
||||
packDir=$(echo "$1" | sed -e 's@//*@/@g' -e 's@/$@@')
|
||||
|
||||
# check for essential directories
|
||||
[ -d $packDir ] || {
|
||||
echo "Error: directory $packDir does not exist" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# list of files but excluding
|
||||
# - dependent files (dep, obj, lib), archives
|
||||
# - exclude Doxygen documentation etc
|
||||
#
|
||||
|
||||
find -H $packDir \
|
||||
! -type d \
|
||||
\( -type f -o -type l \) \
|
||||
! -name "*~" \
|
||||
-a ! -name ".*~" \
|
||||
-a ! -name "*.orig" \
|
||||
-a ! -name "*.dep" \
|
||||
-a ! -name "*.o" \
|
||||
-a ! -name "*.so" \
|
||||
-a ! -name "*.a" \
|
||||
-a ! -name "*.tar" \
|
||||
-a ! -name "*.tar.gz" \
|
||||
-a ! -name "*.tgz" \
|
||||
-a ! -name "core" \
|
||||
-a ! -name "core.[1-9]*" \
|
||||
-a ! -name "libccmio*" \
|
||||
| sed \
|
||||
-e "\@$packDir/lib/@d" \
|
||||
-e '\@/\.git/@d' \
|
||||
-e '\@/\.tags/@d' \
|
||||
-e '\@/README\.org@d' \
|
||||
-e '\@/bin/[^/]*/@{ \@/bin/tools/@!d }' \
|
||||
-e '\@/lib/@d' \
|
||||
-e '\@/platforms/@d' \
|
||||
-e '\@/t/@d' \
|
||||
-e '\@/Make[.A-Za-z]*/[^/]*/@d' \
|
||||
-e '\@/[Dd]oxygen/html/@d' \
|
||||
-e '\@/download/@d' \
|
||||
-e '\@/libccmio-.*/@d' \
|
||||
-e '\@/debian/@d'
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
121
bin/tools/foamListThirdPartyBinDirs
Executable file
121
bin/tools/foamListThirdPartyBinDirs
Executable file
@ -0,0 +1,121 @@
|
||||
#!/bin/sh
|
||||
#------------------------------------------------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
|
||||
# \\/ M anipulation |
|
||||
#-------------------------------------------------------------------------------
|
||||
# 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
|
||||
# foamListThirdPartyBinDirs <directory> <archOptions>
|
||||
#
|
||||
# Description
|
||||
# Lists directories containing binary files for OpenFOAM ThirdParty
|
||||
#
|
||||
# Note
|
||||
# Not normally called directly by the user.
|
||||
#------------------------------------------------------------------------------
|
||||
toolsDir="${0%/*}" # this script is already located in the tools/ directory
|
||||
|
||||
[ $# -eq 2 ] || {
|
||||
cat <<USAGE 1>&2
|
||||
Usage : ${0##*/} <packDir> <archOptions>
|
||||
|
||||
* List directories containing binary files for OpenFOAM ThirdParty
|
||||
|
||||
The value of 'archOptions' normally corresponds to \$WM_OPTIONS
|
||||
The current value of \$WM_OPTIONS = $WM_OPTIONS
|
||||
|
||||
USAGE
|
||||
exit 1
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
packDir="$1"
|
||||
|
||||
# same as $WM_OPTIONS - eg, 'linux64GccDPOpt'
|
||||
archOptions="$2"
|
||||
|
||||
# base arch (w/o precision, optimization, etc)
|
||||
# same as "$WM_ARCH$WM_COMPILER"
|
||||
archCompiler=$(echo "$archOptions" | sed -e 's@[DS]P.*$@@')
|
||||
|
||||
# same as $WM_ARCH - eg, 'linux64'
|
||||
# TODO: only works for Gcc, Icc, Clang
|
||||
archOS=$(echo "$archOptions" | sed -e 's@[GI]cc.*$@@' -e 's@Clang.*$@@')
|
||||
|
||||
# links for 32-bit version, eg convert linux64 -> linux-64
|
||||
arch3264=$(echo "$archOS" | sed -e 's@64@-64@')
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# check for essential directories
|
||||
for dir in $packDir $packDir/lib/$archOptions
|
||||
do
|
||||
[ -d $dir ] || {
|
||||
echo "Error: directory $dir does not exist" 1>&2
|
||||
exit 1
|
||||
}
|
||||
done
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# list of directories
|
||||
dirList=$(
|
||||
for dir in \
|
||||
$packDir/bin/$archOptions \
|
||||
$packDir/bin/$archCompiler \
|
||||
$packDir/bin/$archOS \
|
||||
$packDir/lib/$archOptions \
|
||||
$packDir/lib/$archCompiler \
|
||||
$packDir/lib/$archOS \
|
||||
$packDir/platforms/$archOptions \
|
||||
$packDir/platforms/$archCompiler \
|
||||
$packDir/platforms/$archOS \
|
||||
;
|
||||
do
|
||||
[ -d $dir ] && echo $dir
|
||||
done
|
||||
|
||||
# add in links for 32-bit version
|
||||
if [ "$archOS" != "$arch3264" ]
|
||||
then
|
||||
for dir in \
|
||||
$packDir/platforms/$arch3264 \
|
||||
;
|
||||
do
|
||||
[ -d $dir -a -L $dir ] && echo $dir
|
||||
done
|
||||
fi
|
||||
)
|
||||
|
||||
|
||||
cat <<INFO 1>&2
|
||||
-------------------------------------------------------------------------------
|
||||
Packing $archOptions ($archCompiler) port of $packDir
|
||||
archOS = $archOS
|
||||
32bit archOS = $arch3264
|
||||
|
||||
dirs:
|
||||
$(echo ${dirList:-NONE})
|
||||
|
||||
INFO
|
||||
|
||||
echo "$dirList"
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
93
bin/tools/foamPackSource
Executable file
93
bin/tools/foamPackSource
Executable file
@ -0,0 +1,93 @@
|
||||
#!/bin/sh
|
||||
#------------------------------------------------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 1991-2011 OpenCFD Ltd.
|
||||
# \\/ M anipulation |
|
||||
#-------------------------------------------------------------------------------
|
||||
# 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
|
||||
# foamPackSource <directory> <tarFile>
|
||||
#
|
||||
# Description
|
||||
# Pack and compress all source files from a given directory.
|
||||
#
|
||||
# Note
|
||||
# Not normally called directly by the user
|
||||
#------------------------------------------------------------------------------
|
||||
tmpFile=${TMPDIR:-/tmp}/foamPackFiles.$$
|
||||
toolsDir="${0%/*}" # this script is already located in the tools/ directory
|
||||
|
||||
[ $# -eq 2 ] || {
|
||||
cat <<USAGE 1>&2
|
||||
Usage : ${0##*/} directory tarFile
|
||||
|
||||
* Pack and compress all source files from a given directory into <tarFile>
|
||||
|
||||
USAGE
|
||||
exit 1
|
||||
}
|
||||
|
||||
# canonical form (no double and no trailing dashes)
|
||||
packDir=$(echo "$1" | sed -e 's@//*@/@g' -e 's@/$@@')
|
||||
packFile=$2
|
||||
|
||||
# check for essential directories
|
||||
[ -d $packDir ] || {
|
||||
echo "Error: directory $packDir does not exist" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
# avoid overwriting old pack file
|
||||
if [ -f $packFile ]
|
||||
then
|
||||
echo "Error: $packFile already exists" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Clean up on termination and on Ctrl-C
|
||||
trap 'rm -f $tmpFile 2>/dev/null; exit 0' EXIT TERM INT
|
||||
|
||||
# get all names
|
||||
$toolsDir/foamListSourceFiles $packDir > $tmpFile
|
||||
|
||||
|
||||
# provide some feedback
|
||||
cat <<INFO 1>&2
|
||||
-------------------------------------------------------------------------------
|
||||
Packing $packDir source files into $packFile
|
||||
|
||||
INFO
|
||||
wc $tmpFile | awk '{print "Packing",$1,"files - this could take some time ..."}' 1>&2
|
||||
|
||||
|
||||
# Clean up on Ctrl-C
|
||||
trap 'rm -f $packFile $tmpFile 2>/dev/null' INT
|
||||
|
||||
tar cpzf $packFile --files-from $tmpFile
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
echo "Finished packing $packDir into file $packFile" 1>&2
|
||||
else
|
||||
echo "Error: failure packing $packDir into file $packFile" 1>&2
|
||||
rm -f $packFile 2>/dev/null
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user