[bug#33923] gnu: vboot-utils: Fix building on armhf-linux.

Message ID 20181230150459.19028-1-kkebreau@posteo.net
State Accepted
Headers show
Series [bug#33923] gnu: vboot-utils: Fix building on armhf-linux. | expand

Checks

Context Check Description
cbaines/applying patch fail Apply failed

Commit Message

Kei Kebreau Dec. 30, 2018, 3:04 p.m. UTC
* gnu/packages/bootloaders.scm (vboot-utils)[source]: Add patches.
[arguments]: Conditionally add "HOST_ARCH=arm" to #:make-flags.
* gnu/packages/patches/vboot-utils-fix-format-load-address.patch,
gnu/packages/patches/vboot-utils-fix-tests-show-contents.patch,
gnu/packages/patches/vboot-utils-skip-test-workbuf.patch: New files.
* gnu/local.mk (dist_patch_DATA): Add them.
---
 gnu/local.mk                                  |   3 +
 gnu/packages/bootloaders.scm                  |  17 ++-
 .../vboot-utils-fix-format-load-address.patch |  33 ++++
 .../vboot-utils-fix-tests-show-contents.patch | 142 ++++++++++++++++++
 .../vboot-utils-skip-test-workbuf.patch       |  21 +++
 5 files changed, 215 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/vboot-utils-fix-format-load-address.patch
 create mode 100644 gnu/packages/patches/vboot-utils-fix-tests-show-contents.patch
 create mode 100644 gnu/packages/patches/vboot-utils-skip-test-workbuf.patch

Comments

Danny Milosavljevic Jan. 3, 2019, 11:07 a.m. UTC | #1
Hmm, OK, but why not use the newest release?  Apparently, there's
release-R72-11316.B already.

Although cmd_bdb seems to be still broken in the newer release.
And so are the tests.
And so is the workbuf test check.

So your patch definitely LGTM as is!

Additionally, the patches are not in upstream master, so it might make
sense to send those to the them, so that we don't have to maintain the
extra patches forever.
Kei Kebreau Jan. 3, 2019, 8:42 p.m. UTC | #2
Danny Milosavljevic <dannym@scratchpost.org> writes:

> Hmm, OK, but why not use the newest release?  Apparently, there's
> release-R72-11316.B already.
>
> Although cmd_bdb seems to be still broken in the newer release.
> And so are the tests.
> And so is the workbuf test check.
>
> So your patch definitely LGTM as is!
>
> Additionally, the patches are not in upstream master, so it might make
> sense to send those to the them, so that we don't have to maintain the
> extra patches forever.

I've pushed the changes to master, and I'll see about sending the
patches upstream if Debian hasn't done that already. Thanks for reviewing!

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 925d955a6..fc0f9bb9f 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1227,6 +1227,9 @@  dist_patch_DATA =						\
   %D%/packages/patches/upx-fix-CVE-2017-15056.patch		\
   %D%/packages/patches/valgrind-enable-arm.patch		\
   %D%/packages/patches/valgrind-glibc-compat.patch		\
+  %D%/packages/patches/vboot-utils-skip-test-workbuf.patch	\
+  %D%/packages/patches/vboot-utils-fix-tests-show-contents.patch	\
+  %D%/packages/patches/vboot-utils-fix-format-load-address.patch	\
   %D%/packages/patches/vinagre-revert-1.patch                   \
   %D%/packages/patches/vinagre-revert-2.patch                   \
   %D%/packages/patches/virglrenderer-CVE-2017-6386.patch 	\
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 2a595fafa..69b4a904b 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -673,10 +673,25 @@  board-independent tools.")))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0h0m3l69vp9dr6xrs1p6y7ilkq3jq8jraw2z20kqfv7lvc9l1lxj"))))
+                "0h0m3l69vp9dr6xrs1p6y7ilkq3jq8jraw2z20kqfv7lvc9l1lxj"))
+              (patches
+               (search-patches "vboot-utils-skip-test-workbuf.patch"
+                               "vboot-utils-fix-tests-show-contents.patch"
+                               "vboot-utils-fix-format-load-address.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags (list "CC=gcc"
+                          ;; On ARM, we must pass "HOST_ARCH=arm" so that the
+                          ;; ${HOST_ARCH} and ${ARCH} variables in the makefile
+                          ;; match.  Otherwise, ${HOST_ARCH} will be assigned
+                          ;; "armv7l", the value of `uname -m`, and will not
+                          ;; match ${ARCH}, which will make the tests require
+                          ;; QEMU for testing.
+                          ,@(if (string-prefix? "arm"
+                                                (or (%current-target-system)
+                                                    (%current-system)))
+                                '("HOST_ARCH=arm")
+                                '())
                           (string-append "DESTDIR=" (assoc-ref %outputs "out")))
        #:phases (modify-phases %standard-phases
                   (add-after 'unpack 'patch-hard-coded-paths
diff --git a/gnu/packages/patches/vboot-utils-fix-format-load-address.patch b/gnu/packages/patches/vboot-utils-fix-format-load-address.patch
new file mode 100644
index 000000000..899531e40
--- /dev/null
+++ b/gnu/packages/patches/vboot-utils-fix-format-load-address.patch
@@ -0,0 +1,33 @@ 
+This patch was copied from Debian.
+
+Description: Fix format load_address for 32 bits architectures
+ The offset and load_address are 64bits integers
+ On 32bits we have to use strtoull (instead of strtoul) to parse number
+ into 64bits unsigned integers. Without this the parsed numbers are
+ truncated to 2^32-1.
+Author: Sophie Brun <sophie@freexian.com>
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=881997
+Forwarded: https://bugs.chromium.org/p/chromium/issues/detail?id=786969
+Last-Update: 2017-11-20
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/futility/cmd_bdb.c
++++ b/futility/cmd_bdb.c
+@@ -637,7 +637,7 @@ static int do_bdb(int argc, char *argv[]
+ 			}
+ 			break;
+ 		case OPT_OFFSET:
+-			offset = strtoul(optarg, &e, 0);
++			offset = strtoull(optarg, &e, 0);
+ 			if (!*optarg || (e && *e)) {
+ 				fprintf(stderr, "Invalid --offset\n");
+ 				parse_error = 1;
+@@ -658,7 +658,7 @@ static int do_bdb(int argc, char *argv[]
+ 			}
+ 			break;
+ 		case OPT_LOAD_ADDRESS:
+-			load_address = strtoul(optarg, &e, 0);
++			load_address = strtoull(optarg, &e, 0);
+ 			if (!*optarg || (e && *e)) {
+ 				fprintf(stderr, "Invalid --load_address\n");
+ 				parse_error = 1;
diff --git a/gnu/packages/patches/vboot-utils-fix-tests-show-contents.patch b/gnu/packages/patches/vboot-utils-fix-tests-show-contents.patch
new file mode 100644
index 000000000..8e0c691a2
--- /dev/null
+++ b/gnu/packages/patches/vboot-utils-fix-tests-show-contents.patch
@@ -0,0 +1,142 @@ 
+This patch was copied from Debian.
+
+Description: Fix tests/futility/test_show_contents.sh
+ Tests compare generated files containing the file path and upstream files
+ ("expected output") containing path like
+ "/mnt/host/source/src/platform/vboot_reference/tests/".  They can't
+ match. Drop these lines mentioning paths in the generated files and in
+ the upstream provided files to avoid failures.
+Author: Sophie Brun <sophie@freexian.com>
+Last-Update: 2017-11-14
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/tests/futility/expect_output/show.tests_devkeys_kernel.keyblock
++++ b/tests/futility/expect_output/show.tests_devkeys_kernel.keyblock
+@@ -1,4 +1,3 @@
+-Key block:               /mnt/host/source/src/platform/vboot_reference/tests/devkeys/kernel.keyblock
+   Signature:             ignored
+   Size:                  0x4b8
+   Flags:                 7  !DEV DEV !REC
+--- a/tests/futility/expect_output/show.tests_devkeys_root_key.vbprivk
++++ b/tests/futility/expect_output/show.tests_devkeys_root_key.vbprivk
+@@ -1,4 +1,3 @@
+-Private Key file:      /mnt/host/source/src/platform/vboot_reference/tests/devkeys/root_key.vbprivk
+   Vboot API:           1.0
+   Algorithm:           11 RSA8192 SHA512
+   Key sha1sum:         b11d74edd286c144e1135b49e7f0bc20cf041f10
+--- a/tests/futility/expect_output/show.tests_devkeys_root_key.vbpubk
++++ b/tests/futility/expect_output/show.tests_devkeys_root_key.vbpubk
+@@ -1,4 +1,3 @@
+-Public Key file:       /mnt/host/source/src/platform/vboot_reference/tests/devkeys/root_key.vbpubk
+   Vboot API:           1.0
+   Algorithm:           11 RSA8192 SHA512
+   Key Version:         1
+--- a/tests/futility/expect_output/show.tests_futility_data_bios_mario_mp.bin
++++ b/tests/futility/expect_output/show.tests_futility_data_bios_mario_mp.bin
+@@ -1,4 +1,3 @@
+-BIOS:                    /mnt/host/source/src/platform/vboot_reference/tests/futility/data/bios_mario_mp.bin
+ GBB header:              GBB Area
+   Version:               1.0
+   Flags:                 0x00000000
+--- a/tests/futility/expect_output/show.tests_futility_data_bios_zgb_mp.bin
++++ b/tests/futility/expect_output/show.tests_futility_data_bios_zgb_mp.bin
+@@ -1,4 +1,3 @@
+-BIOS:                    /mnt/host/source/src/platform/vboot_reference/tests/futility/data/bios_zgb_mp.bin
+ GBB header:              GBB
+   Version:               1.0
+   Flags:                 0x00000000
+--- a/tests/futility/expect_output/show.tests_futility_data_fw_gbb.bin
++++ b/tests/futility/expect_output/show.tests_futility_data_fw_gbb.bin
+@@ -1,4 +1,3 @@
+-GBB header:              /mnt/host/source/src/platform/vboot_reference/tests/futility/data/fw_gbb.bin
+   Version:               1.1
+   Flags:                 0x00000039
+   Regions:                 offset       size
+--- a/tests/futility/expect_output/show.tests_futility_data_fw_vblock.bin
++++ b/tests/futility/expect_output/show.tests_futility_data_fw_vblock.bin
+@@ -1,4 +1,3 @@
+-Key block:               /mnt/host/source/src/platform/vboot_reference/tests/futility/data/fw_vblock.bin
+   Signature:             ignored
+   Size:                  0x8b8
+   Flags:                 7  !DEV DEV !REC
+--- a/tests/futility/expect_output/show.tests_futility_data_kern_preamble.bin
++++ b/tests/futility/expect_output/show.tests_futility_data_kern_preamble.bin
+@@ -1,4 +1,3 @@
+-Kernel partition:        /mnt/host/source/src/platform/vboot_reference/tests/futility/data/kern_preamble.bin
+ Key block:
+   Signature:             ignored
+   Size:                  0x5b8
+--- a/tests/futility/expect_output/show.tests_futility_data_sample.vbprik2
++++ b/tests/futility/expect_output/show.tests_futility_data_sample.vbprik2
+@@ -1,4 +1,3 @@
+-Private key file:      /mnt/host/source/src/platform/vboot_reference/tests/futility/data/sample.vbprik2
+   Vboot API:           2.1
+   Desc:                "sample vb21 keypair"
+   Signature Algorithm: 5 RSA8192
+--- a/tests/futility/expect_output/show.tests_futility_data_sample.vbpubk2
++++ b/tests/futility/expect_output/show.tests_futility_data_sample.vbpubk2
+@@ -1,4 +1,3 @@
+-Public Key file:       /mnt/host/source/src/platform/vboot_reference/tests/futility/data/sample.vbpubk2
+   Vboot API:           2.1
+   Desc:                "sample vb21 keypair"
+   Signature Algorithm: 5 RSA8192
+--- a/tests/futility/expect_output/show.tests_testkeys_key_rsa2048.pem
++++ b/tests/futility/expect_output/show.tests_testkeys_key_rsa2048.pem
+@@ -1,3 +1,2 @@
+-Private Key file:      /mnt/host/source/src/platform/vboot_reference/tests/testkeys/key_rsa2048.pem
+   Key length:          2048
+   Key sha1sum:         bfb2fa9188a87bf766dd7c313ea6802553b646b6
+--- a/tests/futility/expect_output/show.tests_testkeys_key_rsa8192.pub.pem
++++ b/tests/futility/expect_output/show.tests_testkeys_key_rsa8192.pub.pem
+@@ -1,3 +1,2 @@
+-Public Key file:      /mnt/host/source/src/platform/vboot_reference/tests/testkeys/key_rsa8192.pub.pem
+   Key length:          8192
+   Key sha1sum:         f1afa44a1aed0d0e9ff630579df920a725e9de5e
+--- a/tests/futility/test_show_contents.sh
++++ b/tests/futility/test_show_contents.sh
+@@ -29,7 +29,7 @@ for file in $SHOW_FILES; do
+     outfile="show.${file//\//_}"
+     gotfile="${OUTDIR}/${outfile}"
+     wantfile="${SRCDIR}/tests/futility/expect_output/${outfile}"
+-    ${FUTILITY} show "${SRCDIR}/${file}" | tee "${gotfile}"
++    ${FUTILITY} show "${SRCDIR}/${file}" | grep -v "tests/" | tee "${gotfile}"
+ 
+     # Uncomment this to update the expected output
+     #cp ${gotfile} ${wantfile}
+@@ -48,7 +48,7 @@ for file in $VBUTIL_KEY_FILES; do
+     outfile="vbutil_key.${file//\//_}"
+     gotfile="${OUTDIR}/${outfile}"
+     wantfile="${SRCDIR}/tests/futility/expect_output/${outfile}"
+-    ${FUTILITY} vbutil_key --unpack "${SRCDIR}/${file}" | tee "${gotfile}"
++    ${FUTILITY} vbutil_key --unpack "${SRCDIR}/${file}" | grep -v "tests/" | tee "${gotfile}"
+ 
+     # Uncomment this to update the expected output
+     #cp ${gotfile} ${wantfile}
+@@ -64,7 +64,7 @@ gotfile="${OUTDIR}/${outfile}"
+ wantfile="${SRCDIR}/tests/futility/expect_output/${outfile}"
+ ${FUTILITY} vbutil_keyblock --unpack "${SRCDIR}/${file}" \
+     --signpubkey "${SRCDIR}/tests/devkeys/kernel_subkey.vbpubk" \
+-    | tee "${gotfile}"
++    | grep -v "tests/" | tee "${gotfile}"
+ 
+ # Uncomment this to update the expected output
+ #cp ${gotfile} ${wantfile}
+--- a/tests/futility/expect_output/vbutil_key.tests_devkeys_root_key.vbprivk
++++ b/tests/futility/expect_output/vbutil_key.tests_devkeys_root_key.vbprivk
+@@ -1,2 +1 @@
+-Private Key file:  /mnt/host/source/src/platform/vboot_reference/tests/devkeys/root_key.vbprivk
+ Algorithm:         11 RSA8192 SHA512
+--- a/tests/futility/expect_output/vbutil_keyblock.tests_devkeys_kernel.keyblock
++++ b/tests/futility/expect_output/vbutil_keyblock.tests_devkeys_kernel.keyblock
+@@ -1,4 +1,3 @@
+-Key block file:       /mnt/host/source/src/platform/vboot_reference/tests/devkeys/kernel.keyblock
+ Signature             valid
+ Flags:                7  !DEV DEV !REC
+ Data key algorithm:   4 RSA2048 SHA256
+--- a/tests/futility/expect_output/vbutil_key.tests_devkeys_root_key.vbpubk
++++ b/tests/futility/expect_output/vbutil_key.tests_devkeys_root_key.vbpubk
+@@ -1,4 +1,3 @@
+-Public Key file:   /mnt/host/source/src/platform/vboot_reference/tests/devkeys/root_key.vbpubk
+ Algorithm:         11 RSA8192 SHA512
+ Key Version:       1
+ Key sha1sum:       b11d74edd286c144e1135b49e7f0bc20cf041f10
diff --git a/gnu/packages/patches/vboot-utils-skip-test-workbuf.patch b/gnu/packages/patches/vboot-utils-skip-test-workbuf.patch
new file mode 100644
index 000000000..9618c76f8
--- /dev/null
+++ b/gnu/packages/patches/vboot-utils-skip-test-workbuf.patch
@@ -0,0 +1,21 @@ 
+This patch was copied from Debian.
+
+Description: skip the workbuf test if VB2_WORKBUF_ALIGN different from 16 
+Author: Sophie Brun <sophie@freexian.com>
+Last-Update: 2015-12-03
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/tests/vb2_common_tests.c
++++ b/tests/vb2_common_tests.c
+@@ -70,6 +70,11 @@ static void test_workbuf(void)
+ 	/* NOTE: There are several magic numbers below which assume that
+ 	 * VB2_WORKBUF_ALIGN == 16 */
+ 
++        /* Skip the tests if VB2_WORKBUF_ALIGN != 16 */
++        if (VB2_WORKBUF_ALIGN != 16) {
++            return;
++        }
++
+ 	/* Init */
+ 	vb2_workbuf_init(&wb, p0, 64);
+ 	TEST_EQ(vb2_offset_of(p0, wb.buf), 0, "Workbuf init aligned");