diff options
-rw-r--r-- | gnu/packages/firmware.scm | 119 |
1 files changed, 60 insertions, 59 deletions
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index a4e43e71ec..79e0577077 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -415,66 +415,67 @@ executing in M-mode.") (build-system gnu-build-system) (native-inputs (list python-wrapper)) (arguments - `(#:tests? #f ; no check target - #:make-flags '("EXTRAVERSION=-guix" ;upstream wants distros to set this - "V=1") ;build verbosely - #:modules (,@%gnu-build-system-modules + (list + #:tests? #f ;no tests + #:make-flags + #~'("EXTRAVERSION=-guix" ;upstream wants distros to set this + "V=1") ;build verbosely + #:modules `(,@%gnu-build-system-modules (ice-9 match)) - #:phases - (modify-phases %standard-phases - (replace 'configure - (lambda _ - ;; Create the ".version" file that is present in release tarballs. - ;; Otherwise this will be regarded as an "unclean" build, and the - ;; build system ends up encoding the build date in the binaries. - (call-with-output-file ".version" - (lambda (port) - (format port ,(package-version this-package)))) - (setenv "CC" "gcc"))) - (add-after 'build 'build-vgabios - (lambda* (#:key (make-flags ''()) #:allow-other-keys) - (for-each - (match-lambda - ((target . config) - (let* ((dot-config (string-append (getcwd) "/" target "/.config")) - (flags (append make-flags - (list (string-append "KCONFIG_CONFIG=" - dot-config) - (string-append "OUT=" target "/"))))) - (mkdir target) - (call-with-output-file dot-config - (lambda (port) - (for-each (lambda (entry) - (if (string-suffix? "=n" entry) - (format port "# CONFIG_~a is not set~%" - (string-drop-right entry 2)) - (format port "CONFIG_~a~%" entry))) - (cons "BUILD_VGABIOS=y" config)))) - (apply invoke "make" "oldnoconfig" flags) - (apply invoke "make" flags) - (link (string-append target "/bios.bin") - (string-append "out/" target ".bin"))))) - ;; These tuples are modelled after Debians packaging: - ;; https://salsa.debian.org/qemu-team/seabios/-/blob/master/debian/rules - '(("ati" . ("VGA_ATI=y" "VGA_PCI=y")) - ("bochs-display" . ("DISPLAY_BOCHS=y" "VGA_PCI=y")) - ("cirrus" . ("VGA_CIRRUS=y" "VGA_PCI=y")) - ("stdvga" . ("VGA_BOCHS=y" "VGA_PCI=y")) - ("virtio" . ("VGA_BOCHS_VIRTIO=y" "VGA_PCI=y")) - ("vmware" . ("VGA_BOCHS_VMWARE=y" "VGA_PCI=y")) - ("qxl" . ("VGA_BOCHS_QXL=y" "VGA_PCI=y")) - ("isavga" . ("VGA_BOCHS=y" "VGA_PCI=n")) - ("ramfb" . ("VGA_RAMFB=y" "VGA_PCI=n")))))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (fmw (string-append out "/share/firmware"))) - (for-each (lambda (bios) - (install-file bios fmw)) - (find-files "out" "\\.bin$")) - (with-directory-excursion fmw - ;; QEMU 1.7 and later looks only for the latter. - (symlink "bios.bin" "bios-256k.bin")))))))) + #:phases + #~(modify-phases %standard-phases + (replace 'configure + (lambda _ + ;; Create the ".version" file that is present in release tarballs. + ;; Otherwise this will be regarded as an "unclean" build, and the + ;; build system ends up encoding the build date in the binaries. + (call-with-output-file ".version" + (lambda (port) + (format port #$(package-version this-package)))) + (setenv "CC" "gcc"))) + (add-after 'build 'build-vgabios + (lambda* (#:key (make-flags #~'()) #:allow-other-keys) + (for-each + (match-lambda + ((target . config) + (let* ((dot-config (string-append (getcwd) "/" target "/.config")) + (flags (append make-flags + (list (string-append "KCONFIG_CONFIG=" + dot-config) + (string-append "OUT=" target "/"))))) + (mkdir target) + (call-with-output-file dot-config + (lambda (port) + (for-each (lambda (entry) + (if (string-suffix? "=n" entry) + (format port "# CONFIG_~a is not set~%" + (string-drop-right entry 2)) + (format port "CONFIG_~a~%" entry))) + (cons "BUILD_VGABIOS=y" config)))) + (apply invoke "make" "oldnoconfig" flags) + (apply invoke "make" flags) + (link (string-append target "/bios.bin") + (string-append "out/" target ".bin"))))) + ;; These tuples are modelled after Debians packaging: + ;; https://salsa.debian.org/qemu-team/seabios/-/blob/master/debian/rules + '(("ati" . ("VGA_ATI=y" "VGA_PCI=y")) + ("bochs-display" . ("DISPLAY_BOCHS=y" "VGA_PCI=y")) + ("cirrus" . ("VGA_CIRRUS=y" "VGA_PCI=y")) + ("stdvga" . ("VGA_BOCHS=y" "VGA_PCI=y")) + ("virtio" . ("VGA_BOCHS_VIRTIO=y" "VGA_PCI=y")) + ("vmware" . ("VGA_BOCHS_VMWARE=y" "VGA_PCI=y")) + ("qxl" . ("VGA_BOCHS_QXL=y" "VGA_PCI=y")) + ("isavga" . ("VGA_BOCHS=y" "VGA_PCI=n")) + ("ramfb" . ("VGA_RAMFB=y" "VGA_PCI=n")))))) + (replace 'install + (lambda _ + (let ((fmw (string-append #$output "/share/firmware"))) + (for-each (lambda (bios) + (install-file bios fmw)) + (find-files "out" "\\.bin$")) + (with-directory-excursion fmw + ;; QEMU 1.7 and later looks only for the latter. + (symlink "bios.bin" "bios-256k.bin")))))))) (home-page "https://www.seabios.org/SeaBIOS") (synopsis "x86 BIOS implementation") (description "SeaBIOS is an implementation of a 16bit x86 BIOS. SeaBIOS |