From b634b5c253cb3351eb074c64be838f72aa83f54d Mon Sep 17 00:00:00 2001 From: Kei Kebreau Date: Sun, 30 Dec 2018 09:46:29 -0500 Subject: [PATCH] gnu: vboot-utils: Fix building on armhf-linux. * 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 diff --git a/gnu/local.mk b/gnu/local.mk index 5f3a4b00d8..d50e217849 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1228,6 +1228,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-fix-format-load-address.patch \ + %D%/packages/patches/vboot-utils-fix-tests-show-contents.patch \ + %D%/packages/patches/vboot-utils-skip-test-workbuf.patch \ %D%/packages/patches/vinagre-newer-freerdp.patch \ %D%/packages/patches/vinagre-newer-rdp-parameters.patch \ %D%/packages/patches/virglrenderer-CVE-2017-6386.patch \ diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 2a595fafab..69b4a904be 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 0000000000..899531e40e --- /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 +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 0000000000..8e0c691a22 --- /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 +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 0000000000..9618c76f83 --- /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 +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");