How do libfprint's meson rules for producing the executable and then running it look like?
Any meson based recipe has a similar entry in ${WORKDIR}/meson.cross: exe_wrapper = '/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/glib-2.0/1_2.74.6-r0/meson-qemuwrapper' And the use of the exe_wrapper is documented here: https://mesonbuild.com/Cross-compilation.html Alex On Thu, 30 Mar 2023 at 17:24, Böszörményi Zoltán <zbos...@gmail.com> wrote: > > 2023. 03. 30. 15:50 keltezéssel, Alexander Kanavin írta: > > Meson is specifically configured in yocto to user qemu usermode as the > > wrapper to run cross binaries, so can libfprint build configuration be > > tweaked to use that? This would avoid all the nasty -native extensions > > and modifications. > > How would I do that? This is the error if I not use the > externally built executables: > > | [122/124] > /home/zozo/dtd-yocto-4.2/tmp-sicom-glibc/work/corei7-64-oe-linux/libfprint/1.94.5-r0/recipe-sysroot-native/usr/bin/meson.real > --internal exe --capture libfprint/70-libfprint-2.rules -- > /home/zozo/dtd-yocto-4.2/tmp-sicom-glibc/work/corei7-64-oe-linux/libfprint/1.94.5-r0/build/libfprint/fprint-list-udev-rules > | FAILED: libfprint/70-libfprint-2.rules > | > /home/zozo/dtd-yocto-4.2/tmp-sicom-glibc/work/corei7-64-oe-linux/libfprint/1.94.5-r0/recipe-sysroot-native/usr/bin/meson.real > --internal exe --capture libfprint/70-libfprint-2.rules -- > /home/zozo/dtd-yocto-4.2/tmp-sicom-glibc/work/corei7-64-oe-linux/libfprint/1.94.5-r0/build/libfprint/fprint-list-udev-rules > | Traceback (most recent call last): > | File > "/home/zozo/dtd-yocto-4.2/tmp-sicom-glibc/work/corei7-64-oe-linux/libfprint/1.94.5-r0/recipe-sysroot-native/usr/bin/meson.real", > line 8, in <module> > | sys.exit(main()) > | ^^^^^^ > | File > "/home/zozo/dtd-yocto-4.2/tmp-sicom-glibc/work/corei7-64-oe-linux/libfprint/1.94.5-r0/recipe-sysroot-native/usr/lib/python3.11/site-packages/mesonbuild/mesonmain.py", > line 287, in main > | return run(sys.argv[1:], launcher) > | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ > | File > "/home/zozo/dtd-yocto-4.2/tmp-sicom-glibc/work/corei7-64-oe-linux/libfprint/1.94.5-r0/recipe-sysroot-native/usr/lib/python3.11/site-packages/mesonbuild/mesonmain.py", > line 275, in run > | return run_script_command(args[1], args[2:]) > | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > | File > "/home/zozo/dtd-yocto-4.2/tmp-sicom-glibc/work/corei7-64-oe-linux/libfprint/1.94.5-r0/recipe-sysroot-native/usr/lib/python3.11/site-packages/mesonbuild/mesonmain.py", > line 223, in run_script_command > | return module.run(script_args) > | ^^^^^^^^^^^^^^^^^^^^^^^ > | File > "/home/zozo/dtd-yocto-4.2/tmp-sicom-glibc/work/corei7-64-oe-linux/libfprint/1.94.5-r0/recipe-sysroot-native/usr/lib/python3.11/site-packages/mesonbuild/scripts/meson_exe.py", > line 121, in run > | return run_exe(exe) > | ^^^^^^^^^^^^ > | File > "/home/zozo/dtd-yocto-4.2/tmp-sicom-glibc/work/corei7-64-oe-linux/libfprint/1.94.5-r0/recipe-sysroot-native/usr/lib/python3.11/site-packages/mesonbuild/scripts/meson_exe.py", > line 66, in run_exe > | p = subprocess.Popen(cmd_args, env=child_env, cwd=exe.workdir, > | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > | File > "/home/zozo/dtd-yocto-4.2/tmp-sicom-glibc/work/corei7-64-oe-linux/libfprint/1.94.5-r0/recipe-sysroot-native/usr/lib/python3.11/subprocess.py", > line 1024, in __init__ > | self._execute_child(args, executable, preexec_fn, close_fds, > | File > "/home/zozo/dtd-yocto-4.2/tmp-sicom-glibc/work/corei7-64-oe-linux/libfprint/1.94.5-r0/recipe-sysroot-native/usr/lib/python3.11/subprocess.py", > line 1789, in _execute_child > | self._posix_spawn(args, executable, env, restore_signals, > | File > "/home/zozo/dtd-yocto-4.2/tmp-sicom-glibc/work/corei7-64-oe-linux/libfprint/1.94.5-r0/recipe-sysroot-native/usr/lib/python3.11/subprocess.py", > line 1733, in _posix_spawn > | self.pid = os.posix_spawn(executable, args, env, **kwargs) > | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > | FileNotFoundError: [Errno 2] No such file or directory: > '/home/zozo/dtd-yocto-4.2/tmp-sicom-glibc/work/corei7-64-oe-linux/libfprint/1.94.5-r0/build/libfprint/fprint-list-udev-rules' > > The executable is built, it is there, and it's using the target system's > runtime linker path. > > Obviously, meson doesn't run it through the exe_wrapper. > > > > > Alex > > > > On Thu, 30 Mar 2023 at 15:43, Zoltan Boszormenyi <zbos...@gmail.com> wrote: > >> libfprint is the library used by fprintd. > >> > >> Signed-off-by: Zoltán Böszörményi <zbos...@gmail.com> > >> --- > >> ...001-Optionally-use-native-generators.patch | 111 ++++++++++++++++++ > >> .../0002-Make-building-tests-optional.patch | 47 ++++++++ > >> .../libfprint/libfprint_1.94.5.bb | 45 +++++++ > >> 3 files changed, 203 insertions(+) > >> create mode 100644 > >> meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch > >> create mode 100644 > >> meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch > >> create mode 100644 meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb > >> > >> diff --git > >> a/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch > >> > >> b/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch > >> new file mode 100644 > >> index 000000000..779d78c28 > >> --- /dev/null > >> +++ > >> b/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch > >> @@ -0,0 +1,111 @@ > >> +From 4f0f84448dbc46c18d2700ddb45acdee67687574 Mon Sep 17 00:00:00 2001 > >> +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?= > >> + <zbos...@gmail.com> > >> +Date: Thu, 30 Mar 2023 09:45:31 +0200 > >> +Subject: [PATCH 1/2] Optionally use native generators > >> +MIME-Version: 1.0 > >> +Content-Type: text/plain; charset=UTF-8 > >> +Content-Transfer-Encoding: 8bit > >> + > >> +fprint-list-udev-hwdb and fprint-list-udev-rules are run > >> +during the build to generate autosuspend.hwdb and 70-*.rules, > >> +respectively. > >> + > >> +Since they are not marked as "native: true", a cross-compiled > >> +version is not possible. > >> + > >> +Since these binaries are linked with the libfprint_drivers target, > >> +marking them as native binaries would also need libfprint_drivers > >> +to be duplicated as a native version and possibly other library > >> +targets, too. > >> + > >> +Instead, make it the responsibility of the cross-compiler > >> +framework to build the native variant separately and allow > >> +the external binaries to be passed in. > >> + > >> +Upstream-Status: Submitted > >> + > >> +Signed-off-by: Zoltán Böszörményi <zbos...@gmail.com> > >> +--- > >> + libfprint/meson.build | 30 ++++++++++++++++++++---------- > >> + meson_options.txt | 8 ++++++++ > >> + 2 files changed, 28 insertions(+), 10 deletions(-) > >> + > >> +diff --git a/libfprint/meson.build b/libfprint/meson.build > >> +index d3c8b03..2a4de67 100644 > >> +--- a/libfprint/meson.build > >> ++++ b/libfprint/meson.build > >> +@@ -301,11 +301,16 @@ libfprint_private_dep = declare_dependency( > >> + ] > >> + ) > >> + > >> +-udev_hwdb = executable('fprint-list-udev-hwdb', > >> +- 'fprint-list-udev-hwdb.c', > >> +- dependencies: libfprint_private_dep, > >> +- link_with: libfprint_drivers, > >> +- install: false) > >> ++udev_hwdb_cmd = get_option('udev_hwdb_cmd') > >> ++if udev_hwdb_cmd == '' > >> ++ udev_hwdb = executable('fprint-list-udev-hwdb', > >> ++ 'fprint-list-udev-hwdb.c', > >> ++ dependencies: libfprint_private_dep, > >> ++ link_with: libfprint_drivers, > >> ++ install: false) > >> ++else > >> ++ udev_hwdb = find_program(udev_hwdb_cmd) > >> ++endif > >> + > >> + udev_hwdb_generator = custom_target('udev-hwdb', > >> + output: 'autosuspend.hwdb', > >> +@@ -315,12 +320,17 @@ udev_hwdb_generator = custom_target('udev-hwdb', > >> + install: false, > >> + ) > >> + > >> ++udev_rules_cmd = get_option('udev_rules_cmd') > >> + if install_udev_rules > >> +- udev_rules = executable('fprint-list-udev-rules', > >> +- 'fprint-list-udev-rules.c', > >> +- dependencies: libfprint_private_dep, > >> +- link_with: libfprint_drivers, > >> +- install: false) > >> ++ if udev_rules_cmd == '' > >> ++ udev_rules = executable('fprint-list-udev-rules', > >> ++ 'fprint-list-udev-rules.c', > >> ++ dependencies: libfprint_private_dep, > >> ++ link_with: libfprint_drivers, > >> ++ install: false) > >> ++ else > >> ++ udev_rules = find_program(udev_rules_cmd) > >> ++ endif > >> + > >> + custom_target('udev-rules', > >> + output: '70-@0@.rules'.format(versioned_libname), > >> +diff --git a/meson_options.txt b/meson_options.txt > >> +index f9b801f..a6f0c4d 100644 > >> +--- a/meson_options.txt > >> ++++ b/meson_options.txt > >> +@@ -14,6 +14,10 @@ option('udev_rules_dir', > >> + description: 'Installation path for udev rules', > >> + type: 'string', > >> + value: 'auto') > >> ++option('udev_rules_cmd', > >> ++ description : 'Optional path for native build of > >> fprint-list-udev-rules', > >> ++ type : 'string', > >> ++ value : '') > >> + option('udev_hwdb', > >> + description: 'Whether to create a udev hwdb for autosuspend > >> (included in systemd v248 and later)', > >> + type: 'feature', > >> +@@ -22,6 +26,10 @@ option('udev_hwdb_dir', > >> + description: 'Installation path for udev hwdb', > >> + type: 'string', > >> + value: 'auto') > >> ++option('udev_hwdb_cmd', > >> ++ description : 'Optional path for native build of > >> fprint-list-udev-hwdb', > >> ++ type : 'string', > >> ++ value : '') > >> + option('gtk-examples', > >> + description: 'Whether to build GTK+ example applications', > >> + type: 'boolean', > >> +-- > >> +2.39.2 > >> + > >> diff --git > >> a/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch > >> > >> b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch > >> new file mode 100644 > >> index 000000000..c83ea95e1 > >> --- /dev/null > >> +++ > >> b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch > >> @@ -0,0 +1,47 @@ > >> +From 8e27d45a7747c9aaf8e619f2de3ad3eae9659da8 Mon Sep 17 00:00:00 2001 > >> +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?= > >> + <zbos...@gmail.com> > >> +Date: Thu, 30 Mar 2023 09:57:35 +0200 > >> +Subject: [PATCH 2/2] Make building tests optional > >> +MIME-Version: 1.0 > >> +Content-Type: text/plain; charset=UTF-8 > >> +Content-Transfer-Encoding: 8bit > >> + > >> +Upstream-Status: Submitted > >> + > >> +Signed-off-by: Zoltán Böszörményi <zbos...@gmail.com> > >> +--- > >> + meson.build | 4 +++- > >> + meson_options.txt | 4 ++++ > >> + 2 files changed, 7 insertions(+), 1 deletion(-) > >> + > >> +diff --git a/meson.build b/meson.build > >> +index 1badb16..05edb8d 100644 > >> +--- a/meson.build > >> ++++ b/meson.build > >> +@@ -309,7 +309,9 @@ if get_option('gtk-examples') > >> + endif > >> + > >> + subdir('data') > >> +-subdir('tests') > >> ++if get_option('tests') > >> ++ subdir('tests') > >> ++endif > >> + > >> + pkgconfig = import('pkgconfig') > >> + pkgconfig.generate( > >> +diff --git a/meson_options.txt b/meson_options.txt > >> +index a6f0c4d..175710d 100644 > >> +--- a/meson_options.txt > >> ++++ b/meson_options.txt > >> +@@ -38,3 +38,7 @@ option('doc', > >> + description: 'Whether to build the API documentation', > >> + type: 'boolean', > >> + value: true) > >> ++option('tests', > >> ++ description: 'Whether to build the tests', > >> ++ type: 'boolean', > >> ++ value: true) > >> +-- > >> +2.39.2 > >> + > >> diff --git a/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb > >> b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb > >> new file mode 100644 > >> index 000000000..b0133409a > >> --- /dev/null > >> +++ b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb > >> @@ -0,0 +1,45 @@ > >> +SUMMARY = "Library for fingerprint readers" > >> +DESCRIPTION = "libfprint is an open source software library \ > >> +designed to make it easy for application developers to add \ > >> +support for consumer fingerprint readers to their software." > >> +HOMEPAGE = "https://www.freedesktop.org/wiki/Software/fprint/libfprint/" > >> + > >> +DEPENDS = "glib-2.0 libgusb udev libgudev nspr nss pixman cairo" > >> + > >> +DEPENDS:append:class-target = " libfprint-native " > >> + > >> +LICENSE = "LGPL-2.1-only" > >> +LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24" > >> + > >> +#PR = "r1" > >> + > >> +SRCREV = "86961a9429d589c387da37351fd6b4ff3caf67ea" > >> + > >> +SRC_URI = " \ > >> + > >> git://anongit.freedesktop.org/git/libfprint/libfprint.git;branch=master;protocol=https > >> \ > >> + file://0001-Optionally-use-native-generators.patch \ > >> + file://0002-Make-building-tests-optional.patch \ > >> +" > >> + > >> +S = "${WORKDIR}/git" > >> + > >> +inherit meson pkgconfig useradd python3native gobject-introspection > >> + > >> +EXTRA_OEMESON:class-native = "-Ddoc=false -Dtests=false > >> -Dintrospection=false" > >> + > >> +EXTRA_OEMESON:class-target = "-Ddoc=false -Dtests=false \ > >> + -Dudev_hwdb=enabled -Dudev_hwdb_dir=${sysconfdir}/udev/hwdb.d \ > >> + -Dudev_hwdb_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-hwdb \ > >> + -Dudev_rules_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-rules \ > >> +" > >> + > >> +do_install:append:class-native () { > >> + install -d ${D}${bindir} > >> + install -m0755 ${B}/libfprint/fprint-list-udev-hwdb > >> ${D}${bindir}/fprint-list-udev-hwdb > >> + install -m0755 ${B}/libfprint/fprint-list-udev-rules > >> ${D}${bindir}/fprint-list-udev-rules > >> +} > >> + > >> +BBCLASSEXTEND = "native" > >> + > >> +USERADD_PACKAGES = "${PN}" > >> +GROUPADD_PARAM:${PN} = "fprint" > >> -- > >> 2.39.2 > >> > >> > >> > >> >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#101841): https://lists.openembedded.org/g/openembedded-devel/message/101841 Mute This Topic: https://lists.openembedded.org/mt/97950767/21656 Group Owner: openembedded-devel+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-