libfprint is the library used by fprintd. Signed-off-by: Zoltán Böszörményi <zboszor@...> --- ...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?= + <zboszor@...> +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 <zboszor@...> +--- + 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?= + <zboszor@...> +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 <zboszor@...> +--- + 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
|
|
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.
Alex
toggle quoted message
Show quoted text
On Thu, 30 Mar 2023 at 15:43, Zoltan Boszormenyi <zboszor@...> wrote: libfprint is the library used by fprintd.
Signed-off-by: Zoltán Böszörményi <zboszor@...> --- ...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?= + <zboszor@...> +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 <zboszor@...> +--- + 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?= + <zboszor@...> +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 <zboszor@...> +--- + 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
|
|
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. Wasn't the mariadb change I made about 2 years ago to use cmake's CROSSCOMPILING_EMULATOR that saved building the whole mariadb-native just for one small binary reverted recently because qemu doesn't emulate certain parts of the instruction set and caused crashes? The same principle applies to meson running binaries via qemu, too. Alex
On Thu, 30 Mar 2023 at 15:43, Zoltan Boszormenyi <zboszor@...> wrote:
libfprint is the library used by fprintd.
Signed-off-by: Zoltán Böszörményi <zboszor@...> --- ...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?= + <zboszor@...> +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 <zboszor@...> +--- + 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?= + <zboszor@...> +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 <zboszor@...> +--- + 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
|
|
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 <zboszor@...> wrote:
libfprint is the library used by fprintd.
Signed-off-by: Zoltán Böszörményi <zboszor@...> --- ...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?= + <zboszor@...> +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 <zboszor@...> +--- + 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?= + <zboszor@...> +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 <zboszor@...> +--- + 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
|
|
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.htmlAlex
toggle quoted message
Show quoted text
On Thu, 30 Mar 2023 at 17:24, Böszörményi Zoltán <zboszor@...> 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 <zboszor@...> wrote:
libfprint is the library used by fprintd.
Signed-off-by: Zoltán Böszörményi <zboszor@...> --- ...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?= + <zboszor@...> +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 <zboszor@...> +--- + 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?= + <zboszor@...> +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 <zboszor@...> +--- + 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
|
|
2023. 03. 30. 17:24 keltezéssel, Zoltan Boszormenyi via lists.openembedded.org írta: 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. It is possible that meson doesn't support running executables via exe_wrapper whose output is captured in a file? Maybe rewriting the generators to write their output directly instead of on stdout will make libfprint more cross compiler friendly.
Alex
On Thu, 30 Mar 2023 at 15:43, Zoltan Boszormenyi <zboszor@...> wrote:
libfprint is the library used by fprintd.
Signed-off-by: Zoltán Böszörményi <zboszor@...> --- ...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?= + <zboszor@...> +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 <zboszor@...> +--- + 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?= + <zboszor@...> +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 <zboszor@...> +--- + 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
|
|
Maybe you can raise the concern with upstream and see what they say? How, in their opinion, should their component be cross-compiled? Can the need to run target executables be eliminated from the build in some other way we're not seeing?
Alex
toggle quoted message
Show quoted text
On Thu, 30 Mar 2023 at 17:52, Böszörményi Zoltán <zboszor@...> wrote: 2023. 03. 30. 17:24 keltezéssel, Zoltan Boszormenyi via lists.openembedded.org írta:
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. It is possible that meson doesn't support running executables via exe_wrapper whose output is captured in a file?
Maybe rewriting the generators to write their output directly instead of on stdout will make libfprint more cross compiler friendly.
Alex
On Thu, 30 Mar 2023 at 15:43, Zoltan Boszormenyi <zboszor@...> wrote:
libfprint is the library used by fprintd.
Signed-off-by: Zoltán Böszörményi <zboszor@...> --- ...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?= + <zboszor@...> +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 <zboszor@...> +--- + 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?= + <zboszor@...> +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 <zboszor@...> +--- + 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
|
|
2023. 03. 30. 17:40 keltezéssel, Alexander Kanavin írta: How do libfprint's meson rules for producing the executable and then running it look like? Here are the two generators: https://gitlab.freedesktop.org/libfprint/libfprint/-/blob/master/libfprint/meson.build#L310https://gitlab.freedesktop.org/libfprint/libfprint/-/blob/master/libfprint/meson.build#L325Any 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' Yes, and it's created for libfprint, it's just not used. Otherwise running the executable would have succeeded. 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 <zboszor@...> 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 <zboszor@...> wrote:
libfprint is the library used by fprintd.
Signed-off-by: Zoltán Böszörményi <zboszor@...> --- ...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?= + <zboszor@...> +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 <zboszor@...> +--- + 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?= + <zboszor@...> +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 <zboszor@...> +--- + 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
|
|
|
|

