about summary refs log tree commit diff
path: root/pkgs/stdenv/generic
diff options
context:
space:
mode:
authorMartin Weinelt <mweinelt@users.noreply.github.com>2023-12-06 15:41:01 +0100
committerGitHub <noreply@github.com>2023-12-06 15:41:01 +0100
commit570af7d90933bcbad1384a9e7dee8a268f9867d9 (patch)
tree5fcd2555390c918d9bc3036194a53e97bf241bb4 /pkgs/stdenv/generic
parent6e34087a32dae15a93cd38e1e820c6204f8099ac (diff)
parent80627bfe8ff3a42161597bea24a257e78ff94b94 (diff)
downloadnixlib-570af7d90933bcbad1384a9e7dee8a268f9867d9.tar
nixlib-570af7d90933bcbad1384a9e7dee8a268f9867d9.tar.gz
nixlib-570af7d90933bcbad1384a9e7dee8a268f9867d9.tar.bz2
nixlib-570af7d90933bcbad1384a9e7dee8a268f9867d9.tar.lz
nixlib-570af7d90933bcbad1384a9e7dee8a268f9867d9.tar.xz
nixlib-570af7d90933bcbad1384a9e7dee8a268f9867d9.tar.zst
nixlib-570af7d90933bcbad1384a9e7dee8a268f9867d9.zip
Merge pull request #263446 from emilylange/stdenv-xz-multithread
stdenv: enable multithreading for `xz` decompression
Diffstat (limited to 'pkgs/stdenv/generic')
-rw-r--r--pkgs/stdenv/generic/setup.sh6
1 files changed, 5 insertions, 1 deletions
diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh
index 081024781eef..ec8df76f2c79 100644
--- a/pkgs/stdenv/generic/setup.sh
+++ b/pkgs/stdenv/generic/setup.sh
@@ -1044,7 +1044,11 @@ _defaultUnpack() {
         case "$fn" in
             *.tar.xz | *.tar.lzma | *.txz)
                 # Don't rely on tar knowing about .xz.
-                xz -d < "$fn" | tar xf - --warning=no-timestamp
+                # Additionally, we have multiple different xz binaries with different feature sets in different
+                # stages. The XZ_OPT env var is only used by the full "XZ utils" implementation, which supports
+                # the --threads (-T) flag. This allows us to enable multithreaded decompression exclusively on
+                # that implementation, without the use of complex bash conditionals and checks.
+                XZ_OPT="--threads=$NIX_BUILD_CORES" xz -d < "$fn" | tar xf - --warning=no-timestamp
                 ;;
             *.tar | *.tar.* | *.tgz | *.tbz2 | *.tbz)
                 # GNU tar can automatically select the decompression method