aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/bootloader/u-boot.scm2
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/bootloaders.scm39
-rw-r--r--gnu/packages/patches/u-boot-fix-mkimage-header-verification.patch57
4 files changed, 92 insertions, 7 deletions
diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm
index 1c6f322bc4..54abfe1c69 100644
--- a/gnu/bootloader/u-boot.scm
+++ b/gnu/bootloader/u-boot.scm
@@ -106,7 +106,7 @@
(define u-boot-beaglebone-black-bootloader
(bootloader
(inherit u-boot-bootloader)
- (package u-boot-beagle-bone-black)
+ (package u-boot-am335x-boneblack)
(installer install-beaglebone-black-u-boot)))
(define u-boot-allwinner-bootloader
diff --git a/gnu/local.mk b/gnu/local.mk
index 15db537098..a0f40d13ae 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1309,6 +1309,7 @@ dist_patch_DATA = \
%D%/packages/patches/totem-meson-easy-codec.patch \
%D%/packages/patches/tuxpaint-stamps-path.patch \
%D%/packages/patches/twinkle-include-qregexpvalidator.patch \
+ %D%/packages/patches/u-boot-fix-mkimage-header-verification.patch \
%D%/packages/patches/unzip-CVE-2014-8139.patch \
%D%/packages/patches/unzip-CVE-2014-8140.patch \
%D%/packages/patches/unzip-CVE-2014-8141.patch \
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index b4eabaea48..e1d91b136c 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -379,7 +379,7 @@ tree binary files. These are board description files used by Linux and BSD.")
(define u-boot
(package
(name "u-boot")
- (version "2019.01")
+ (version "2019.04")
(source (origin
(method url-fetch)
(uri (string-append
@@ -387,7 +387,10 @@ tree binary files. These are board description files used by Linux and BSD.")
"u-boot-" version ".tar.bz2"))
(sha256
(base32
- "08hwsmh5xsb1gcxsv8gvx00bai938dm5y3889n8jif3a8rd7xgah"))))
+ "1vwv4bgbl7fjcm073zrphn17hnz5h5h778f88ivdsgbb2lnpgdvn"))
+ (patches
+ (search-patches
+ "u-boot-fix-mkimage-header-verification.patch"))))
(native-inputs
`(("bc" ,bc)
("bison" ,bison)
@@ -578,8 +581,32 @@ board-independent tools.")))
(define-public u-boot-malta
(make-u-boot-package "malta" "mips64el-linux-gnuabi64"))
-(define-public u-boot-beagle-bone-black
- (make-u-boot-package "am335x_boneblack" "arm-linux-gnueabihf"))
+(define-public u-boot-am335x-boneblack
+ (let ((base (make-u-boot-package "am335x_evm" "arm-linux-gnueabihf")))
+ (package
+ (inherit base)
+ (name "u-boot-am335x-boneblack")
+ (description "U-Boot is a bootloader used mostly for ARM boards. It
+also initializes the boards (RAM etc).
+
+This U-Boot is built for the BeagleBone Black, which was removed upstream,
+adjusted from the am335x_evm build with several device trees removed so that
+it fits within common partitioning schemes.")
+ (arguments
+ (substitute-keyword-arguments (package-arguments base)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'unpack 'patch-defconfig
+ ;; Patch out other devicetrees to build image small enough to
+ ;; fit within typical partitioning schemes where the first
+ ;; partition begins at sector 2048.
+ (lambda _
+ (substitute* "configs/am335x_evm_defconfig"
+ (("CONFIG_OF_LIST=.*$") "CONFIG_OF_LIST=\"am335x-evm am335x-boneblack\"\n"))
+ #t)))))))))
+
+(define-public u-boot-am335x-evm
+ (make-u-boot-package "am335x_evm" "arm-linux-gnueabihf"))
(define-public (make-u-boot-sunxi64-package board triplet)
(let ((base (make-u-boot-package board triplet)))
@@ -638,7 +665,7 @@ board-independent tools.")))
also initializes the boards (RAM etc).
This U-Boot is built for Novena. Be advised that this version, contrary
-to Novena upstream, does not load u-boot.img from the first patition.")
+to Novena upstream, does not load u-boot.img from the first partition.")
(arguments
(substitute-keyword-arguments (package-arguments base)
((#:phases phases)
@@ -648,7 +675,7 @@ to Novena upstream, does not load u-boot.img from the first patition.")
;; allowing it to be installed at a device offset.
(lambda _
(substitute* "configs/novena_defconfig"
- (("CONFIG_SPL_FAT_SUPPORT=y") "# CONFIG_SPL_FAT_SUPPORT is not set"))
+ (("CONFIG_SPL_FS_FAT=y") "# CONFIG_SPL_FS_FAT is not set"))
#t)))))))))
(define-public u-boot-cubieboard
diff --git a/gnu/packages/patches/u-boot-fix-mkimage-header-verification.patch b/gnu/packages/patches/u-boot-fix-mkimage-header-verification.patch
new file mode 100644
index 0000000000..063677db4a
--- /dev/null
+++ b/gnu/packages/patches/u-boot-fix-mkimage-header-verification.patch
@@ -0,0 +1,57 @@
+From 48b52117235928cfd7ef1ec5c3f2cff5d7b03862 Mon Sep 17 00:00:00 2001
+From: Jordan Hand <jordanhand22@gmail.com>
+Date: Wed, 10 Apr 2019 09:46:32 -0700
+Subject: [PATCH,v2] fdt: Fix mkimage list to try every header type
+Origin: https://patchwork.ozlabs.org/patch/1083495/
+
+Image type is not supplied to `mkimage -l`. For this reason, we cannot
+use imagetool_verify_print_header_by_type. Instead, this patch uses
+imagetool_verify_print_header to look through all header types to find
+one where image validation succeeds.
+
+This patch fixes failures in test/image/test-imagetools.sh
+
+Signed-off-by: Jordan Hand <jorhand@microsoft.com>
+Tested-by: Alex Kiernan <alex.kiernan@gmail.com>
+Tested-by: Vagrant Cascadian <vagrant@debian.org>
+---
+ tools/mkimage.c | 23 +++++++++++++++--------
+ 1 file changed, 15 insertions(+), 8 deletions(-)
+
+diff --git a/tools/mkimage.c b/tools/mkimage.c
+index 2899adff81..76c3406d37 100644
+--- a/tools/mkimage.c
++++ b/tools/mkimage.c
+@@ -403,14 +403,21 @@ int main(int argc, char **argv)
+ exit (EXIT_FAILURE);
+ }
+
+- /*
+- * scan through mkimage registry for all supported image types
+- * and verify the input image file header for match
+- * Print the image information for matched image type
+- * Returns the error code if not matched
+- */
+- retval = imagetool_verify_print_header_by_type(ptr, &sbuf,
+- tparams, &params);
++ if (params.fflag) {
++ /*
++ * Verifies the header format based on the expected header for
++ * image type in tparams
++ */
++ retval = imagetool_verify_print_header_by_type(ptr, &sbuf,
++ tparams, &params);
++ } else {
++ /**
++ * When listing the image, we are not given the image type. Simply check all
++ * image types to find one that matches our header
++ */
++ retval = imagetool_verify_print_header(ptr, &sbuf,
++ tparams, &params);
++ }
+
+ (void) munmap((void *)ptr, sbuf.st_size);
+ (void) close (ifd);
+--
+2.20.1
+