summary refs log tree commit diff
path: root/pkgs/build-support/setup-hooks
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2015-10-25 11:23:51 +0100
committerVladimír Čunát <vcunat@gmail.com>2015-10-28 10:15:53 +0100
commit689d9757c505258d500f178a473ea6d2460991ff (patch)
treeb50db6d858fc9465d083596ef3ddb82e945162bf /pkgs/build-support/setup-hooks
parent5d862db694c01643eb76b38953e9525acdd6f051 (diff)
downloadnixlib-689d9757c505258d500f178a473ea6d2460991ff.tar
nixlib-689d9757c505258d500f178a473ea6d2460991ff.tar.gz
nixlib-689d9757c505258d500f178a473ea6d2460991ff.tar.bz2
nixlib-689d9757c505258d500f178a473ea6d2460991ff.tar.lz
nixlib-689d9757c505258d500f178a473ea6d2460991ff.tar.xz
nixlib-689d9757c505258d500f178a473ea6d2460991ff.tar.zst
nixlib-689d9757c505258d500f178a473ea6d2460991ff.zip
stdenv/multiple-outputs: autoremove empty directories
i.e. remove chains of empty dirs after moving contents out of them.
Diffstat (limited to 'pkgs/build-support/setup-hooks')
-rw-r--r--pkgs/build-support/setup-hooks/multiple-outputs.sh12
1 files changed, 7 insertions, 5 deletions
diff --git a/pkgs/build-support/setup-hooks/multiple-outputs.sh b/pkgs/build-support/setup-hooks/multiple-outputs.sh
index 74082cb474d7..ae00b0bf13f2 100644
--- a/pkgs/build-support/setup-hooks/multiple-outputs.sh
+++ b/pkgs/build-support/setup-hooks/multiple-outputs.sh
@@ -93,6 +93,13 @@ _moveToOutput() {
                 mkdir -p $(readlink -m "$dstPath/..") # create the parent for $dstPath
                 mv "$srcPath" "$dstPath"
             fi
+
+            # remove empty directories, printing iff at least one gets removed
+            local srcParent="$(readlink -m "$srcPath/..")"
+            if rmdir "$srcParent"; then
+                echo "Removing empty $srcParent/ and (possibly) its parents"
+                rmdir -p --ignore-fail-on-non-empty "$(readlink -m "$srcParent/..")"
+            fi
         done
     done
 }
@@ -107,11 +114,6 @@ _multioutDocs() {
     # the default outputMan is in $bin
     _moveToOutput share/man "${!outputMan}"
     _moveToOutput share/man/man3 "${!outputDocdev}"
-
-    # Remove empty share directory.
-    if [ -d "$out/share" ]; then
-        rmdir "$out/share" --ignore-fail-on-non-empty
-    fi
 }
 
 # Move development-only stuff to the desired outputs.