]> code.ossystems Code Review - openembedded-core.git/commitdiff
qemu: Determinism fixes
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 1 Mar 2021 13:00:47 +0000 (13:00 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 2 Mar 2021 14:15:27 +0000 (14:15 +0000)
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>
meta/lib/oeqa/selftest/cases/reproducible.py
meta/recipes-devtools/qemu/qemu.inc
meta/recipes-devtools/qemu/qemu/determinism.patch [new file with mode: 0644]

index bbc5c0d8a4fff5a179dfe128dcb015c2204081d7..bd260a4139376e56fdb30e20574ae1b268216222 100644 (file)
@@ -41,7 +41,6 @@ exclude_packages = [
        'ovmf-shell-efi',
        'perf',
        'python3-cython',
-       'qemu',
        'ruby-ri-docs'
        ]
 
index cb854914b2e3b599c182a6ca997685dbc71be356..a6dc94162475889c40048f59e30faaaed8940634 100644 (file)
@@ -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 (file)
index 0000000..cb1c907
--- /dev/null
@@ -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,