Leo Famulari writes: > This patch enables multi-threaded xz compression in the repacking stage > of building source tarballs. > > With it applied, I get a ~2.2x speedup building the source of > linux-libre with 4 threads, compared to 1 thread. > > Specifically, with the upstream linux-libre tarball in the page cache, > `guix build -S linux-libre` took ~366 seconds using a single thread for > xz, and ~164 seconds using 4 threads. > > From 78547a09e50440c649c3d28d7691f32fdd47cc25 Mon Sep 17 00:00:00 2001 > From: Leo Famulari > Date: Thu, 30 Mar 2017 03:10:48 -0400 > Subject: [PATCH] packages: Enable threaded compression of source tarballs. > > This provides a ~2x speedup when using 4 threads. > > * guix/packages.scm (patch-and-repack)[build]: Invoke xz with > '--threads=0' when re-packing tarballs. > --- > guix/packages.scm | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/guix/packages.scm b/guix/packages.scm > index 4bc4b017f..30be5bf38 100644 > --- a/guix/packages.scm > +++ b/guix/packages.scm > @@ -573,7 +573,12 @@ specifies modules in scope when evaluating SNIPPET." > #:fail-on-error? #t))))) > (zero? (apply system* > (string-append #+tar "/bin/tar") > - "cvfa" #$output > + "cvf" #$output > + ;; The bootstrap xz does not support > + ;; threaded compression (introduced in > + ;; 5.2.0), but it ignores the extra flag. > + (string-append "--use-compress-program=" > + #+xz "/bin/xz --threads=0") > ;; avoid non-determinism in the archive > "--mtime=@0" > "--owner=root:0" LGTM.