Hello Ludovic! I have more benchmark results. Not to be compared with the previous results, as these were executed on a much faster machine (24 cores vs 4 cores), with an SSD instead of a rotative disk. Commands used: current-guix/pre-built: --8<---------------cut here---------------start------------->8--- time ./pre-inst-env guix system build -e \ '(begin (use-modules (gnu packages package-management)) (parameterize ((current-guix-package (current-guix/pre-built))) ((@@ (gnu tests install) operating-system-with-current-guix) (@@ (gnu tests install) %btrfs-root-os))))' --8<---------------cut here---------------end--------------->8--- current-guix (old fashionned): --8<---------------cut here---------------start------------->8--- time ./pre-inst-env guix system build -e \ '(begin (use-modules (gnu packages package-management)) (parameterize ((current-guix-package (current-guix))) ((@@ (gnu tests install) operating-system-with-current-guix) (@@ (gnu tests install) %btrfs-root-os))))' --8<---------------cut here---------------end--------------->8--- new current-guix (guix self): --8<---------------cut here---------------start------------->8--- time ./pre-inst-env guix system build -e \ '(begin (use-modules ((gnu ci) #:select (channel-instance->package)) (guix monads) (guix channels) (guix store) ((guix status) #:select (with-status-verbosity)) ((guix git-download) #:select (git-predicate)) (guix utils) (gnu packages package-management)) (with-store store (with-status-verbosity 2 (run-with-store store (mlet* %store-monad ((source-dir -> "/home/mcournoyer/src/guix") (source (interned-file source-dir "guix-source" #:recursive? #t #:select? (or (git-predicate source-dir) (const #t)))) (instance -> (checkout->channel-instance source)) (new-guix-current -> (channel-instance->package instance))) (return (parameterize ((current-guix-package new-guix-current)) ((@@ (gnu tests install) operating-system-with-current-guix) (@@ (gnu tests install) %btrfs-root-os)))))))))' --8<---------------cut here---------------end--------------->8--- Methodology: 1. Break at each commit of the current change set, run make, and run the three above commands in the order they appear. 2. Record the "real" component of the time results of each commit/command in the table below. | Commit | current-guix/pre-built | old current-guix | new current-guix | |--------------------------------------------------------------+------------------------+------------------+------------------| | linux-boot: Ensure volatile root is mounted read-only. | 2m2.245s | 13m39.669s | 3m47.066s | | file-systems: Add a 'file-system-device->string' procedure. | 2m12.576s | 13m42.906s | 3m43.212s | | gnu: linux-boot: Refactor boot-system. | 1m53.928s | 13m48.825s | 9m53.133s | | file-systems: Represent the file system options as an alist. | 2m12.530s | "" | 10m3.523s | | gnu: linux-boot: Honor the "--root-options" kernel argument. | "" | "" | 11m10.448s | | gnu: linux-boot: Filter out file system independent options. | "" | "" | 5m4.997s | | bootloader: grub: Allow booting from a Btrfs subvolume. | 2m13.375s | 13m44.671s | 3m38.815s | |--------------------------------------------------------------+------------------------+------------------+------------------| This machine appears to be 5 times faster (at this task) than the previous one used, to give an idea of the time someone would have to wait just to build the operating system to test. An x200 would be even slightly slower that than. One of the things that seems costly is rebuilding the documentation. Maxim