Khem Raj
It needs to address native deps on udev-native I am seeing
ERROR: Nothing PROVIDES 'udev-native' (but virtual:native:/mnt/b/yoe/master/sources/meta-openembedded/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb DEPENDS on or otherwise requires it).
toggle quoted message
Show quoted text
On Thu, Mar 30, 2023 at 6:43 AM Zoltan Boszormenyi <zboszor@...> wrote: libfprint is the library used by fprintd.
Signed-off-by: Zoltán Böszörményi <zboszor@...> --- ...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?= + <zboszor@...> +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 <zboszor@...> +--- + 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?= + <zboszor@...> +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 <zboszor@...> +--- + 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
|
|
2023. 03. 31. 19:41 keltezéssel, Khem Raj írta: It needs to address native deps on udev-native I am seeing
ERROR: Nothing PROVIDES 'udev-native' (but virtual:native:/mnt/b/yoe/master/sources/meta-openembedded/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb DEPENDS on or otherwise requires it). This is a problem with using two different mailing lists and separate layers. Interconnected changes are often overlooked without taking the changed in the other layer. This particular problem is addressed by the systemd change with BBCLASSEXTEND = "native" and other tweaks which was sent to the openembedded-core ML and is being debated there. FWIW, this meson bug prevents libfprint to use the exe_wrapper, which would make the systemd-native recipe unnecessary: https://github.com/mesonbuild/meson/issues/11029On Thu, Mar 30, 2023 at 6:43 AM Zoltan Boszormenyi <zboszor@...> wrote:
libfprint is the library used by fprintd.
Signed-off-by: Zoltán Böszörményi <zboszor@...> --- ...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?= + <zboszor@...> +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 <zboszor@...> +--- + 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?= + <zboszor@...> +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 <zboszor@...> +--- + 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
|
|

Khem Raj
i am also seeing this on AB
ERROR: Nothing PROVIDES 'polkit' (but /home/pokybuild/yocto-worker/meta-oe/build/meta-openembedded/meta-oe/recipes-support/fprintd/fprintd_git.bb DEPENDS on or otherwise requires it) polkit was skipped: missing required distro feature 'polkit' (not in DISTRO_FEATURES) polkit was skipped: missing required distro feature 'polkit' (not in DISTRO_FEATURES) ERROR: Required build target 'meta-world-pkgdata' has no buildable providers. Missing or unbuildable dependency chain was: ['meta-world-pkgdata', 'fprintd', 'polkit']
toggle quoted message
Show quoted text
On Fri, Mar 31, 2023 at 11:01 PM Böszörményi Zoltán <zboszor@...> wrote: 2023. 03. 31. 19:41 keltezéssel, Khem Raj írta:
It needs to address native deps on udev-native I am seeing
ERROR: Nothing PROVIDES 'udev-native' (but virtual:native:/mnt/b/yoe/master/sources/meta-openembedded/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb DEPENDS on or otherwise requires it). This is a problem with using two different mailing lists and separate layers. Interconnected changes are often overlooked without taking the changed in the other layer.
This particular problem is addressed by the systemd change with BBCLASSEXTEND = "native" and other tweaks which was sent to the openembedded-core ML and is being debated there.
FWIW, this meson bug prevents libfprint to use the exe_wrapper, which would make the systemd-native recipe unnecessary: https://github.com/mesonbuild/meson/issues/11029
On Thu, Mar 30, 2023 at 6:43 AM Zoltan Boszormenyi <zboszor@...> wrote:
libfprint is the library used by fprintd.
Signed-off-by: Zoltán Böszörményi <zboszor@...> --- ...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?= + <zboszor@...> +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 <zboszor@...> +--- + 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?= + <zboszor@...> +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 <zboszor@...> +--- + 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
|
|