ENH: improve wcleanBuild, wcleanPlatform flexibility (issue #627)
- add -compiler=NAME option to remove a build or platforms directory corresponding to any specified compiler on the current arch. - when -compiler or -compiler=NAME is specified, also clean related sub-directories as well. This will cleanup mpi-related directory.
This commit is contained in:
parent
cd46cb7041
commit
ba8fdda5cc
185
wmake/scripts/wcleanBuild
Executable file
185
wmake/scripts/wcleanBuild
Executable file
@ -0,0 +1,185 @@
|
||||
#!/bin/sh
|
||||
#------------------------------------------------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2017 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
|
||||
# wcleanBuild
|
||||
#
|
||||
# Usage
|
||||
# wcleanBuild <option | platform> [.. <option | platform>]
|
||||
#
|
||||
# Description
|
||||
# Deletes the specified 'build/' object files directories from the
|
||||
# the project top-level 'build/' directory $WM_PROJECT_DIR.
|
||||
#
|
||||
# special platforms
|
||||
# - 'all' removes all platforms.
|
||||
# - 'compiler' corresponds to $WM_ARCH$WM_COMPILER.
|
||||
# - 'current' corresponds to $WM_OPTIONS.
|
||||
#
|
||||
# You must be in the project or the third-party top-level directory
|
||||
# to run this script.
|
||||
#
|
||||
# When called as wcleanPlatform, the target directory changes to
|
||||
# 'platforms/ and the 'all' target also cleans up lnInclude dirs and
|
||||
# tutorials
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
Script="${0##*/}"
|
||||
targetDir=build # Safe default - override based on script name
|
||||
|
||||
case "$Script" in
|
||||
(*[Pp]latform*)
|
||||
targetDir=platforms
|
||||
;;
|
||||
esac
|
||||
|
||||
usage() {
|
||||
local extraText
|
||||
if [ "$targetDir" = platforms ]
|
||||
then
|
||||
extraText=", lnInclude and clean tutorials"
|
||||
fi
|
||||
|
||||
exec 1>&2
|
||||
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
|
||||
cat<<USAGE
|
||||
|
||||
Usage: ${0##*/} <option | platform> [.. <option | platform>]
|
||||
|
||||
options:
|
||||
-a, -all Same as 'all'
|
||||
-c, -current Use \$WM_OPTIONS ($WM_OPTIONS)
|
||||
-comp, -compiler Use \$WM_ARCH\$WM_COMPILER* ($WM_ARCH$WM_COMPILER)
|
||||
-compiler=NAME Use \$WM_ARCH<NAME>* ($WM_ARCH<NAME>*)
|
||||
-h, -help Print the usage
|
||||
|
||||
|
||||
Deletes the specified $targetDir/ object file directories from the project
|
||||
top-level $targetDir/ directory $WM_PROJECT_DIR.
|
||||
|
||||
special platforms:
|
||||
all Remove all platforms$extraText
|
||||
compiler $WM_ARCH$WM_COMPILER (ie, \$WM_ARCH\$WM_COMPILER)
|
||||
current $WM_OPTIONS (ie, \$WM_OPTIONS)
|
||||
|
||||
You must be in the project or the third-party top-level directory
|
||||
to run this script.
|
||||
|
||||
USAGE
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Find -help anywhere
|
||||
for i
|
||||
do
|
||||
case "$i" in (-h | -help) usage ;; esac
|
||||
done
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Run from OPENFOAM or THIRDPARTY top-level directory only
|
||||
wmakeCheckPwd -q "$WM_PROJECT_DIR" 2>/dev/null || \
|
||||
wmakeCheckPwd -q "$WM_THIRD_PARTY_DIR" 2>/dev/null || \
|
||||
{
|
||||
cat<<ERROR
|
||||
${0##*/}: Error incorrect top-level directory
|
||||
|
||||
Not in Project: $WM_PROJECT_DIR
|
||||
Nor in ThirdParty: $WM_THIRD_PARTY_DIR
|
||||
|
||||
ERROR
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ "$#" -eq 0 ]
|
||||
then
|
||||
usage "No platform specified to clean from $targetDir"
|
||||
else
|
||||
echo "$# platform(s) to clean from $targetDir"
|
||||
echo
|
||||
fi
|
||||
|
||||
|
||||
for name
|
||||
do
|
||||
unset compiler
|
||||
|
||||
case "$name" in
|
||||
-a | -all | all)
|
||||
echo "all $targetDir/ ..."
|
||||
rm -rf $targetDir
|
||||
if [ "$targetDir" = platforms ]
|
||||
then
|
||||
wcleanLnIncludeAll .
|
||||
[ -x tutorials/Allclean ] && tutorials/Allclean
|
||||
fi
|
||||
echo
|
||||
break # Removed everything - can stop now
|
||||
;;
|
||||
-c | -current | current)
|
||||
name="$WM_OPTIONS"
|
||||
;;
|
||||
-comp | -compiler | compiler)
|
||||
compiler="$WM_COMPILER"
|
||||
unset name
|
||||
;;
|
||||
-compiler=*)
|
||||
compiler="${name#*=}"
|
||||
unset name
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -n "$compiler" ]
|
||||
then
|
||||
name="$WM_ARCH$compiler"
|
||||
|
||||
dirs=$(find $targetDir -maxdepth 1 -name "${name}*")
|
||||
if [ -n "$dirs" ]
|
||||
then
|
||||
for name in $dirs
|
||||
do
|
||||
echo " '$name'"
|
||||
rm -rf "$name"
|
||||
done
|
||||
echo
|
||||
else
|
||||
echo " '$name' - not built or already cleaned"
|
||||
echo
|
||||
fi
|
||||
elif [ -n "$name" ]
|
||||
then
|
||||
if [ -d "$targetDir/$name" ]
|
||||
then
|
||||
echo " '$name'"
|
||||
rm -rf "$targetDir/$name"*
|
||||
echo
|
||||
else
|
||||
echo " '$name' - not built or already cleaned"
|
||||
echo
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0 # clean exit
|
||||
|
||||
#------------------------------------------------------------------------------
|
@ -1,135 +0,0 @@
|
||||
#!/bin/sh
|
||||
#------------------------------------------------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2017 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
|
||||
# wcleanBuild
|
||||
#
|
||||
# Usage
|
||||
# wcleanBuild <platform> [.. <platformN>]
|
||||
#
|
||||
# Description
|
||||
# Deletes the specified 'build/' object files directories from the
|
||||
# the project top-level 'build/' directory $WM_PROJECT_DIR.
|
||||
#
|
||||
# special platforms
|
||||
# - 'all' removes all platforms.
|
||||
# - 'compiler' corresponds to $WM_ARCH$WM_COMPILER.
|
||||
# - 'current' corresponds to $WM_OPTIONS.
|
||||
#
|
||||
# You must be in the project or the third-party top-level directory
|
||||
# to run this script.
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
Script=${0##*/}
|
||||
|
||||
usage() {
|
||||
exec 1>&2
|
||||
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
|
||||
cat<<USAGE
|
||||
|
||||
Usage: $Script <platform> [.. <platformN>]
|
||||
$Script -all | -compiler | -current [<platform> [.. <platformN>]]
|
||||
|
||||
options:
|
||||
-a, -all Same as 'all'
|
||||
-comp, -compiler Same as 'compiler'
|
||||
-c, -current Same as 'current'
|
||||
-h, -help Print the usage
|
||||
|
||||
|
||||
Deletes the specified build/ object file directories from the project
|
||||
top-level build/ directory $WM_PROJECT_DIR.
|
||||
|
||||
special platforms:
|
||||
all Remove all platforms
|
||||
compiler $WM_ARCH$WM_COMPILER (ie, \$WM_ARCH\$WM_COMPILER)
|
||||
current $WM_OPTIONS (ie, \$WM_OPTIONS)
|
||||
|
||||
You must be in the project or the third-party top-level directory
|
||||
to run this script.
|
||||
|
||||
USAGE
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Find -help anywhere
|
||||
for i
|
||||
do
|
||||
case "$i" in (-h | -help) usage ;; esac
|
||||
done
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Run from OPENFOAM or THIRDPARTY top-level directory only
|
||||
wmakeCheckPwd -q "$WM_PROJECT_DIR" 2>/dev/null || \
|
||||
wmakeCheckPwd -q "$WM_THIRD_PARTY_DIR" 2>/dev/null || \
|
||||
{
|
||||
cat<<ERROR
|
||||
${0##*/}: Error incorrect top-level directory
|
||||
|
||||
Not in Project: $WM_PROJECT_DIR
|
||||
Nor in ThirdParty: $WM_THIRD_PARTY_DIR
|
||||
|
||||
ERROR
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ "$#" -eq 0 ]
|
||||
then
|
||||
usage "No platform specified"
|
||||
else
|
||||
echo "$# platform(s) to clean"
|
||||
echo
|
||||
fi
|
||||
|
||||
for name
|
||||
do
|
||||
case "$name" in
|
||||
-comp | -compiler | compiler)
|
||||
name="$WM_ARCH$WM_COMPILER"
|
||||
;;
|
||||
-c | -current | current)
|
||||
name="$WM_OPTIONS"
|
||||
;;
|
||||
-a | -all | all)
|
||||
echo "all build/ ..."
|
||||
rm -rf build
|
||||
echo
|
||||
break # Can stop now
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -n "$name" -d "build/$name" ]
|
||||
then
|
||||
echo " '$name'"
|
||||
rm -rf "build/$name"*
|
||||
echo
|
||||
else
|
||||
echo " '$name' - not built"
|
||||
echo
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0 # clean exit
|
||||
|
||||
#------------------------------------------------------------------------------
|
1
wmake/wcleanBuild
Symbolic link
1
wmake/wcleanBuild
Symbolic link
@ -0,0 +1 @@
|
||||
scripts/wcleanBuild
|
@ -1,137 +0,0 @@
|
||||
#!/bin/sh
|
||||
#------------------------------------------------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
|
||||
# \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd.
|
||||
#-------------------------------------------------------------------------------
|
||||
# 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
|
||||
# wcleanPlatform
|
||||
#
|
||||
# Usage
|
||||
# wcleanPlatform <platform> [.. <platformN>]
|
||||
#
|
||||
# Description
|
||||
# Deletes the specified 'platforms/' object files directories from the
|
||||
# the project top-level 'platforms/' directory $WM_PROJECT_DIR.
|
||||
#
|
||||
# special platforms
|
||||
# - 'all' removes all platforms, lnInclude directories and cleans tutorials.
|
||||
# - 'compiler' corresponds to $WM_ARCH$WM_COMPILER.
|
||||
# - 'current' corresponds to $WM_OPTIONS.
|
||||
#
|
||||
# You must be in the project or the third-party top-level directory
|
||||
# to run this script.
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
Script=${0##*/}
|
||||
|
||||
usage() {
|
||||
exec 1>&2
|
||||
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
|
||||
cat<<USAGE
|
||||
|
||||
Usage: $Script <platform> [.. <platformN>]
|
||||
$Script -all | -compiler | -current [<platform> [.. <platformN>]]
|
||||
|
||||
options:
|
||||
-a, -all Same as 'all'
|
||||
-comp, -compiler Same as 'compiler'
|
||||
-c, -current Same as 'current'
|
||||
-h, -help Print the usage
|
||||
|
||||
|
||||
Deletes the specified platforms/ object file directories from the project
|
||||
top-level platforms/ directory $WM_PROJECT_DIR.
|
||||
|
||||
special platforms:
|
||||
all Remove all platforms, lnInclude and clean tutorials
|
||||
compiler $WM_ARCH$WM_COMPILER (ie, \$WM_ARCH\$WM_COMPILER)
|
||||
current $WM_OPTIONS (ie, \$WM_OPTIONS)
|
||||
|
||||
You must be in the project or the third-party top-level directory
|
||||
to run this script.
|
||||
|
||||
USAGE
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Find -help anywhere
|
||||
for i
|
||||
do
|
||||
case "$i" in (-h | -help) usage ;; esac
|
||||
done
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Run from OPENFOAM or THIRDPARTY top-level directory only
|
||||
wmakeCheckPwd -q "$WM_PROJECT_DIR" 2>/dev/null || \
|
||||
wmakeCheckPwd -q "$WM_THIRD_PARTY_DIR" 2>/dev/null || \
|
||||
{
|
||||
cat<<ERROR
|
||||
${0##*/}: Error incorrect top-level directory
|
||||
|
||||
Not in Project: $WM_PROJECT_DIR
|
||||
Nor in ThirdParty: $WM_THIRD_PARTY_DIR
|
||||
|
||||
ERROR
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ "$#" -eq 0 ]
|
||||
then
|
||||
usage "No platform specified"
|
||||
else
|
||||
echo "$# platform(s) to clean"
|
||||
echo
|
||||
fi
|
||||
|
||||
for name
|
||||
do
|
||||
case "$name" in
|
||||
-comp | -compiler | compiler)
|
||||
name="$WM_ARCH$WM_COMPILER"
|
||||
;;
|
||||
-c | -current | current)
|
||||
name="$WM_OPTIONS"
|
||||
;;
|
||||
-a | -all | all)
|
||||
echo "all platforms/ ..."
|
||||
rm -rf platforms
|
||||
wcleanLnIncludeAll .
|
||||
[ -x tutorials/Allclean ] && tutorials/Allclean
|
||||
echo
|
||||
break # Can stop now
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -n "$name" -d "build/$name" ]
|
||||
then
|
||||
echo " '$name'"
|
||||
rm -rf "platforms/$name"*
|
||||
echo
|
||||
else
|
||||
echo " '$name' - not built"
|
||||
echo
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0 # clean exit
|
||||
|
||||
#------------------------------------------------------------------------------
|
1
wmake/wcleanPlatform
Symbolic link
1
wmake/wcleanPlatform
Symbolic link
@ -0,0 +1 @@
|
||||
scripts/wcleanBuild
|
Loading…
Reference in New Issue
Block a user