mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-05-07 05:10:20 +00:00
python3-evdev: Fix buildpaths errors and reproducibility
Add a submitted patch to support the reproducible generation of intermediate file ecodes.c, then, use it to fix the buildpaths errors. Signed-off-by: Yoann Congal <yoann.congal@smile.fr> Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Armin Kuster <akuster808@gmail.com>
This commit is contained in:
committed by
Armin Kuster
parent
af2a4f072e
commit
d44ba8e991
+116
@@ -0,0 +1,116 @@
|
|||||||
|
From d05c1c9dd298cb95d7feccbddb5caa043a319a01 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Yoann Congal <yoann.congal@smile.fr>
|
||||||
|
Date: Sun, 13 Apr 2025 00:52:13 +0200
|
||||||
|
Subject: [PATCH] Add a reproducibility option for building ecodes.c
|
||||||
|
|
||||||
|
ecodes.c currently contains the kernel info of the build machine and the
|
||||||
|
full path of the input*.h headers: This is not reproducible as output
|
||||||
|
can change even is headers content do not. Downstream distributions
|
||||||
|
might package ecodes.c and get non-reproducible output.
|
||||||
|
|
||||||
|
To fix this: introduce a --reproducible option in the build:
|
||||||
|
- in setup.py build_ecodes command
|
||||||
|
- in underlying genecodes_c.py
|
||||||
|
|
||||||
|
Note: These options are disabled by default so no change is expected in
|
||||||
|
current builds.
|
||||||
|
|
||||||
|
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
|
||||||
|
Upstream-Status: Submitted [https://github.com/gvalkov/python-evdev/pull/242]
|
||||||
|
---
|
||||||
|
setup.py | 13 ++++++++++---
|
||||||
|
src/evdev/genecodes_c.py | 17 +++++++++++------
|
||||||
|
2 files changed, 21 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index 6b721d7..3371199 100755
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -14,7 +14,7 @@ curdir = Path(__file__).resolve().parent
|
||||||
|
ecodes_c_path = curdir / "src/evdev/ecodes.c"
|
||||||
|
|
||||||
|
|
||||||
|
-def create_ecodes(headers=None):
|
||||||
|
+def create_ecodes(headers=None, reproducibility=False):
|
||||||
|
if not headers:
|
||||||
|
include_paths = set()
|
||||||
|
cpath = os.environ.get("CPATH", "").strip()
|
||||||
|
@@ -65,7 +65,10 @@ def create_ecodes(headers=None):
|
||||||
|
|
||||||
|
print("writing %s (using %s)" % (ecodes_c_path, " ".join(headers)))
|
||||||
|
with ecodes_c_path.open("w") as fh:
|
||||||
|
- cmd = [sys.executable, "src/evdev/genecodes_c.py", "--ecodes", *headers]
|
||||||
|
+ cmd = [sys.executable, "src/evdev/genecodes_c.py"]
|
||||||
|
+ if reproducibility:
|
||||||
|
+ cmd.append("--reproducibility")
|
||||||
|
+ cmd.extend(["--ecodes", *headers])
|
||||||
|
run(cmd, check=True, stdout=fh)
|
||||||
|
|
||||||
|
|
||||||
|
@@ -74,17 +77,21 @@ class build_ecodes(Command):
|
||||||
|
|
||||||
|
user_options = [
|
||||||
|
("evdev-headers=", None, "colon-separated paths to input subsystem headers"),
|
||||||
|
+ ("reproducibility", None, "hide host details (host/paths) to create a reproducible output"),
|
||||||
|
]
|
||||||
|
|
||||||
|
def initialize_options(self):
|
||||||
|
self.evdev_headers = None
|
||||||
|
+ self.reproducibility = False
|
||||||
|
|
||||||
|
def finalize_options(self):
|
||||||
|
if self.evdev_headers:
|
||||||
|
self.evdev_headers = self.evdev_headers.split(":")
|
||||||
|
+ if self.reproducibility is None:
|
||||||
|
+ self.reproducibility = False
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
- create_ecodes(self.evdev_headers)
|
||||||
|
+ create_ecodes(self.evdev_headers, reproducibility=self.reproducibility)
|
||||||
|
|
||||||
|
|
||||||
|
class build_ext(_build_ext.build_ext):
|
||||||
|
diff --git a/src/evdev/genecodes_c.py b/src/evdev/genecodes_c.py
|
||||||
|
index 5c2d946..24cad27 100644
|
||||||
|
--- a/src/evdev/genecodes_c.py
|
||||||
|
+++ b/src/evdev/genecodes_c.py
|
||||||
|
@@ -15,22 +15,27 @@ headers = [
|
||||||
|
"/usr/include/linux/uinput.h",
|
||||||
|
]
|
||||||
|
|
||||||
|
-opts, args = getopt.getopt(sys.argv[1:], "", ["ecodes", "stubs"])
|
||||||
|
+opts, args = getopt.getopt(sys.argv[1:], "", ["ecodes", "stubs", "reproducibility"])
|
||||||
|
if not opts:
|
||||||
|
- print("usage: genecodes.py [--ecodes|--stubs] <headers>")
|
||||||
|
+ print("usage: genecodes.py [--ecodes|--stubs] [--reproducibility] <headers>")
|
||||||
|
exit(2)
|
||||||
|
|
||||||
|
if args:
|
||||||
|
headers = args
|
||||||
|
|
||||||
|
+reproducibility = ("--reproducibility", "") in opts
|
||||||
|
+
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
macro_regex = r"#define\s+((?:KEY|ABS|REL|SW|MSC|LED|BTN|REP|SND|ID|EV|BUS|SYN|FF|UI_FF|INPUT_PROP)_\w+)"
|
||||||
|
macro_regex = re.compile(macro_regex)
|
||||||
|
|
||||||
|
-# Uname without hostname.
|
||||||
|
-uname = list(os.uname())
|
||||||
|
-uname = " ".join((uname[0], *uname[2:]))
|
||||||
|
+if reproducibility:
|
||||||
|
+ uname = "hidden for reproducibility"
|
||||||
|
+else:
|
||||||
|
+ # Uname without hostname.
|
||||||
|
+ uname = list(os.uname())
|
||||||
|
+ uname = " ".join((uname[0], *uname[2:]))
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
@@ -138,5 +143,5 @@ elif ("--stubs", "") in opts:
|
||||||
|
template = template_stubs
|
||||||
|
|
||||||
|
body = os.linesep.join(body)
|
||||||
|
-text = template % (uname, headers, body)
|
||||||
|
+text = template % (uname, headers if not reproducibility else ["hidden for reproducibility"], body)
|
||||||
|
print(text.strip())
|
||||||
@@ -3,6 +3,7 @@ HOMEPAGE = "https://github.com/gvalkov/python-evdev"
|
|||||||
LICENSE = "BSD-3-Clause"
|
LICENSE = "BSD-3-Clause"
|
||||||
LIC_FILES_CHKSUM = "file://LICENSE;md5=d7bd1cc4c71b706c7e2d4053aef50f2a"
|
LIC_FILES_CHKSUM = "file://LICENSE;md5=d7bd1cc4c71b706c7e2d4053aef50f2a"
|
||||||
|
|
||||||
|
SRC_URI += "file://0001-Add-a-reproducibility-option-for-building-ecodes.c.patch"
|
||||||
SRC_URI[sha256sum] = "dc640a064cb1c9fe1f8b970dc2039945a2a275d7b7ee62284bf427238abe45ee"
|
SRC_URI[sha256sum] = "dc640a064cb1c9fe1f8b970dc2039945a2a275d7b7ee62284bf427238abe45ee"
|
||||||
|
|
||||||
inherit pypi python_setuptools_build_meta
|
inherit pypi python_setuptools_build_meta
|
||||||
@@ -12,7 +13,8 @@ do_compile:prepend() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
PEP517_BUILD_OPTS = "--config-setting=--build-option='build_ecodes \
|
PEP517_BUILD_OPTS = "--config-setting=--build-option='build_ecodes \
|
||||||
--evdev-headers ${STAGING_DIR_TARGET}/usr/include/linux/input.h:${STAGING_DIR_TARGET}/usr/include/linux/input-event-codes.h'"
|
--evdev-headers ${STAGING_DIR_TARGET}/usr/include/linux/input.h:${STAGING_DIR_TARGET}/usr/include/linux/input-event-codes.h \
|
||||||
|
--reproducibility'"
|
||||||
|
|
||||||
RDEPENDS:${PN} += "\
|
RDEPENDS:${PN} += "\
|
||||||
python3-ctypes \
|
python3-ctypes \
|
||||||
@@ -21,4 +23,3 @@ RDEPENDS:${PN} += "\
|
|||||||
python3-shell \
|
python3-shell \
|
||||||
python3-stringold \
|
python3-stringold \
|
||||||
"
|
"
|
||||||
INSANE_SKIP:${PN}-src = "buildpaths"
|
|
||||||
|
|||||||
Reference in New Issue
Block a user