From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([209.51.188.92]:41399) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hGG0t-0002JX-Bq for guix-patches@gnu.org; Tue, 16 Apr 2019 00:48:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hGG0r-0002jX-Ge for guix-patches@gnu.org; Tue, 16 Apr 2019 00:48:07 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:50839) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hGG0o-0002ik-MR for guix-patches@gnu.org; Tue, 16 Apr 2019 00:48:03 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hGG0o-0007Rt-E4 for guix-patches@gnu.org; Tue, 16 Apr 2019 00:48:02 -0400 Subject: [bug#35217] gnu: u-boot: Update to 2019.04. Resent-Message-ID: From: Vagrant Cascadian In-Reply-To: <20190415230214.31877ad1@scratchpost.org> References: <87h8b6ia13.fsf@ponder> <87zhox33vu.fsf@ponder> <87v9zl33hh.fsf@ponder> <20190415230214.31877ad1@scratchpost.org> Date: Mon, 15 Apr 2019 21:46:57 -0700 Message-ID: <87lg0a1rr2.fsf@ponder> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Danny Milosavljevic Cc: 35217@debbugs.gnu.org --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On 2019-04-15, Danny Milosavljevic wrote: > On Wed, 10 Apr 2019 15:22:18 -0700 > Vagrant Cascadian wrote: > >> > On 2019-04-10, Vagrant Cascadian wrote: >> > * gnu/packages/bootloaders (u-boot): Update to 2019.04.=20=20 >> ... >> > (u-boot-am335x-evm): New variable. >> > (u-boot-am335x-boneblack): Deprecate variable.=20=20 >>=20 >> The am335x-boneblack configuration was dropped from upstream. >>=20 >> The am335x-evm image is considerably larger than the am335x-boneblack >> images, which leads to issues when installing at a device offset, as it >> will overwrite the first partition unless the first partition starts >> significantly later than most tools (parted, cfdisk) default of sector >> 2048 (beagleboard.org images start the first partition at sector 8192). >>=20 >> The embedded-os-installation code should probably check to make sure >> they aren't trampling the first partition if installing to the raw >> device offset. > > That would make the parted bindings a hard dependency, probably even > build-side. But I think that would still be better than the alternative: > destroying user filesystems. Could do some math; e.g. the offset is 768, first sector is 2048. So if 2048-768-(size-of-in-sectors u-boot.img) >> 0, it should be ok. Better checking that done currently, at least. But more sophisticated, of course, would be checking the actual layout of the partition table... some targets (pine64+/pinebook) have offsets that conflict with GPT partition tables, for example. >> Alternately, it's possible to copy the u-boot.img onto the first FAT >> partition of the microSD/eMMC, which will be loaded instead of the >> offset. But that takes some rethinking of how to install the bootloader >> (which would be good to not diverge from upstream for other platforms, >> such as u-boot-novena). > > Yeah, I think sooner or later it's going to come to this. Might as well > bite the bullet now. Hmmm... >> In light of all that, I'm not sure what a proper way forward is... > > Yeah, sounds like a bad situation with no nice solution that allows > updating of existing installations. In that case, keeping existing > installations on the old version would be preferrable to breaking > them. Short of that, here's an updated u-boot 2019.04 patch that: =2D Generates a u-boot-am335x-boneblack package with a slightly modified am335x_evm configuration removing extra device-trees; that *should* be small enough to fit with the common partition tables (but so far untested). It theoretically has about 80k of wiggle-room for u-boot.img to grow before it becomes a problem again. =2D Better commented patch fixing mkimage to pass test-imagetools test suite. Patch was accepted in at least one of the maintainer trees upstream. live well, vagrant --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-gnu-u-boot-Update-to-2019.04.patch Content-Transfer-Encoding: quoted-printable From=202d9f80129801475002f6368074356a5eff9f24b4 Mon Sep 17 00:00:00 2001 From: Vagrant Cascadian Date: Mon, 18 Feb 2019 04:01:23 +0000 Subject: [PATCH] gnu: u-boot: Update to 2019.04. * gnu/packages/bootloaders (u-boot): Update to 2019.04. [source]: Add patch. (u-boot-novena): Update dynamic patch to handle variable rename. (u-boot-am335x-evm): New variable. (u-boot-am335x-boneblack): Build with modified am335x-evm config. (u-boot-novena): Fix typo in description. * gnu/packages/patches/u-boot-fix-mkimage-header-verification.patch: New fi= le. * gnu/local.mk (dist_patch_DATA): Update accordingly. =2D-- gnu/local.mk | 1 + gnu/packages/bootloaders.scm | 39 +++++++++++-- ...boot-fix-mkimage-header-verification.patch | 57 +++++++++++++++++++ 3 files changed, 91 insertions(+), 6 deletions(-) create mode 100644 gnu/packages/patches/u-boot-fix-mkimage-header-verifica= tion.patch diff --git a/gnu/local.mk b/gnu/local.mk index df96b98f07..660e96c856 100644 =2D-- a/gnu/local.mk +++ b/gnu/local.mk @@ -1308,6 +1308,7 @@ dist_patch_DATA =3D \ %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 d6ef7d52b5..a2ac151978 100644 =2D-- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -378,7 +378,7 @@ tree binary files. These are board description files u= sed by Linux and BSD.") (define u-boot (package (name "u-boot") =2D (version "2019.01") + (version "2019.04") (source (origin (method url-fetch) (uri (string-append @@ -386,7 +386,10 @@ tree binary files. These are board description files = used by Linux and BSD.") "u-boot-" version ".tar.bz2")) (sha256 (base32 =2D "08hwsmh5xsb1gcxsv8gvx00bai938dm5y3889n8jif3a8rd7xgah"))= )) + "1vwv4bgbl7fjcm073zrphn17hnz5h5h778f88ivdsgbb2lnpgdvn")) + (patches + (search-patches=20 + "u-boot-fix-mkimage-header-verification.patch")))) (native-inputs `(("bc" ,bc) ("bison" ,bison) @@ -577,8 +580,32 @@ board-independent tools."))) (define-public u-boot-malta (make-u-boot-package "malta" "mips64el-linux-gnuabi64")) =20 =2D(define-public u-boot-beagle-bone-black =2D (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 th= at +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=3D.*$") "CONFIG_OF_LIST=3D\"am335x-ev= m am335x-boneblack\"\n")) + #t))))))))) + +(define-public u-boot-am335x-evm + (make-u-boot-package "am335x_evm" "arm-linux-gnueabihf")) =20 (define-public (make-u-boot-sunxi64-package board triplet) (let ((base (make-u-boot-package board triplet))) @@ -637,7 +664,7 @@ board-independent tools."))) also initializes the boards (RAM etc). =20 This U-Boot is built for Novena. Be advised that this version, contrary =2Dto 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) @@ -647,7 +674,7 @@ to Novena upstream, does not load u-boot.img from the f= irst patition.") ;; allowing it to be installed at a device offset. (lambda _ (substitute* "configs/novena_defconfig" =2D (("CONFIG_SPL_FAT_SUPPORT=3Dy") "# CONFIG_SPL_FAT_SUP= PORT is not set")) + (("CONFIG_SPL_FS_FAT=3Dy") "# CONFIG_SPL_FS_FAT is not = set")) #t))))))))) =20 (define-public u-boot-cubieboard diff --git a/gnu/packages/patches/u-boot-fix-mkimage-header-verification.pa= tch b/gnu/packages/patches/u-boot-fix-mkimage-header-verification.patch new file mode 100644 index 0000000000..063677db4a =2D-- /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 +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 +Tested-by: Alex Kiernan +Tested-by: Vagrant Cascadian +--- + 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); + } +=20 +- /* +- * 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 =3D imagetool_verify_print_header_by_type(ptr, &sbuf, +- tparams, ¶ms); ++ if (params.fflag) { ++ /* ++ * Verifies the header format based on the expected header for ++ * image type in tparams ++ */ ++ retval =3D imagetool_verify_print_header_by_type(ptr, &sbuf, ++ tparams, ¶ms); ++ } else { ++ /** ++ * When listing the image, we are not given the image type. Simply che= ck all ++ * image types to find one that matches our header ++ */ ++ retval =3D imagetool_verify_print_header(ptr, &sbuf, ++ tparams, ¶ms); ++ } +=20 + (void) munmap((void *)ptr, sbuf.st_size); + (void) close (ifd); +--=20 +2.20.1 + =2D-=20 2.20.1 --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCXLVeQgAKCRDcUY/If5cW qj3/AP4ue2S14GY3dVIFulUDKSdd8yrBsfoWCZm9tMIh8qhf9QEAiMw9vd675vwx 6Lem2pyA2udTL7/mDKsnDSmfPcOpywE= =i3IU -----END PGP SIGNATURE----- --==-=-=--