Message ID | 20200911114643.19958-1-dannym@scratchpost.org |
---|---|
State | Accepted |
Headers | show |
Series | [bug#43332,v2] build-system: linux-module: Delete some huge items that we probably don't need. | expand |
v2 reduces the size of linux-module-builder to 176 MiB (from 255 MiB in v1). However, it needs to do some invasive stuff that is a little more difficult to maintain than v1. With v2, the biggest remaining toplevel directories in linux-module-builder are the following (including sizes in MB as first column): 6 ./lib/modules/build/arch/powerpc 6 ./lib/modules/build/include/uapi/linux 6 ./lib/modules/build/lib 6 ./lib/modules/build/scripts 7 ./lib/modules/build/arch/mips 8 ./lib/modules/build/arch/arm64/boot 8 ./lib/modules/build/arch/arm64/boot/dts 8 ./lib/modules/build/include/uapi 9 ./lib/modules/build/arch/arm64 11 ./lib/modules/build/kernel 13 ./lib/modules/build/tools 14 ./lib/modules/build/include/config 19 ./lib/modules/build/arch/arm/boot 19 ./lib/modules/build/arch/arm/boot/dts 22 ./lib/modules/build/include/linux 23 ./lib/modules/build/arch/arm 59 ./lib/modules/build/include 62 ./lib/modules/build/arch The total is 176 MiB.
diff --git a/guix/build-system/linux-module.scm b/guix/build-system/linux-module.scm index 1077215671..14ff774fca 100644 --- a/guix/build-system/linux-module.scm +++ b/guix/build-system/linux-module.scm @@ -68,9 +68,37 @@ (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (out-lib-build (string-append out "/lib/modules/build"))) + ;; Delete some huge items that we probably don't need. ;; TODO: Only preserve the minimum, i.e. [Kbuild], Kconfig, ;; scripts, include, ".config". (copy-recursively "." out-lib-build) + (for-each + (lambda (name) + (if (file-exists? name) + (delete-file-recursively name))) + (map + (lambda (name) + (string-append out-lib-build "/" name)) + '("arch" ; 137 MB + ;"tools" ; 44 MB ; Note: is built by our 'build phase. + "tools/testing" ; 14 MB + "tools/perf" ; 17 MB + "drivers" ; 600 MB + "Documentation" ; 52 MB + "fs" ; 43 MB + "net" ; 33 MB + "samples" ; 2 MB + "sound"))) ; 40 MB + ;; Reinstate arch/**/dts since "scripts/dtc" depends on it. + ;; Reinstate arch/**/include directories. + ;; Reinstate arch/**/Makefile. + (for-each + (lambda (name) + (mkdir-p (dirname (string-append out-lib-build "/" name))) + (copy-recursively name + (string-append out-lib-build "/" name))) + (append (find-files "arch" "^(dts|include)$" #:directories? #t) + (find-files "arch" "Makefile"))) (let* ((linux (assoc-ref inputs "linux"))) (install-file (string-append linux "/System.map") out-lib-build)