X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/8bf8cd9b85c85be387565f6c8ca9f6c72196fb8e..166472e2c8535e5b5e19e34aeaa0f84cb978b4e3:/gnu/packages/bootloaders.scm diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 0f0d3b4b62..75ae8d919b 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -2,16 +2,15 @@ ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès ;;; Copyright © 2015, 2018 Mark H Weaver ;;; Copyright © 2015 Leo Famulari -;;; Copyright © 2016 Jan Nieuwenhuizen +;;; Copyright © 2016, 2020 Jan (janneke) Nieuwenhuizen ;;; Copyright © 2016, 2017, 2018 Marius Bakke ;;; Copyright © 2016, 2017 Danny Milosavljevic ;;; Copyright © 2016, 2017 David Craven -;;; Copyright © 2017, 2018 Efraim Flashner -;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice +;;; Copyright © 2017, 2018, 2020 Efraim Flashner +;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice ;;; Copyright © 2019 nee ;;; Copyright © 2019 Mathieu Othacehe ;;; Copyright © 2020 Björn Höfling -;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen ;;; Copyright © 2018, 2019, 2020 Vagrant Cascadian ;;; Copyright © 2020 Pierre Langlois ;;; @@ -96,7 +95,9 @@ "0zgp5m3hmc9jh8wpjx6czzkh5id2y8n1k823x2mjvm2sk6b28ag5")) (patches (search-patches "grub-efi-fat-serial-number.patch" - "grub-verifiers-Blocklist-fallout-cleanup.patch")))) + "grub-setup-root.patch" + "grub-verifiers-Blocklist-fallout-cleanup.patch" + "grub-cross-system-i686.patch")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -114,11 +115,12 @@ ;; determine the root file system when it's a RAID ;; device. Failing to do that, 'grub-probe' silently ;; fails if 'mdadm' is not in $PATH. - (substitute* "grub-core/osdep/linux/getroot.c" - (("argv\\[0\\] = \"mdadm\"") - (string-append "argv[0] = \"" - (assoc-ref inputs "mdadm") - "/sbin/mdadm\""))) + (when (assoc-ref inputs "mdadm") + (substitute* "grub-core/osdep/linux/getroot.c" + (("argv\\[0\\] = \"mdadm\"") + (string-append "argv[0] = \"" + (assoc-ref inputs "mdadm") + "/sbin/mdadm\"")))) ;; Make the font visible. (copy-file (assoc-ref (or native-inputs inputs) @@ -132,6 +134,20 @@ (string-append (assoc-ref inputs "console-setup") "/bin/ckbcomp "))) #t)) + (add-after 'unpack 'set-freetype-variables + ;; These variables need to be set to the native versions + ;; of the dependencies because they are used to build + ;; programs which are executed during build time. + (lambda* (#:key native-inputs #:allow-other-keys) + (when (assoc-ref native-inputs "freetype") + (let ((freetype (assoc-ref native-inputs "freetype"))) + (setenv "BUILD_FREETYPE_LIBS" + (string-append "-L" freetype + "/lib -lfreetype")) + (setenv "BUILD_FREETYPE_CFLAGS" + (string-append "-I" freetype + "/include/freetype2")))) + #t)) (add-before 'check 'disable-flaky-test (lambda _ ;; This test is unreliable. For more information, see: @@ -148,10 +164,11 @@ (("test_unset grub_func_test") "test_unset")) #t))) - ;; Disable tests on ARM and AARCH64 platforms. - #:tests? ,(not (any (cute string-prefix? <> (or (%current-target-system) - (%current-system))) - '("arm" "aarch64"))))) + ;; Disable tests on ARM and AARCH64 platforms or when cross-compiling. + #:tests? ,(not (or (any (cute string-prefix? <> (or (%current-target-system) + (%current-system))) + '("arm" "aarch64")) + (%current-target-system))))) (inputs `(("gettext" ,gettext-minimal) @@ -193,6 +210,7 @@ ("flex" ,flex) ("texinfo" ,texinfo) ("help2man" ,help2man) + ("freetype" ,freetype) ; native version needed for build-grub-mkfont ;; XXX: When building GRUB 2.02 on 32-bit x86, we need a binutils ;; capable of assembling 64-bit instructions. However, our default @@ -240,21 +258,25 @@ menu to select one of the installed operating systems.") (fold alist-delete (package-native-inputs grub) '("help2man" "texinfo" "parted" "qemu" "xorriso"))) (arguments - `(#:configure-flags (list "PYTHON=true") - #:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-stuff - (lambda* (#:key native-inputs inputs #:allow-other-keys) - (substitute* "grub-core/Makefile.in" - (("/bin/sh") (which "sh"))) + (substitute-keyword-arguments (package-arguments grub) + ((#:configure-flags _ ''()) + '(list "PYTHON=true")) + ((#:tests? _ #t) + #f) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (replace 'patch-stuff + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (substitute* "grub-core/Makefile.in" + (("/bin/sh") (which "sh"))) - ;; Make the font visible. - (copy-file (assoc-ref (or native-inputs inputs) - "unifont") - "unifont.bdf.gz") - (system* "gunzip" "unifont.bdf.gz") + ;; Make the font visible. + (copy-file (assoc-ref (or native-inputs inputs) + "unifont") + "unifont.bdf.gz") + (system* "gunzip" "unifont.bdf.gz") - #t))) - #:tests? #f)))) + #t)))))))) (define-public grub-efi (package @@ -423,7 +445,7 @@ menu to select one of the installed operating systems.") `(("python" ,python))) (arguments `(#:make-flags - (list "CC=gcc" + (list (string-append "CC=" ,(cc-for-target)) ;; /bin/fdt{get,overlay,put} need help finding libfdt.so.1. (string-append "LDFLAGS=-Wl,-rpath=" @@ -434,6 +456,15 @@ menu to select one of the installed operating systems.") "INSTALL=install") #:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-pkg-config + (lambda _ + (substitute* '("Makefile" + "tests/run_tests.sh") + (("pkg-config") + (or (which "pkg-config") + (string-append ,(%current-target-system) + "-pkg-config")))) + #t)) (delete 'configure)))) ; no configure script (home-page "https://www.devicetree.org") (synopsis "Compiles device tree source files") @@ -445,7 +476,7 @@ tree binary files. These are board description files used by Linux and BSD.") (define u-boot (package (name "u-boot") - (version "2020.04") + (version "2020.10") (source (origin (method url-fetch) (uri (string-append @@ -453,7 +484,7 @@ tree binary files. These are board description files used by Linux and BSD.") "u-boot-" version ".tar.bz2")) (sha256 (base32 - "0wjkasnz87q86hx93inspdjfjsinmxi87bcvj30c773x0fpjlwzy")))) + "08m6f1bh4pdcqbxf983qdb66ccd5vak5cbzc114yf3jwq2yinj0d")))) (native-inputs `(("bc" ,bc) ("bison" ,bison) @@ -464,7 +495,6 @@ tree binary files. These are board description files used by Linux and BSD.") ("python" ,python) ("python-coverage" ,python-coverage) ("python-pytest" ,python-pytest) - ("sdl2" ,sdl2) ("swig" ,swig))) (build-system gnu-build-system) (home-page "https://www.denx.de/wiki/U-Boot/") @@ -477,9 +507,12 @@ also initializes the boards (RAM etc).") (package (inherit u-boot) (name "u-boot-tools") + (native-inputs + `(("sdl2" ,sdl2) + ,@(package-native-inputs u-boot))) (arguments `(#:make-flags '("HOSTCC=gcc") - #:test-target "tests" + #:test-target "tcheck" #:phases (modify-phases %standard-phases (add-after 'unpack 'patch @@ -490,11 +523,8 @@ also initializes the boards (RAM etc).") (substitute* "tools/dtoc/fdt_util.py" (("'cc'") "'gcc'")) (substitute* "tools/patman/test_util.py" - ;; python*-coverage is simply called coverage in guix. - (("%s-coverage") "coverage") - ;; XXX Allow for only 99% test coverage. - ;; TODO: Find out why that is needed. - (("if coverage != '100%':") "if not int(coverage.rstrip('%')) >= 99:")) + ;; python3-coverage is simply called coverage in guix. + (("python3-coverage") "coverage")) (substitute* "test/run" ;; Make it easier to find test failures. (("#!/bin/bash") "#!/bin/bash -x") @@ -504,8 +534,6 @@ also initializes the boards (RAM etc).") (("run_test \"binman\"") ": run_test \"binman\"") ;; FIXME: code coverage not working (("run_test \"binman code coverage\"") ": run_test \"binman code coverage\"") - (("run_test \"dtoc code coverage\"") ": run_test \"dtoc code coverage\"") - (("run_test \"fdt code coverage\"") ": run_test \"fdt code coverage\"") ;; This test would require internet access. (("\\./tools/buildman/buildman") (which "true"))) (substitute* "test/py/tests/test_sandbox_exit.py" @@ -518,10 +546,12 @@ def test_ctrl_c")) (("BASEDIR=sandbox") "BASEDIR=.")) (for-each (lambda (file) (substitute* file - ;; Disable signatures, due to GPL/Openssl - ;; license incompatibilities. See - ;; https://bugs.gnu.org/34717 for details. - (("CONFIG_FIT_SIGNATURE=y") "CONFIG_FIT_SIGNATURE=n") + ;; Disable features that require OpenSSL due + ;; to GPL/Openssl license incompatibilities. + ;; See https://bugs.gnu.org/34717 for + ;; details. + (("CONFIG_FIT_SIGNATURE=y") + "CONFIG_FIT_SIGNATURE=n\nCONFIG_UT_LIB_ASN1=n") ;; This test requires a sound system, which is un-used ;; in u-boot-tools. (("CONFIG_SOUND=y") "CONFIG_SOUND=n"))) @@ -884,15 +914,6 @@ to Novena upstream, does not load u-boot.img from the first partition.") (let ((base (make-u-boot-package "pinebook-pro-rk3399" "aarch64-linux-gnu"))) (package (inherit base) - (source (origin - (inherit (package-source u-boot)) - (patches - (search-patches "u-boot-add-boe-nv140fhmn49-display.patch" - "u-boot-gpio-keys-binding-cons.patch" - "u-boot-leds-common-binding-con.patch" - "u-boot-DT-for-Pinebook-Pro.patch" - "u-boot-support-Pinebook-Pro-laptop.patch" - "u-boot-video-rockchip-fix-build.patch")))) (arguments (substitute-keyword-arguments (package-arguments base) ((#:phases phases) @@ -1016,7 +1037,8 @@ tools, and more.") (guix build utils) (ice-9 regex) ; for string-match (srfi srfi-26)) ; for cut - #:make-flags (list "CC=gcc") + #:make-flags + (list ,(string-append "CC=" (cc-for-target))) #:tests? #f ; no tests #:phases (modify-phases %standard-phases