diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-03-01 13:00:47 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-03-02 14:15:27 +0000 |
commit | 14e7cc6c6040b983024bec56fbd32d9101507ff0 (patch) | |
tree | 1f63baacee0823abdbd5cdfe2595605c3846d965 /meta | |
parent | 6b31f6b9a6a12a12d1d10b8634012e50ef778ec4 (diff) | |
download | openembedded-core-contrib-14e7cc6c6040b983024bec56fbd32d9101507ff0.tar.gz |
qemu: Determinism fixes
Add a patch to address two determinism issues and allow reproducible
builds.
Also strip full paths we don't need out of some ptest files,
we can use the installed binaries.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/lib/oeqa/selftest/cases/reproducible.py | 1 | ||||
-rw-r--r-- | meta/recipes-devtools/qemu/qemu.inc | 4 | ||||
-rw-r--r-- | meta/recipes-devtools/qemu/qemu/determinism.patch | 41 |
3 files changed, 45 insertions, 1 deletions
diff --git a/meta/lib/oeqa/selftest/cases/reproducible.py b/meta/lib/oeqa/selftest/cases/reproducible.py index bbc5c0d8a4..bd260a4139 100644 --- a/meta/lib/oeqa/selftest/cases/reproducible.py +++ b/meta/lib/oeqa/selftest/cases/reproducible.py @@ -41,7 +41,6 @@ exclude_packages = [ 'ovmf-shell-efi', 'perf', 'python3-cython', - 'qemu', 'ruby-ri-docs' ] diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc index cb854914b2..a6dc941624 100644 --- a/meta/recipes-devtools/qemu/qemu.inc +++ b/meta/recipes-devtools/qemu/qemu.inc @@ -28,6 +28,7 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \ file://mingwfix.patch \ file://mmap.patch \ file://mmap2.patch \ + file://determinism.patch \ file://0001-tests-meson.build-use-relative-path-to-refer-to-file.patch \ " UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar" @@ -57,6 +58,9 @@ do_install_ptest() { sed -i -e 's,${HOSTTOOLS_DIR}/python3,${bindir}/python3,' \ ${D}/${PTEST_PATH}/tests/qemu-iotests/common.env sed -i -e "1s,#!/usr/bin/bash,#!${base_bindir}/bash," ${D}${PTEST_PATH}/tests/data/acpi/disassemle-aml.sh + + # Strip the paths from the QEMU variable, we can use PATH + sed -i -e "s#^QEMU=.*/qemu-#QEMU=qemu-#g" ${D}${PTEST_PATH}/tests/tcg/*.mak } # QEMU_TARGETS is overridable variable diff --git a/meta/recipes-devtools/qemu/qemu/determinism.patch b/meta/recipes-devtools/qemu/qemu/determinism.patch new file mode 100644 index 0000000000..cb1c907777 --- /dev/null +++ b/meta/recipes-devtools/qemu/qemu/determinism.patch @@ -0,0 +1,41 @@ +When sources are included within debug information, a couple of areas of the +qemu build are not reproducible due to either full buildpaths or timestamps. + +Replace the full paths with relative ones. I couldn't figure out how to get +meson to pass relative paths but we can fix that in the script. + +For the keymaps, omit the timestamps as they don't matter to us. + +Upstream-Status: Pending [some version of all/part of this may be accepted] +RP 2021/3/1 + +Index: qemu-5.2.0/scripts/decodetree.py +=================================================================== +--- qemu-5.2.0.orig/scripts/decodetree.py ++++ qemu-5.2.0/scripts/decodetree.py +@@ -1303,8 +1303,8 @@ def main(): + toppat = ExcMultiPattern(0) + + for filename in args: +- input_file = filename +- f = open(filename, 'r') ++ input_file = os.path.relpath(filename) ++ f = open(input_file, 'r') + parse_file(f, toppat) + f.close() + +Index: qemu-5.2.0/ui/keycodemapdb/tools/keymap-gen +=================================================================== +--- qemu-5.2.0.orig/ui/keycodemapdb/tools/keymap-gen ++++ qemu-5.2.0/ui/keycodemapdb/tools/keymap-gen +@@ -317,9 +317,8 @@ class LanguageGenerator(object): + raise NotImplementedError() + + def generate_header(self, database, args): +- today = time.strftime("%Y-%m-%d %H:%M") + self._boilerplate([ +- "This file is auto-generated from keymaps.csv on %s" % today, ++ "This file is auto-generated from keymaps.csv", + "Database checksum sha256(%s)" % database.mapchecksum, + "To re-generate, run:", + " %s" % args, |