summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/ptxdist16
-rw-r--r--doc/ref_parameter.inc6
2 files changed, 22 insertions, 0 deletions
diff --git a/bin/ptxdist b/bin/ptxdist
index 03d6a37ff..1a8e02192 100755
--- a/bin/ptxdist
+++ b/bin/ptxdist
@@ -967,6 +967,7 @@ Clean Actions:
clean cleanup build-host and build-cross dirs
clean root cleanup root directory for target
+ clean target cleanup all target packages
distclean cleanup everything
Misc:
@@ -1041,6 +1042,21 @@ EOF
clean() {
local dir bdir
+ # we want to clean all target packages
+ if [ "${1}" = "target" ]; then
+ if [ ! -n "${PTXDIST_FORCE}${PTXDIST_QUIET}${PTXCONF_SETUP_DIRECT_CLEAN}" ]; then
+ read -e -p "really clean all target packages? [y/N] " r
+ case "${r}" in
+ y|Y) ;;
+ *) exit 1 ;;
+ esac
+ fi
+ check_premake_compiler &&
+ pkgs=($(ptxd_make "/print-PACKAGES /print-EXTRA_PACKAGES /print-LAZY_PACKAGES")) &&
+ ptxd_make_log "${pkgs[@]/%/_clean}"
+ set -- root
+ fi
+
# we want to clean the root dir
if [ "${1}" = "root" ]; then
echo
diff --git a/doc/ref_parameter.inc b/doc/ref_parameter.inc
index 0b11563c9..4aecb0471 100644
--- a/doc/ref_parameter.inc
+++ b/doc/ref_parameter.inc
@@ -162,6 +162,12 @@ Clean Actions
The ``clean root`` and ``go`` action is useful if the
*targetinstall* stage for all packages should run again.
+``clean target``
+ this action will call the ``clean`` action for each target package,
+ and also clean the root file system afterwards.
+ This can be useful if you want to rebuild the target file system from
+ scratch, without throwing away the already built host and cross packages.
+
``clean <package>``
this action will only clean the dedicated
<package>. It will remove its build directory and all installed files