diff mbox series

[meta-oe,2/3] libfprint: New recipe

Message ID 20230330134302.2789448-2-zboszor@gmail.com
State Under Review
Headers show
Series [meta-oe,1/3] libgusb: Allow building in native mode | expand

Commit Message

Böszörményi Zoltán March 30, 2023, 1:43 p.m. UTC
libfprint is the library used by fprintd.

Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
---
 ...001-Optionally-use-native-generators.patch | 111 ++++++++++++++++++
 .../0002-Make-building-tests-optional.patch   |  47 ++++++++
 .../libfprint/libfprint_1.94.5.bb             |  45 +++++++
 3 files changed, 203 insertions(+)
 create mode 100644 meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
 create mode 100644 meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
 create mode 100644 meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb

Comments

Alexander Kanavin March 30, 2023, 1:50 p.m. UTC | #1
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

On Thu, 30 Mar 2023 at 15:43, Zoltan Boszormenyi <zboszor@gmail.com> wrote:
>
> libfprint is the library used by fprintd.
>
> Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
> ---
>  ...001-Optionally-use-native-generators.patch | 111 ++++++++++++++++++
>  .../0002-Make-building-tests-optional.patch   |  47 ++++++++
>  .../libfprint/libfprint_1.94.5.bb             |  45 +++++++
>  3 files changed, 203 insertions(+)
>  create mode 100644 meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
>  create mode 100644 meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
>  create mode 100644 meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
>
> diff --git a/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch b/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
> new file mode 100644
> index 000000000..779d78c28
> --- /dev/null
> +++ b/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
> @@ -0,0 +1,111 @@
> +From 4f0f84448dbc46c18d2700ddb45acdee67687574 Mon Sep 17 00:00:00 2001
> +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
> + <zboszor@gmail.com>
> +Date: Thu, 30 Mar 2023 09:45:31 +0200
> +Subject: [PATCH 1/2] Optionally use native generators
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +fprint-list-udev-hwdb and fprint-list-udev-rules are run
> +during the build to generate autosuspend.hwdb and 70-*.rules,
> +respectively.
> +
> +Since they are not marked as "native: true", a cross-compiled
> +version is not possible.
> +
> +Since these binaries are linked with the libfprint_drivers target,
> +marking them as native binaries would also need libfprint_drivers
> +to be duplicated as a native version and possibly other library
> +targets, too.
> +
> +Instead, make it the responsibility of the cross-compiler
> +framework to build the native variant separately and allow
> +the external binaries to be passed in.
> +
> +Upstream-Status: Submitted
> +
> +Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
> +---
> + libfprint/meson.build | 30 ++++++++++++++++++++----------
> + meson_options.txt     |  8 ++++++++
> + 2 files changed, 28 insertions(+), 10 deletions(-)
> +
> +diff --git a/libfprint/meson.build b/libfprint/meson.build
> +index d3c8b03..2a4de67 100644
> +--- a/libfprint/meson.build
> ++++ b/libfprint/meson.build
> +@@ -301,11 +301,16 @@ libfprint_private_dep = declare_dependency(
> +     ]
> + )
> +
> +-udev_hwdb = executable('fprint-list-udev-hwdb',
> +-    'fprint-list-udev-hwdb.c',
> +-    dependencies: libfprint_private_dep,
> +-    link_with: libfprint_drivers,
> +-    install: false)
> ++udev_hwdb_cmd = get_option('udev_hwdb_cmd')
> ++if udev_hwdb_cmd == ''
> ++    udev_hwdb = executable('fprint-list-udev-hwdb',
> ++        'fprint-list-udev-hwdb.c',
> ++        dependencies: libfprint_private_dep,
> ++        link_with: libfprint_drivers,
> ++        install: false)
> ++else
> ++    udev_hwdb = find_program(udev_hwdb_cmd)
> ++endif
> +
> + udev_hwdb_generator = custom_target('udev-hwdb',
> +     output: 'autosuspend.hwdb',
> +@@ -315,12 +320,17 @@ udev_hwdb_generator = custom_target('udev-hwdb',
> +     install: false,
> + )
> +
> ++udev_rules_cmd = get_option('udev_rules_cmd')
> + if install_udev_rules
> +-    udev_rules = executable('fprint-list-udev-rules',
> +-        'fprint-list-udev-rules.c',
> +-        dependencies: libfprint_private_dep,
> +-        link_with: libfprint_drivers,
> +-        install: false)
> ++    if udev_rules_cmd == ''
> ++        udev_rules = executable('fprint-list-udev-rules',
> ++            'fprint-list-udev-rules.c',
> ++            dependencies: libfprint_private_dep,
> ++            link_with: libfprint_drivers,
> ++            install: false)
> ++    else
> ++        udev_rules = find_program(udev_rules_cmd)
> ++    endif
> +
> +     custom_target('udev-rules',
> +         output: '70-@0@.rules'.format(versioned_libname),
> +diff --git a/meson_options.txt b/meson_options.txt
> +index f9b801f..a6f0c4d 100644
> +--- a/meson_options.txt
> ++++ b/meson_options.txt
> +@@ -14,6 +14,10 @@ option('udev_rules_dir',
> +        description: 'Installation path for udev rules',
> +        type: 'string',
> +        value: 'auto')
> ++option('udev_rules_cmd',
> ++       description : 'Optional path for native build of fprint-list-udev-rules',
> ++       type : 'string',
> ++       value : '')
> + option('udev_hwdb',
> +        description: 'Whether to create a udev hwdb for autosuspend (included in systemd v248 and later)',
> +        type: 'feature',
> +@@ -22,6 +26,10 @@ option('udev_hwdb_dir',
> +        description: 'Installation path for udev hwdb',
> +        type: 'string',
> +        value: 'auto')
> ++option('udev_hwdb_cmd',
> ++       description : 'Optional path for native build of fprint-list-udev-hwdb',
> ++       type : 'string',
> ++       value : '')
> + option('gtk-examples',
> +        description: 'Whether to build GTK+ example applications',
> +        type: 'boolean',
> +--
> +2.39.2
> +
> diff --git a/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
> new file mode 100644
> index 000000000..c83ea95e1
> --- /dev/null
> +++ b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
> @@ -0,0 +1,47 @@
> +From 8e27d45a7747c9aaf8e619f2de3ad3eae9659da8 Mon Sep 17 00:00:00 2001
> +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
> + <zboszor@gmail.com>
> +Date: Thu, 30 Mar 2023 09:57:35 +0200
> +Subject: [PATCH 2/2] Make building tests optional
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +Upstream-Status: Submitted
> +
> +Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
> +---
> + meson.build       | 4 +++-
> + meson_options.txt | 4 ++++
> + 2 files changed, 7 insertions(+), 1 deletion(-)
> +
> +diff --git a/meson.build b/meson.build
> +index 1badb16..05edb8d 100644
> +--- a/meson.build
> ++++ b/meson.build
> +@@ -309,7 +309,9 @@ if get_option('gtk-examples')
> + endif
> +
> + subdir('data')
> +-subdir('tests')
> ++if get_option('tests')
> ++    subdir('tests')
> ++endif
> +
> + pkgconfig = import('pkgconfig')
> + pkgconfig.generate(
> +diff --git a/meson_options.txt b/meson_options.txt
> +index a6f0c4d..175710d 100644
> +--- a/meson_options.txt
> ++++ b/meson_options.txt
> +@@ -38,3 +38,7 @@ option('doc',
> +        description: 'Whether to build the API documentation',
> +        type: 'boolean',
> +        value: true)
> ++option('tests',
> ++       description: 'Whether to build the tests',
> ++       type: 'boolean',
> ++       value: true)
> +--
> +2.39.2
> +
> diff --git a/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
> new file mode 100644
> index 000000000..b0133409a
> --- /dev/null
> +++ b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
> @@ -0,0 +1,45 @@
> +SUMMARY = "Library for fingerprint readers"
> +DESCRIPTION = "libfprint is an open source software library \
> +designed to make it easy for application developers to add \
> +support for consumer fingerprint readers to their software."
> +HOMEPAGE = "https://www.freedesktop.org/wiki/Software/fprint/libfprint/"
> +
> +DEPENDS = "glib-2.0 libgusb udev libgudev nspr nss pixman cairo"
> +
> +DEPENDS:append:class-target = " libfprint-native "
> +
> +LICENSE = "LGPL-2.1-only"
> +LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
> +
> +#PR = "r1"
> +
> +SRCREV = "86961a9429d589c387da37351fd6b4ff3caf67ea"
> +
> +SRC_URI = " \
> +       git://anongit.freedesktop.org/git/libfprint/libfprint.git;branch=master;protocol=https \
> +       file://0001-Optionally-use-native-generators.patch \
> +       file://0002-Make-building-tests-optional.patch \
> +"
> +
> +S = "${WORKDIR}/git"
> +
> +inherit meson pkgconfig useradd python3native gobject-introspection
> +
> +EXTRA_OEMESON:class-native = "-Ddoc=false -Dtests=false -Dintrospection=false"
> +
> +EXTRA_OEMESON:class-target = "-Ddoc=false -Dtests=false \
> +       -Dudev_hwdb=enabled -Dudev_hwdb_dir=${sysconfdir}/udev/hwdb.d \
> +       -Dudev_hwdb_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-hwdb \
> +       -Dudev_rules_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-rules \
> +"
> +
> +do_install:append:class-native () {
> +       install -d ${D}${bindir}
> +       install -m0755 ${B}/libfprint/fprint-list-udev-hwdb ${D}${bindir}/fprint-list-udev-hwdb
> +       install -m0755 ${B}/libfprint/fprint-list-udev-rules ${D}${bindir}/fprint-list-udev-rules
> +}
> +
> +BBCLASSEXTEND = "native"
> +
> +USERADD_PACKAGES = "${PN}"
> +GROUPADD_PARAM:${PN} = "fprint"
> --
> 2.39.2
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#101836): https://lists.openembedded.org/g/openembedded-devel/message/101836
> Mute This Topic: https://lists.openembedded.org/mt/97950767/1686489
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Böszörményi Zoltán March 30, 2023, 2:22 p.m. UTC | #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@gmail.com> wrote:
>> libfprint is the library used by fprintd.
>>
>> Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
>> ---
>>   ...001-Optionally-use-native-generators.patch | 111 ++++++++++++++++++
>>   .../0002-Make-building-tests-optional.patch   |  47 ++++++++
>>   .../libfprint/libfprint_1.94.5.bb             |  45 +++++++
>>   3 files changed, 203 insertions(+)
>>   create mode 100644 meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
>>   create mode 100644 meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
>>   create mode 100644 meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
>>
>> diff --git a/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch b/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
>> new file mode 100644
>> index 000000000..779d78c28
>> --- /dev/null
>> +++ b/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
>> @@ -0,0 +1,111 @@
>> +From 4f0f84448dbc46c18d2700ddb45acdee67687574 Mon Sep 17 00:00:00 2001
>> +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
>> + <zboszor@gmail.com>
>> +Date: Thu, 30 Mar 2023 09:45:31 +0200
>> +Subject: [PATCH 1/2] Optionally use native generators
>> +MIME-Version: 1.0
>> +Content-Type: text/plain; charset=UTF-8
>> +Content-Transfer-Encoding: 8bit
>> +
>> +fprint-list-udev-hwdb and fprint-list-udev-rules are run
>> +during the build to generate autosuspend.hwdb and 70-*.rules,
>> +respectively.
>> +
>> +Since they are not marked as "native: true", a cross-compiled
>> +version is not possible.
>> +
>> +Since these binaries are linked with the libfprint_drivers target,
>> +marking them as native binaries would also need libfprint_drivers
>> +to be duplicated as a native version and possibly other library
>> +targets, too.
>> +
>> +Instead, make it the responsibility of the cross-compiler
>> +framework to build the native variant separately and allow
>> +the external binaries to be passed in.
>> +
>> +Upstream-Status: Submitted
>> +
>> +Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
>> +---
>> + libfprint/meson.build | 30 ++++++++++++++++++++----------
>> + meson_options.txt     |  8 ++++++++
>> + 2 files changed, 28 insertions(+), 10 deletions(-)
>> +
>> +diff --git a/libfprint/meson.build b/libfprint/meson.build
>> +index d3c8b03..2a4de67 100644
>> +--- a/libfprint/meson.build
>> ++++ b/libfprint/meson.build
>> +@@ -301,11 +301,16 @@ libfprint_private_dep = declare_dependency(
>> +     ]
>> + )
>> +
>> +-udev_hwdb = executable('fprint-list-udev-hwdb',
>> +-    'fprint-list-udev-hwdb.c',
>> +-    dependencies: libfprint_private_dep,
>> +-    link_with: libfprint_drivers,
>> +-    install: false)
>> ++udev_hwdb_cmd = get_option('udev_hwdb_cmd')
>> ++if udev_hwdb_cmd == ''
>> ++    udev_hwdb = executable('fprint-list-udev-hwdb',
>> ++        'fprint-list-udev-hwdb.c',
>> ++        dependencies: libfprint_private_dep,
>> ++        link_with: libfprint_drivers,
>> ++        install: false)
>> ++else
>> ++    udev_hwdb = find_program(udev_hwdb_cmd)
>> ++endif
>> +
>> + udev_hwdb_generator = custom_target('udev-hwdb',
>> +     output: 'autosuspend.hwdb',
>> +@@ -315,12 +320,17 @@ udev_hwdb_generator = custom_target('udev-hwdb',
>> +     install: false,
>> + )
>> +
>> ++udev_rules_cmd = get_option('udev_rules_cmd')
>> + if install_udev_rules
>> +-    udev_rules = executable('fprint-list-udev-rules',
>> +-        'fprint-list-udev-rules.c',
>> +-        dependencies: libfprint_private_dep,
>> +-        link_with: libfprint_drivers,
>> +-        install: false)
>> ++    if udev_rules_cmd == ''
>> ++        udev_rules = executable('fprint-list-udev-rules',
>> ++            'fprint-list-udev-rules.c',
>> ++            dependencies: libfprint_private_dep,
>> ++            link_with: libfprint_drivers,
>> ++            install: false)
>> ++    else
>> ++        udev_rules = find_program(udev_rules_cmd)
>> ++    endif
>> +
>> +     custom_target('udev-rules',
>> +         output: '70-@0@.rules'.format(versioned_libname),
>> +diff --git a/meson_options.txt b/meson_options.txt
>> +index f9b801f..a6f0c4d 100644
>> +--- a/meson_options.txt
>> ++++ b/meson_options.txt
>> +@@ -14,6 +14,10 @@ option('udev_rules_dir',
>> +        description: 'Installation path for udev rules',
>> +        type: 'string',
>> +        value: 'auto')
>> ++option('udev_rules_cmd',
>> ++       description : 'Optional path for native build of fprint-list-udev-rules',
>> ++       type : 'string',
>> ++       value : '')
>> + option('udev_hwdb',
>> +        description: 'Whether to create a udev hwdb for autosuspend (included in systemd v248 and later)',
>> +        type: 'feature',
>> +@@ -22,6 +26,10 @@ option('udev_hwdb_dir',
>> +        description: 'Installation path for udev hwdb',
>> +        type: 'string',
>> +        value: 'auto')
>> ++option('udev_hwdb_cmd',
>> ++       description : 'Optional path for native build of fprint-list-udev-hwdb',
>> ++       type : 'string',
>> ++       value : '')
>> + option('gtk-examples',
>> +        description: 'Whether to build GTK+ example applications',
>> +        type: 'boolean',
>> +--
>> +2.39.2
>> +
>> diff --git a/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
>> new file mode 100644
>> index 000000000..c83ea95e1
>> --- /dev/null
>> +++ b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
>> @@ -0,0 +1,47 @@
>> +From 8e27d45a7747c9aaf8e619f2de3ad3eae9659da8 Mon Sep 17 00:00:00 2001
>> +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
>> + <zboszor@gmail.com>
>> +Date: Thu, 30 Mar 2023 09:57:35 +0200
>> +Subject: [PATCH 2/2] Make building tests optional
>> +MIME-Version: 1.0
>> +Content-Type: text/plain; charset=UTF-8
>> +Content-Transfer-Encoding: 8bit
>> +
>> +Upstream-Status: Submitted
>> +
>> +Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
>> +---
>> + meson.build       | 4 +++-
>> + meson_options.txt | 4 ++++
>> + 2 files changed, 7 insertions(+), 1 deletion(-)
>> +
>> +diff --git a/meson.build b/meson.build
>> +index 1badb16..05edb8d 100644
>> +--- a/meson.build
>> ++++ b/meson.build
>> +@@ -309,7 +309,9 @@ if get_option('gtk-examples')
>> + endif
>> +
>> + subdir('data')
>> +-subdir('tests')
>> ++if get_option('tests')
>> ++    subdir('tests')
>> ++endif
>> +
>> + pkgconfig = import('pkgconfig')
>> + pkgconfig.generate(
>> +diff --git a/meson_options.txt b/meson_options.txt
>> +index a6f0c4d..175710d 100644
>> +--- a/meson_options.txt
>> ++++ b/meson_options.txt
>> +@@ -38,3 +38,7 @@ option('doc',
>> +        description: 'Whether to build the API documentation',
>> +        type: 'boolean',
>> +        value: true)
>> ++option('tests',
>> ++       description: 'Whether to build the tests',
>> ++       type: 'boolean',
>> ++       value: true)
>> +--
>> +2.39.2
>> +
>> diff --git a/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
>> new file mode 100644
>> index 000000000..b0133409a
>> --- /dev/null
>> +++ b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
>> @@ -0,0 +1,45 @@
>> +SUMMARY = "Library for fingerprint readers"
>> +DESCRIPTION = "libfprint is an open source software library \
>> +designed to make it easy for application developers to add \
>> +support for consumer fingerprint readers to their software."
>> +HOMEPAGE = "https://www.freedesktop.org/wiki/Software/fprint/libfprint/"
>> +
>> +DEPENDS = "glib-2.0 libgusb udev libgudev nspr nss pixman cairo"
>> +
>> +DEPENDS:append:class-target = " libfprint-native "
>> +
>> +LICENSE = "LGPL-2.1-only"
>> +LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
>> +
>> +#PR = "r1"
>> +
>> +SRCREV = "86961a9429d589c387da37351fd6b4ff3caf67ea"
>> +
>> +SRC_URI = " \
>> +       git://anongit.freedesktop.org/git/libfprint/libfprint.git;branch=master;protocol=https \
>> +       file://0001-Optionally-use-native-generators.patch \
>> +       file://0002-Make-building-tests-optional.patch \
>> +"
>> +
>> +S = "${WORKDIR}/git"
>> +
>> +inherit meson pkgconfig useradd python3native gobject-introspection
>> +
>> +EXTRA_OEMESON:class-native = "-Ddoc=false -Dtests=false -Dintrospection=false"
>> +
>> +EXTRA_OEMESON:class-target = "-Ddoc=false -Dtests=false \
>> +       -Dudev_hwdb=enabled -Dudev_hwdb_dir=${sysconfdir}/udev/hwdb.d \
>> +       -Dudev_hwdb_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-hwdb \
>> +       -Dudev_rules_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-rules \
>> +"
>> +
>> +do_install:append:class-native () {
>> +       install -d ${D}${bindir}
>> +       install -m0755 ${B}/libfprint/fprint-list-udev-hwdb ${D}${bindir}/fprint-list-udev-hwdb
>> +       install -m0755 ${B}/libfprint/fprint-list-udev-rules ${D}${bindir}/fprint-list-udev-rules
>> +}
>> +
>> +BBCLASSEXTEND = "native"
>> +
>> +USERADD_PACKAGES = "${PN}"
>> +GROUPADD_PARAM:${PN} = "fprint"
>> --
>> 2.39.2
>>
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#101836): https://lists.openembedded.org/g/openembedded-devel/message/101836
>> Mute This Topic: https://lists.openembedded.org/mt/97950767/1686489
>> Group Owner: openembedded-devel+owner@lists.openembedded.org
>> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [alex.kanavin@gmail.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
Böszörményi Zoltán March 30, 2023, 3:24 p.m. UTC | #3
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@gmail.com> wrote:
>> libfprint is the library used by fprintd.
>>
>> Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
>> ---
>>   ...001-Optionally-use-native-generators.patch | 111 ++++++++++++++++++
>>   .../0002-Make-building-tests-optional.patch   |  47 ++++++++
>>   .../libfprint/libfprint_1.94.5.bb             |  45 +++++++
>>   3 files changed, 203 insertions(+)
>>   create mode 100644 meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
>>   create mode 100644 meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
>>   create mode 100644 meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
>>
>> diff --git a/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch b/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
>> new file mode 100644
>> index 000000000..779d78c28
>> --- /dev/null
>> +++ b/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
>> @@ -0,0 +1,111 @@
>> +From 4f0f84448dbc46c18d2700ddb45acdee67687574 Mon Sep 17 00:00:00 2001
>> +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
>> + <zboszor@gmail.com>
>> +Date: Thu, 30 Mar 2023 09:45:31 +0200
>> +Subject: [PATCH 1/2] Optionally use native generators
>> +MIME-Version: 1.0
>> +Content-Type: text/plain; charset=UTF-8
>> +Content-Transfer-Encoding: 8bit
>> +
>> +fprint-list-udev-hwdb and fprint-list-udev-rules are run
>> +during the build to generate autosuspend.hwdb and 70-*.rules,
>> +respectively.
>> +
>> +Since they are not marked as "native: true", a cross-compiled
>> +version is not possible.
>> +
>> +Since these binaries are linked with the libfprint_drivers target,
>> +marking them as native binaries would also need libfprint_drivers
>> +to be duplicated as a native version and possibly other library
>> +targets, too.
>> +
>> +Instead, make it the responsibility of the cross-compiler
>> +framework to build the native variant separately and allow
>> +the external binaries to be passed in.
>> +
>> +Upstream-Status: Submitted
>> +
>> +Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
>> +---
>> + libfprint/meson.build | 30 ++++++++++++++++++++----------
>> + meson_options.txt     |  8 ++++++++
>> + 2 files changed, 28 insertions(+), 10 deletions(-)
>> +
>> +diff --git a/libfprint/meson.build b/libfprint/meson.build
>> +index d3c8b03..2a4de67 100644
>> +--- a/libfprint/meson.build
>> ++++ b/libfprint/meson.build
>> +@@ -301,11 +301,16 @@ libfprint_private_dep = declare_dependency(
>> +     ]
>> + )
>> +
>> +-udev_hwdb = executable('fprint-list-udev-hwdb',
>> +-    'fprint-list-udev-hwdb.c',
>> +-    dependencies: libfprint_private_dep,
>> +-    link_with: libfprint_drivers,
>> +-    install: false)
>> ++udev_hwdb_cmd = get_option('udev_hwdb_cmd')
>> ++if udev_hwdb_cmd == ''
>> ++    udev_hwdb = executable('fprint-list-udev-hwdb',
>> ++        'fprint-list-udev-hwdb.c',
>> ++        dependencies: libfprint_private_dep,
>> ++        link_with: libfprint_drivers,
>> ++        install: false)
>> ++else
>> ++    udev_hwdb = find_program(udev_hwdb_cmd)
>> ++endif
>> +
>> + udev_hwdb_generator = custom_target('udev-hwdb',
>> +     output: 'autosuspend.hwdb',
>> +@@ -315,12 +320,17 @@ udev_hwdb_generator = custom_target('udev-hwdb',
>> +     install: false,
>> + )
>> +
>> ++udev_rules_cmd = get_option('udev_rules_cmd')
>> + if install_udev_rules
>> +-    udev_rules = executable('fprint-list-udev-rules',
>> +-        'fprint-list-udev-rules.c',
>> +-        dependencies: libfprint_private_dep,
>> +-        link_with: libfprint_drivers,
>> +-        install: false)
>> ++    if udev_rules_cmd == ''
>> ++        udev_rules = executable('fprint-list-udev-rules',
>> ++            'fprint-list-udev-rules.c',
>> ++            dependencies: libfprint_private_dep,
>> ++            link_with: libfprint_drivers,
>> ++            install: false)
>> ++    else
>> ++        udev_rules = find_program(udev_rules_cmd)
>> ++    endif
>> +
>> +     custom_target('udev-rules',
>> +         output: '70-@0@.rules'.format(versioned_libname),
>> +diff --git a/meson_options.txt b/meson_options.txt
>> +index f9b801f..a6f0c4d 100644
>> +--- a/meson_options.txt
>> ++++ b/meson_options.txt
>> +@@ -14,6 +14,10 @@ option('udev_rules_dir',
>> +        description: 'Installation path for udev rules',
>> +        type: 'string',
>> +        value: 'auto')
>> ++option('udev_rules_cmd',
>> ++       description : 'Optional path for native build of fprint-list-udev-rules',
>> ++       type : 'string',
>> ++       value : '')
>> + option('udev_hwdb',
>> +        description: 'Whether to create a udev hwdb for autosuspend (included in systemd v248 and later)',
>> +        type: 'feature',
>> +@@ -22,6 +26,10 @@ option('udev_hwdb_dir',
>> +        description: 'Installation path for udev hwdb',
>> +        type: 'string',
>> +        value: 'auto')
>> ++option('udev_hwdb_cmd',
>> ++       description : 'Optional path for native build of fprint-list-udev-hwdb',
>> ++       type : 'string',
>> ++       value : '')
>> + option('gtk-examples',
>> +        description: 'Whether to build GTK+ example applications',
>> +        type: 'boolean',
>> +--
>> +2.39.2
>> +
>> diff --git a/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
>> new file mode 100644
>> index 000000000..c83ea95e1
>> --- /dev/null
>> +++ b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
>> @@ -0,0 +1,47 @@
>> +From 8e27d45a7747c9aaf8e619f2de3ad3eae9659da8 Mon Sep 17 00:00:00 2001
>> +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
>> + <zboszor@gmail.com>
>> +Date: Thu, 30 Mar 2023 09:57:35 +0200
>> +Subject: [PATCH 2/2] Make building tests optional
>> +MIME-Version: 1.0
>> +Content-Type: text/plain; charset=UTF-8
>> +Content-Transfer-Encoding: 8bit
>> +
>> +Upstream-Status: Submitted
>> +
>> +Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
>> +---
>> + meson.build       | 4 +++-
>> + meson_options.txt | 4 ++++
>> + 2 files changed, 7 insertions(+), 1 deletion(-)
>> +
>> +diff --git a/meson.build b/meson.build
>> +index 1badb16..05edb8d 100644
>> +--- a/meson.build
>> ++++ b/meson.build
>> +@@ -309,7 +309,9 @@ if get_option('gtk-examples')
>> + endif
>> +
>> + subdir('data')
>> +-subdir('tests')
>> ++if get_option('tests')
>> ++    subdir('tests')
>> ++endif
>> +
>> + pkgconfig = import('pkgconfig')
>> + pkgconfig.generate(
>> +diff --git a/meson_options.txt b/meson_options.txt
>> +index a6f0c4d..175710d 100644
>> +--- a/meson_options.txt
>> ++++ b/meson_options.txt
>> +@@ -38,3 +38,7 @@ option('doc',
>> +        description: 'Whether to build the API documentation',
>> +        type: 'boolean',
>> +        value: true)
>> ++option('tests',
>> ++       description: 'Whether to build the tests',
>> ++       type: 'boolean',
>> ++       value: true)
>> +--
>> +2.39.2
>> +
>> diff --git a/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
>> new file mode 100644
>> index 000000000..b0133409a
>> --- /dev/null
>> +++ b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
>> @@ -0,0 +1,45 @@
>> +SUMMARY = "Library for fingerprint readers"
>> +DESCRIPTION = "libfprint is an open source software library \
>> +designed to make it easy for application developers to add \
>> +support for consumer fingerprint readers to their software."
>> +HOMEPAGE = "https://www.freedesktop.org/wiki/Software/fprint/libfprint/"
>> +
>> +DEPENDS = "glib-2.0 libgusb udev libgudev nspr nss pixman cairo"
>> +
>> +DEPENDS:append:class-target = " libfprint-native "
>> +
>> +LICENSE = "LGPL-2.1-only"
>> +LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
>> +
>> +#PR = "r1"
>> +
>> +SRCREV = "86961a9429d589c387da37351fd6b4ff3caf67ea"
>> +
>> +SRC_URI = " \
>> +       git://anongit.freedesktop.org/git/libfprint/libfprint.git;branch=master;protocol=https \
>> +       file://0001-Optionally-use-native-generators.patch \
>> +       file://0002-Make-building-tests-optional.patch \
>> +"
>> +
>> +S = "${WORKDIR}/git"
>> +
>> +inherit meson pkgconfig useradd python3native gobject-introspection
>> +
>> +EXTRA_OEMESON:class-native = "-Ddoc=false -Dtests=false -Dintrospection=false"
>> +
>> +EXTRA_OEMESON:class-target = "-Ddoc=false -Dtests=false \
>> +       -Dudev_hwdb=enabled -Dudev_hwdb_dir=${sysconfdir}/udev/hwdb.d \
>> +       -Dudev_hwdb_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-hwdb \
>> +       -Dudev_rules_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-rules \
>> +"
>> +
>> +do_install:append:class-native () {
>> +       install -d ${D}${bindir}
>> +       install -m0755 ${B}/libfprint/fprint-list-udev-hwdb ${D}${bindir}/fprint-list-udev-hwdb
>> +       install -m0755 ${B}/libfprint/fprint-list-udev-rules ${D}${bindir}/fprint-list-udev-rules
>> +}
>> +
>> +BBCLASSEXTEND = "native"
>> +
>> +USERADD_PACKAGES = "${PN}"
>> +GROUPADD_PARAM:${PN} = "fprint"
>> --
>> 2.39.2
>>
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#101836): https://lists.openembedded.org/g/openembedded-devel/message/101836
>> Mute This Topic: https://lists.openembedded.org/mt/97950767/1686489
>> Group Owner: openembedded-devel+owner@lists.openembedded.org
>> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [alex.kanavin@gmail.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
Alexander Kanavin March 30, 2023, 3:40 p.m. UTC | #4
How do libfprint's meson rules for producing the executable and then
running it look like?

Any meson based recipe has a similar entry in ${WORKDIR}/meson.cross:

exe_wrapper = '/srv/storage/alex/yocto/build-64-alt/tmp/work/core2-64-poky-linux/glib-2.0/1_2.74.6-r0/meson-qemuwrapper'

And the use of the exe_wrapper is documented here:
https://mesonbuild.com/Cross-compilation.html

Alex

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

On Thu, 30 Mar 2023 at 17:52, Böszörményi Zoltán <zboszor@gmail.com> 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@gmail.com> wrote:
> >>> libfprint is the library used by fprintd.
> >>>
> >>> Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
> >>> ---
> >>>   ...001-Optionally-use-native-generators.patch | 111 ++++++++++++++++++
> >>>   .../0002-Make-building-tests-optional.patch   |  47 ++++++++
> >>>   .../libfprint/libfprint_1.94.5.bb             |  45 +++++++
> >>>   3 files changed, 203 insertions(+)
> >>>   create mode 100644
> >>> meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
> >>>   create mode 100644
> >>> meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
> >>>   create mode 100644 meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
> >>>
> >>> diff --git
> >>> a/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
> >>> b/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
> >>> new file mode 100644
> >>> index 000000000..779d78c28
> >>> --- /dev/null
> >>> +++
> >>> b/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
> >>> @@ -0,0 +1,111 @@
> >>> +From 4f0f84448dbc46c18d2700ddb45acdee67687574 Mon Sep 17 00:00:00 2001
> >>> +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
> >>> + <zboszor@gmail.com>
> >>> +Date: Thu, 30 Mar 2023 09:45:31 +0200
> >>> +Subject: [PATCH 1/2] Optionally use native generators
> >>> +MIME-Version: 1.0
> >>> +Content-Type: text/plain; charset=UTF-8
> >>> +Content-Transfer-Encoding: 8bit
> >>> +
> >>> +fprint-list-udev-hwdb and fprint-list-udev-rules are run
> >>> +during the build to generate autosuspend.hwdb and 70-*.rules,
> >>> +respectively.
> >>> +
> >>> +Since they are not marked as "native: true", a cross-compiled
> >>> +version is not possible.
> >>> +
> >>> +Since these binaries are linked with the libfprint_drivers target,
> >>> +marking them as native binaries would also need libfprint_drivers
> >>> +to be duplicated as a native version and possibly other library
> >>> +targets, too.
> >>> +
> >>> +Instead, make it the responsibility of the cross-compiler
> >>> +framework to build the native variant separately and allow
> >>> +the external binaries to be passed in.
> >>> +
> >>> +Upstream-Status: Submitted
> >>> +
> >>> +Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
> >>> +---
> >>> + libfprint/meson.build | 30 ++++++++++++++++++++----------
> >>> + meson_options.txt     |  8 ++++++++
> >>> + 2 files changed, 28 insertions(+), 10 deletions(-)
> >>> +
> >>> +diff --git a/libfprint/meson.build b/libfprint/meson.build
> >>> +index d3c8b03..2a4de67 100644
> >>> +--- a/libfprint/meson.build
> >>> ++++ b/libfprint/meson.build
> >>> +@@ -301,11 +301,16 @@ libfprint_private_dep = declare_dependency(
> >>> +     ]
> >>> + )
> >>> +
> >>> +-udev_hwdb = executable('fprint-list-udev-hwdb',
> >>> +-    'fprint-list-udev-hwdb.c',
> >>> +-    dependencies: libfprint_private_dep,
> >>> +-    link_with: libfprint_drivers,
> >>> +-    install: false)
> >>> ++udev_hwdb_cmd = get_option('udev_hwdb_cmd')
> >>> ++if udev_hwdb_cmd == ''
> >>> ++    udev_hwdb = executable('fprint-list-udev-hwdb',
> >>> ++        'fprint-list-udev-hwdb.c',
> >>> ++        dependencies: libfprint_private_dep,
> >>> ++        link_with: libfprint_drivers,
> >>> ++        install: false)
> >>> ++else
> >>> ++    udev_hwdb = find_program(udev_hwdb_cmd)
> >>> ++endif
> >>> +
> >>> + udev_hwdb_generator = custom_target('udev-hwdb',
> >>> +     output: 'autosuspend.hwdb',
> >>> +@@ -315,12 +320,17 @@ udev_hwdb_generator = custom_target('udev-hwdb',
> >>> +     install: false,
> >>> + )
> >>> +
> >>> ++udev_rules_cmd = get_option('udev_rules_cmd')
> >>> + if install_udev_rules
> >>> +-    udev_rules = executable('fprint-list-udev-rules',
> >>> +-        'fprint-list-udev-rules.c',
> >>> +-        dependencies: libfprint_private_dep,
> >>> +-        link_with: libfprint_drivers,
> >>> +-        install: false)
> >>> ++    if udev_rules_cmd == ''
> >>> ++        udev_rules = executable('fprint-list-udev-rules',
> >>> ++            'fprint-list-udev-rules.c',
> >>> ++            dependencies: libfprint_private_dep,
> >>> ++            link_with: libfprint_drivers,
> >>> ++            install: false)
> >>> ++    else
> >>> ++        udev_rules = find_program(udev_rules_cmd)
> >>> ++    endif
> >>> +
> >>> +     custom_target('udev-rules',
> >>> +         output: '70-@0@.rules'.format(versioned_libname),
> >>> +diff --git a/meson_options.txt b/meson_options.txt
> >>> +index f9b801f..a6f0c4d 100644
> >>> +--- a/meson_options.txt
> >>> ++++ b/meson_options.txt
> >>> +@@ -14,6 +14,10 @@ option('udev_rules_dir',
> >>> +        description: 'Installation path for udev rules',
> >>> +        type: 'string',
> >>> +        value: 'auto')
> >>> ++option('udev_rules_cmd',
> >>> ++       description : 'Optional path for native build of fprint-list-udev-rules',
> >>> ++       type : 'string',
> >>> ++       value : '')
> >>> + option('udev_hwdb',
> >>> +        description: 'Whether to create a udev hwdb for autosuspend (included in
> >>> systemd v248 and later)',
> >>> +        type: 'feature',
> >>> +@@ -22,6 +26,10 @@ option('udev_hwdb_dir',
> >>> +        description: 'Installation path for udev hwdb',
> >>> +        type: 'string',
> >>> +        value: 'auto')
> >>> ++option('udev_hwdb_cmd',
> >>> ++       description : 'Optional path for native build of fprint-list-udev-hwdb',
> >>> ++       type : 'string',
> >>> ++       value : '')
> >>> + option('gtk-examples',
> >>> +        description: 'Whether to build GTK+ example applications',
> >>> +        type: 'boolean',
> >>> +--
> >>> +2.39.2
> >>> +
> >>> diff --git
> >>> a/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
> >>> b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
> >>> new file mode 100644
> >>> index 000000000..c83ea95e1
> >>> --- /dev/null
> >>> +++ b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
> >>> @@ -0,0 +1,47 @@
> >>> +From 8e27d45a7747c9aaf8e619f2de3ad3eae9659da8 Mon Sep 17 00:00:00 2001
> >>> +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
> >>> + <zboszor@gmail.com>
> >>> +Date: Thu, 30 Mar 2023 09:57:35 +0200
> >>> +Subject: [PATCH 2/2] Make building tests optional
> >>> +MIME-Version: 1.0
> >>> +Content-Type: text/plain; charset=UTF-8
> >>> +Content-Transfer-Encoding: 8bit
> >>> +
> >>> +Upstream-Status: Submitted
> >>> +
> >>> +Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
> >>> +---
> >>> + meson.build       | 4 +++-
> >>> + meson_options.txt | 4 ++++
> >>> + 2 files changed, 7 insertions(+), 1 deletion(-)
> >>> +
> >>> +diff --git a/meson.build b/meson.build
> >>> +index 1badb16..05edb8d 100644
> >>> +--- a/meson.build
> >>> ++++ b/meson.build
> >>> +@@ -309,7 +309,9 @@ if get_option('gtk-examples')
> >>> + endif
> >>> +
> >>> + subdir('data')
> >>> +-subdir('tests')
> >>> ++if get_option('tests')
> >>> ++    subdir('tests')
> >>> ++endif
> >>> +
> >>> + pkgconfig = import('pkgconfig')
> >>> + pkgconfig.generate(
> >>> +diff --git a/meson_options.txt b/meson_options.txt
> >>> +index a6f0c4d..175710d 100644
> >>> +--- a/meson_options.txt
> >>> ++++ b/meson_options.txt
> >>> +@@ -38,3 +38,7 @@ option('doc',
> >>> +        description: 'Whether to build the API documentation',
> >>> +        type: 'boolean',
> >>> +        value: true)
> >>> ++option('tests',
> >>> ++       description: 'Whether to build the tests',
> >>> ++       type: 'boolean',
> >>> ++       value: true)
> >>> +--
> >>> +2.39.2
> >>> +
> >>> diff --git a/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
> >>> b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
> >>> new file mode 100644
> >>> index 000000000..b0133409a
> >>> --- /dev/null
> >>> +++ b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
> >>> @@ -0,0 +1,45 @@
> >>> +SUMMARY = "Library for fingerprint readers"
> >>> +DESCRIPTION = "libfprint is an open source software library \
> >>> +designed to make it easy for application developers to add \
> >>> +support for consumer fingerprint readers to their software."
> >>> +HOMEPAGE = "https://www.freedesktop.org/wiki/Software/fprint/libfprint/"
> >>> +
> >>> +DEPENDS = "glib-2.0 libgusb udev libgudev nspr nss pixman cairo"
> >>> +
> >>> +DEPENDS:append:class-target = " libfprint-native "
> >>> +
> >>> +LICENSE = "LGPL-2.1-only"
> >>> +LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
> >>> +
> >>> +#PR = "r1"
> >>> +
> >>> +SRCREV = "86961a9429d589c387da37351fd6b4ff3caf67ea"
> >>> +
> >>> +SRC_URI = " \
> >>> +
> >>> git://anongit.freedesktop.org/git/libfprint/libfprint.git;branch=master;protocol=https \
> >>> +       file://0001-Optionally-use-native-generators.patch \
> >>> +       file://0002-Make-building-tests-optional.patch \
> >>> +"
> >>> +
> >>> +S = "${WORKDIR}/git"
> >>> +
> >>> +inherit meson pkgconfig useradd python3native gobject-introspection
> >>> +
> >>> +EXTRA_OEMESON:class-native = "-Ddoc=false -Dtests=false -Dintrospection=false"
> >>> +
> >>> +EXTRA_OEMESON:class-target = "-Ddoc=false -Dtests=false \
> >>> +       -Dudev_hwdb=enabled -Dudev_hwdb_dir=${sysconfdir}/udev/hwdb.d \
> >>> + -Dudev_hwdb_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-hwdb \
> >>> + -Dudev_rules_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-rules \
> >>> +"
> >>> +
> >>> +do_install:append:class-native () {
> >>> +       install -d ${D}${bindir}
> >>> +       install -m0755 ${B}/libfprint/fprint-list-udev-hwdb
> >>> ${D}${bindir}/fprint-list-udev-hwdb
> >>> +       install -m0755 ${B}/libfprint/fprint-list-udev-rules
> >>> ${D}${bindir}/fprint-list-udev-rules
> >>> +}
> >>> +
> >>> +BBCLASSEXTEND = "native"
> >>> +
> >>> +USERADD_PACKAGES = "${PN}"
> >>> +GROUPADD_PARAM:${PN} = "fprint"
> >>> --
> >>> 2.39.2
> >>>
> >>>
> >>>
> >>>
> >
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#101840): https://lists.openembedded.org/g/openembedded-devel/message/101840
> > Mute This Topic: https://lists.openembedded.org/mt/97950767/3617728
> > Group Owner: openembedded-devel+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [zboszor@gmail.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
>
Böszörményi Zoltán March 30, 2023, 5:20 p.m. UTC | #7
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#L310
https://gitlab.freedesktop.org/libfprint/libfprint/-/blob/master/libfprint/meson.build#L325

> 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'

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

Right. Welcome to:
https://github.com/mesonbuild/meson/issues/11029

I'm not sure what rules in meson do use the exe_wrapper setting, if
you can investigate that and see if one of them can be used in this
case, would be great. Or those two generators can be patched to prefix
the wrapper.

Alex
Khem Raj March 31, 2023, 5:41 p.m. UTC | #9
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).

On Thu, Mar 30, 2023 at 6:43 AM Zoltan Boszormenyi <zboszor@gmail.com> wrote:
>
> libfprint is the library used by fprintd.
>
> Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
> ---
>  ...001-Optionally-use-native-generators.patch | 111 ++++++++++++++++++
>  .../0002-Make-building-tests-optional.patch   |  47 ++++++++
>  .../libfprint/libfprint_1.94.5.bb             |  45 +++++++
>  3 files changed, 203 insertions(+)
>  create mode 100644 meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
>  create mode 100644 meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
>  create mode 100644 meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
>
> diff --git a/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch b/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
> new file mode 100644
> index 000000000..779d78c28
> --- /dev/null
> +++ b/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
> @@ -0,0 +1,111 @@
> +From 4f0f84448dbc46c18d2700ddb45acdee67687574 Mon Sep 17 00:00:00 2001
> +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
> + <zboszor@gmail.com>
> +Date: Thu, 30 Mar 2023 09:45:31 +0200
> +Subject: [PATCH 1/2] Optionally use native generators
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +fprint-list-udev-hwdb and fprint-list-udev-rules are run
> +during the build to generate autosuspend.hwdb and 70-*.rules,
> +respectively.
> +
> +Since they are not marked as "native: true", a cross-compiled
> +version is not possible.
> +
> +Since these binaries are linked with the libfprint_drivers target,
> +marking them as native binaries would also need libfprint_drivers
> +to be duplicated as a native version and possibly other library
> +targets, too.
> +
> +Instead, make it the responsibility of the cross-compiler
> +framework to build the native variant separately and allow
> +the external binaries to be passed in.
> +
> +Upstream-Status: Submitted
> +
> +Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
> +---
> + libfprint/meson.build | 30 ++++++++++++++++++++----------
> + meson_options.txt     |  8 ++++++++
> + 2 files changed, 28 insertions(+), 10 deletions(-)
> +
> +diff --git a/libfprint/meson.build b/libfprint/meson.build
> +index d3c8b03..2a4de67 100644
> +--- a/libfprint/meson.build
> ++++ b/libfprint/meson.build
> +@@ -301,11 +301,16 @@ libfprint_private_dep = declare_dependency(
> +     ]
> + )
> +
> +-udev_hwdb = executable('fprint-list-udev-hwdb',
> +-    'fprint-list-udev-hwdb.c',
> +-    dependencies: libfprint_private_dep,
> +-    link_with: libfprint_drivers,
> +-    install: false)
> ++udev_hwdb_cmd = get_option('udev_hwdb_cmd')
> ++if udev_hwdb_cmd == ''
> ++    udev_hwdb = executable('fprint-list-udev-hwdb',
> ++        'fprint-list-udev-hwdb.c',
> ++        dependencies: libfprint_private_dep,
> ++        link_with: libfprint_drivers,
> ++        install: false)
> ++else
> ++    udev_hwdb = find_program(udev_hwdb_cmd)
> ++endif
> +
> + udev_hwdb_generator = custom_target('udev-hwdb',
> +     output: 'autosuspend.hwdb',
> +@@ -315,12 +320,17 @@ udev_hwdb_generator = custom_target('udev-hwdb',
> +     install: false,
> + )
> +
> ++udev_rules_cmd = get_option('udev_rules_cmd')
> + if install_udev_rules
> +-    udev_rules = executable('fprint-list-udev-rules',
> +-        'fprint-list-udev-rules.c',
> +-        dependencies: libfprint_private_dep,
> +-        link_with: libfprint_drivers,
> +-        install: false)
> ++    if udev_rules_cmd == ''
> ++        udev_rules = executable('fprint-list-udev-rules',
> ++            'fprint-list-udev-rules.c',
> ++            dependencies: libfprint_private_dep,
> ++            link_with: libfprint_drivers,
> ++            install: false)
> ++    else
> ++        udev_rules = find_program(udev_rules_cmd)
> ++    endif
> +
> +     custom_target('udev-rules',
> +         output: '70-@0@.rules'.format(versioned_libname),
> +diff --git a/meson_options.txt b/meson_options.txt
> +index f9b801f..a6f0c4d 100644
> +--- a/meson_options.txt
> ++++ b/meson_options.txt
> +@@ -14,6 +14,10 @@ option('udev_rules_dir',
> +        description: 'Installation path for udev rules',
> +        type: 'string',
> +        value: 'auto')
> ++option('udev_rules_cmd',
> ++       description : 'Optional path for native build of fprint-list-udev-rules',
> ++       type : 'string',
> ++       value : '')
> + option('udev_hwdb',
> +        description: 'Whether to create a udev hwdb for autosuspend (included in systemd v248 and later)',
> +        type: 'feature',
> +@@ -22,6 +26,10 @@ option('udev_hwdb_dir',
> +        description: 'Installation path for udev hwdb',
> +        type: 'string',
> +        value: 'auto')
> ++option('udev_hwdb_cmd',
> ++       description : 'Optional path for native build of fprint-list-udev-hwdb',
> ++       type : 'string',
> ++       value : '')
> + option('gtk-examples',
> +        description: 'Whether to build GTK+ example applications',
> +        type: 'boolean',
> +--
> +2.39.2
> +
> diff --git a/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
> new file mode 100644
> index 000000000..c83ea95e1
> --- /dev/null
> +++ b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
> @@ -0,0 +1,47 @@
> +From 8e27d45a7747c9aaf8e619f2de3ad3eae9659da8 Mon Sep 17 00:00:00 2001
> +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
> + <zboszor@gmail.com>
> +Date: Thu, 30 Mar 2023 09:57:35 +0200
> +Subject: [PATCH 2/2] Make building tests optional
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +Upstream-Status: Submitted
> +
> +Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
> +---
> + meson.build       | 4 +++-
> + meson_options.txt | 4 ++++
> + 2 files changed, 7 insertions(+), 1 deletion(-)
> +
> +diff --git a/meson.build b/meson.build
> +index 1badb16..05edb8d 100644
> +--- a/meson.build
> ++++ b/meson.build
> +@@ -309,7 +309,9 @@ if get_option('gtk-examples')
> + endif
> +
> + subdir('data')
> +-subdir('tests')
> ++if get_option('tests')
> ++    subdir('tests')
> ++endif
> +
> + pkgconfig = import('pkgconfig')
> + pkgconfig.generate(
> +diff --git a/meson_options.txt b/meson_options.txt
> +index a6f0c4d..175710d 100644
> +--- a/meson_options.txt
> ++++ b/meson_options.txt
> +@@ -38,3 +38,7 @@ option('doc',
> +        description: 'Whether to build the API documentation',
> +        type: 'boolean',
> +        value: true)
> ++option('tests',
> ++       description: 'Whether to build the tests',
> ++       type: 'boolean',
> ++       value: true)
> +--
> +2.39.2
> +
> diff --git a/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
> new file mode 100644
> index 000000000..b0133409a
> --- /dev/null
> +++ b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
> @@ -0,0 +1,45 @@
> +SUMMARY = "Library for fingerprint readers"
> +DESCRIPTION = "libfprint is an open source software library \
> +designed to make it easy for application developers to add \
> +support for consumer fingerprint readers to their software."
> +HOMEPAGE = "https://www.freedesktop.org/wiki/Software/fprint/libfprint/"
> +
> +DEPENDS = "glib-2.0 libgusb udev libgudev nspr nss pixman cairo"
> +
> +DEPENDS:append:class-target = " libfprint-native "
> +
> +LICENSE = "LGPL-2.1-only"
> +LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
> +
> +#PR = "r1"
> +
> +SRCREV = "86961a9429d589c387da37351fd6b4ff3caf67ea"
> +
> +SRC_URI = " \
> +       git://anongit.freedesktop.org/git/libfprint/libfprint.git;branch=master;protocol=https \
> +       file://0001-Optionally-use-native-generators.patch \
> +       file://0002-Make-building-tests-optional.patch \
> +"
> +
> +S = "${WORKDIR}/git"
> +
> +inherit meson pkgconfig useradd python3native gobject-introspection
> +
> +EXTRA_OEMESON:class-native = "-Ddoc=false -Dtests=false -Dintrospection=false"
> +
> +EXTRA_OEMESON:class-target = "-Ddoc=false -Dtests=false \
> +       -Dudev_hwdb=enabled -Dudev_hwdb_dir=${sysconfdir}/udev/hwdb.d \
> +       -Dudev_hwdb_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-hwdb \
> +       -Dudev_rules_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-rules \
> +"
> +
> +do_install:append:class-native () {
> +       install -d ${D}${bindir}
> +       install -m0755 ${B}/libfprint/fprint-list-udev-hwdb ${D}${bindir}/fprint-list-udev-hwdb
> +       install -m0755 ${B}/libfprint/fprint-list-udev-rules ${D}${bindir}/fprint-list-udev-rules
> +}
> +
> +BBCLASSEXTEND = "native"
> +
> +USERADD_PACKAGES = "${PN}"
> +GROUPADD_PARAM:${PN} = "fprint"
> --
> 2.39.2
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#101836): https://lists.openembedded.org/g/openembedded-devel/message/101836
> Mute This Topic: https://lists.openembedded.org/mt/97950767/1997914
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Böszörményi Zoltán April 1, 2023, 6:01 a.m. UTC | #10
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@gmail.com> wrote:
>> libfprint is the library used by fprintd.
>>
>> Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
>> ---
>>   ...001-Optionally-use-native-generators.patch | 111 ++++++++++++++++++
>>   .../0002-Make-building-tests-optional.patch   |  47 ++++++++
>>   .../libfprint/libfprint_1.94.5.bb             |  45 +++++++
>>   3 files changed, 203 insertions(+)
>>   create mode 100644 meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
>>   create mode 100644 meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
>>   create mode 100644 meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
>>
>> diff --git a/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch b/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
>> new file mode 100644
>> index 000000000..779d78c28
>> --- /dev/null
>> +++ b/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
>> @@ -0,0 +1,111 @@
>> +From 4f0f84448dbc46c18d2700ddb45acdee67687574 Mon Sep 17 00:00:00 2001
>> +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
>> + <zboszor@gmail.com>
>> +Date: Thu, 30 Mar 2023 09:45:31 +0200
>> +Subject: [PATCH 1/2] Optionally use native generators
>> +MIME-Version: 1.0
>> +Content-Type: text/plain; charset=UTF-8
>> +Content-Transfer-Encoding: 8bit
>> +
>> +fprint-list-udev-hwdb and fprint-list-udev-rules are run
>> +during the build to generate autosuspend.hwdb and 70-*.rules,
>> +respectively.
>> +
>> +Since they are not marked as "native: true", a cross-compiled
>> +version is not possible.
>> +
>> +Since these binaries are linked with the libfprint_drivers target,
>> +marking them as native binaries would also need libfprint_drivers
>> +to be duplicated as a native version and possibly other library
>> +targets, too.
>> +
>> +Instead, make it the responsibility of the cross-compiler
>> +framework to build the native variant separately and allow
>> +the external binaries to be passed in.
>> +
>> +Upstream-Status: Submitted
>> +
>> +Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
>> +---
>> + libfprint/meson.build | 30 ++++++++++++++++++++----------
>> + meson_options.txt     |  8 ++++++++
>> + 2 files changed, 28 insertions(+), 10 deletions(-)
>> +
>> +diff --git a/libfprint/meson.build b/libfprint/meson.build
>> +index d3c8b03..2a4de67 100644
>> +--- a/libfprint/meson.build
>> ++++ b/libfprint/meson.build
>> +@@ -301,11 +301,16 @@ libfprint_private_dep = declare_dependency(
>> +     ]
>> + )
>> +
>> +-udev_hwdb = executable('fprint-list-udev-hwdb',
>> +-    'fprint-list-udev-hwdb.c',
>> +-    dependencies: libfprint_private_dep,
>> +-    link_with: libfprint_drivers,
>> +-    install: false)
>> ++udev_hwdb_cmd = get_option('udev_hwdb_cmd')
>> ++if udev_hwdb_cmd == ''
>> ++    udev_hwdb = executable('fprint-list-udev-hwdb',
>> ++        'fprint-list-udev-hwdb.c',
>> ++        dependencies: libfprint_private_dep,
>> ++        link_with: libfprint_drivers,
>> ++        install: false)
>> ++else
>> ++    udev_hwdb = find_program(udev_hwdb_cmd)
>> ++endif
>> +
>> + udev_hwdb_generator = custom_target('udev-hwdb',
>> +     output: 'autosuspend.hwdb',
>> +@@ -315,12 +320,17 @@ udev_hwdb_generator = custom_target('udev-hwdb',
>> +     install: false,
>> + )
>> +
>> ++udev_rules_cmd = get_option('udev_rules_cmd')
>> + if install_udev_rules
>> +-    udev_rules = executable('fprint-list-udev-rules',
>> +-        'fprint-list-udev-rules.c',
>> +-        dependencies: libfprint_private_dep,
>> +-        link_with: libfprint_drivers,
>> +-        install: false)
>> ++    if udev_rules_cmd == ''
>> ++        udev_rules = executable('fprint-list-udev-rules',
>> ++            'fprint-list-udev-rules.c',
>> ++            dependencies: libfprint_private_dep,
>> ++            link_with: libfprint_drivers,
>> ++            install: false)
>> ++    else
>> ++        udev_rules = find_program(udev_rules_cmd)
>> ++    endif
>> +
>> +     custom_target('udev-rules',
>> +         output: '70-@0@.rules'.format(versioned_libname),
>> +diff --git a/meson_options.txt b/meson_options.txt
>> +index f9b801f..a6f0c4d 100644
>> +--- a/meson_options.txt
>> ++++ b/meson_options.txt
>> +@@ -14,6 +14,10 @@ option('udev_rules_dir',
>> +        description: 'Installation path for udev rules',
>> +        type: 'string',
>> +        value: 'auto')
>> ++option('udev_rules_cmd',
>> ++       description : 'Optional path for native build of fprint-list-udev-rules',
>> ++       type : 'string',
>> ++       value : '')
>> + option('udev_hwdb',
>> +        description: 'Whether to create a udev hwdb for autosuspend (included in systemd v248 and later)',
>> +        type: 'feature',
>> +@@ -22,6 +26,10 @@ option('udev_hwdb_dir',
>> +        description: 'Installation path for udev hwdb',
>> +        type: 'string',
>> +        value: 'auto')
>> ++option('udev_hwdb_cmd',
>> ++       description : 'Optional path for native build of fprint-list-udev-hwdb',
>> ++       type : 'string',
>> ++       value : '')
>> + option('gtk-examples',
>> +        description: 'Whether to build GTK+ example applications',
>> +        type: 'boolean',
>> +--
>> +2.39.2
>> +
>> diff --git a/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
>> new file mode 100644
>> index 000000000..c83ea95e1
>> --- /dev/null
>> +++ b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
>> @@ -0,0 +1,47 @@
>> +From 8e27d45a7747c9aaf8e619f2de3ad3eae9659da8 Mon Sep 17 00:00:00 2001
>> +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
>> + <zboszor@gmail.com>
>> +Date: Thu, 30 Mar 2023 09:57:35 +0200
>> +Subject: [PATCH 2/2] Make building tests optional
>> +MIME-Version: 1.0
>> +Content-Type: text/plain; charset=UTF-8
>> +Content-Transfer-Encoding: 8bit
>> +
>> +Upstream-Status: Submitted
>> +
>> +Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
>> +---
>> + meson.build       | 4 +++-
>> + meson_options.txt | 4 ++++
>> + 2 files changed, 7 insertions(+), 1 deletion(-)
>> +
>> +diff --git a/meson.build b/meson.build
>> +index 1badb16..05edb8d 100644
>> +--- a/meson.build
>> ++++ b/meson.build
>> +@@ -309,7 +309,9 @@ if get_option('gtk-examples')
>> + endif
>> +
>> + subdir('data')
>> +-subdir('tests')
>> ++if get_option('tests')
>> ++    subdir('tests')
>> ++endif
>> +
>> + pkgconfig = import('pkgconfig')
>> + pkgconfig.generate(
>> +diff --git a/meson_options.txt b/meson_options.txt
>> +index a6f0c4d..175710d 100644
>> +--- a/meson_options.txt
>> ++++ b/meson_options.txt
>> +@@ -38,3 +38,7 @@ option('doc',
>> +        description: 'Whether to build the API documentation',
>> +        type: 'boolean',
>> +        value: true)
>> ++option('tests',
>> ++       description: 'Whether to build the tests',
>> ++       type: 'boolean',
>> ++       value: true)
>> +--
>> +2.39.2
>> +
>> diff --git a/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
>> new file mode 100644
>> index 000000000..b0133409a
>> --- /dev/null
>> +++ b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
>> @@ -0,0 +1,45 @@
>> +SUMMARY = "Library for fingerprint readers"
>> +DESCRIPTION = "libfprint is an open source software library \
>> +designed to make it easy for application developers to add \
>> +support for consumer fingerprint readers to their software."
>> +HOMEPAGE = "https://www.freedesktop.org/wiki/Software/fprint/libfprint/"
>> +
>> +DEPENDS = "glib-2.0 libgusb udev libgudev nspr nss pixman cairo"
>> +
>> +DEPENDS:append:class-target = " libfprint-native "
>> +
>> +LICENSE = "LGPL-2.1-only"
>> +LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
>> +
>> +#PR = "r1"
>> +
>> +SRCREV = "86961a9429d589c387da37351fd6b4ff3caf67ea"
>> +
>> +SRC_URI = " \
>> +       git://anongit.freedesktop.org/git/libfprint/libfprint.git;branch=master;protocol=https \
>> +       file://0001-Optionally-use-native-generators.patch \
>> +       file://0002-Make-building-tests-optional.patch \
>> +"
>> +
>> +S = "${WORKDIR}/git"
>> +
>> +inherit meson pkgconfig useradd python3native gobject-introspection
>> +
>> +EXTRA_OEMESON:class-native = "-Ddoc=false -Dtests=false -Dintrospection=false"
>> +
>> +EXTRA_OEMESON:class-target = "-Ddoc=false -Dtests=false \
>> +       -Dudev_hwdb=enabled -Dudev_hwdb_dir=${sysconfdir}/udev/hwdb.d \
>> +       -Dudev_hwdb_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-hwdb \
>> +       -Dudev_rules_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-rules \
>> +"
>> +
>> +do_install:append:class-native () {
>> +       install -d ${D}${bindir}
>> +       install -m0755 ${B}/libfprint/fprint-list-udev-hwdb ${D}${bindir}/fprint-list-udev-hwdb
>> +       install -m0755 ${B}/libfprint/fprint-list-udev-rules ${D}${bindir}/fprint-list-udev-rules
>> +}
>> +
>> +BBCLASSEXTEND = "native"
>> +
>> +USERADD_PACKAGES = "${PN}"
>> +GROUPADD_PARAM:${PN} = "fprint"
>> --
>> 2.39.2
>>
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#101836): https://lists.openembedded.org/g/openembedded-devel/message/101836
>> Mute This Topic: https://lists.openembedded.org/mt/97950767/1997914
>> Group Owner: openembedded-devel+owner@lists.openembedded.org
>> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
Khem Raj April 1, 2023, 12:55 p.m. UTC | #11
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']

On Fri, Mar 31, 2023 at 11:01 PM Böszörményi Zoltán <zboszor@gmail.com> 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@gmail.com> wrote:
> >> libfprint is the library used by fprintd.
> >>
> >> Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
> >> ---
> >>   ...001-Optionally-use-native-generators.patch | 111 ++++++++++++++++++
> >>   .../0002-Make-building-tests-optional.patch   |  47 ++++++++
> >>   .../libfprint/libfprint_1.94.5.bb             |  45 +++++++
> >>   3 files changed, 203 insertions(+)
> >>   create mode 100644 meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
> >>   create mode 100644 meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
> >>   create mode 100644 meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
> >>
> >> diff --git a/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch b/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
> >> new file mode 100644
> >> index 000000000..779d78c28
> >> --- /dev/null
> >> +++ b/meta-oe/recipes-support/libfprint/libfprint/0001-Optionally-use-native-generators.patch
> >> @@ -0,0 +1,111 @@
> >> +From 4f0f84448dbc46c18d2700ddb45acdee67687574 Mon Sep 17 00:00:00 2001
> >> +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
> >> + <zboszor@gmail.com>
> >> +Date: Thu, 30 Mar 2023 09:45:31 +0200
> >> +Subject: [PATCH 1/2] Optionally use native generators
> >> +MIME-Version: 1.0
> >> +Content-Type: text/plain; charset=UTF-8
> >> +Content-Transfer-Encoding: 8bit
> >> +
> >> +fprint-list-udev-hwdb and fprint-list-udev-rules are run
> >> +during the build to generate autosuspend.hwdb and 70-*.rules,
> >> +respectively.
> >> +
> >> +Since they are not marked as "native: true", a cross-compiled
> >> +version is not possible.
> >> +
> >> +Since these binaries are linked with the libfprint_drivers target,
> >> +marking them as native binaries would also need libfprint_drivers
> >> +to be duplicated as a native version and possibly other library
> >> +targets, too.
> >> +
> >> +Instead, make it the responsibility of the cross-compiler
> >> +framework to build the native variant separately and allow
> >> +the external binaries to be passed in.
> >> +
> >> +Upstream-Status: Submitted
> >> +
> >> +Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
> >> +---
> >> + libfprint/meson.build | 30 ++++++++++++++++++++----------
> >> + meson_options.txt     |  8 ++++++++
> >> + 2 files changed, 28 insertions(+), 10 deletions(-)
> >> +
> >> +diff --git a/libfprint/meson.build b/libfprint/meson.build
> >> +index d3c8b03..2a4de67 100644
> >> +--- a/libfprint/meson.build
> >> ++++ b/libfprint/meson.build
> >> +@@ -301,11 +301,16 @@ libfprint_private_dep = declare_dependency(
> >> +     ]
> >> + )
> >> +
> >> +-udev_hwdb = executable('fprint-list-udev-hwdb',
> >> +-    'fprint-list-udev-hwdb.c',
> >> +-    dependencies: libfprint_private_dep,
> >> +-    link_with: libfprint_drivers,
> >> +-    install: false)
> >> ++udev_hwdb_cmd = get_option('udev_hwdb_cmd')
> >> ++if udev_hwdb_cmd == ''
> >> ++    udev_hwdb = executable('fprint-list-udev-hwdb',
> >> ++        'fprint-list-udev-hwdb.c',
> >> ++        dependencies: libfprint_private_dep,
> >> ++        link_with: libfprint_drivers,
> >> ++        install: false)
> >> ++else
> >> ++    udev_hwdb = find_program(udev_hwdb_cmd)
> >> ++endif
> >> +
> >> + udev_hwdb_generator = custom_target('udev-hwdb',
> >> +     output: 'autosuspend.hwdb',
> >> +@@ -315,12 +320,17 @@ udev_hwdb_generator = custom_target('udev-hwdb',
> >> +     install: false,
> >> + )
> >> +
> >> ++udev_rules_cmd = get_option('udev_rules_cmd')
> >> + if install_udev_rules
> >> +-    udev_rules = executable('fprint-list-udev-rules',
> >> +-        'fprint-list-udev-rules.c',
> >> +-        dependencies: libfprint_private_dep,
> >> +-        link_with: libfprint_drivers,
> >> +-        install: false)
> >> ++    if udev_rules_cmd == ''
> >> ++        udev_rules = executable('fprint-list-udev-rules',
> >> ++            'fprint-list-udev-rules.c',
> >> ++            dependencies: libfprint_private_dep,
> >> ++            link_with: libfprint_drivers,
> >> ++            install: false)
> >> ++    else
> >> ++        udev_rules = find_program(udev_rules_cmd)
> >> ++    endif
> >> +
> >> +     custom_target('udev-rules',
> >> +         output: '70-@0@.rules'.format(versioned_libname),
> >> +diff --git a/meson_options.txt b/meson_options.txt
> >> +index f9b801f..a6f0c4d 100644
> >> +--- a/meson_options.txt
> >> ++++ b/meson_options.txt
> >> +@@ -14,6 +14,10 @@ option('udev_rules_dir',
> >> +        description: 'Installation path for udev rules',
> >> +        type: 'string',
> >> +        value: 'auto')
> >> ++option('udev_rules_cmd',
> >> ++       description : 'Optional path for native build of fprint-list-udev-rules',
> >> ++       type : 'string',
> >> ++       value : '')
> >> + option('udev_hwdb',
> >> +        description: 'Whether to create a udev hwdb for autosuspend (included in systemd v248 and later)',
> >> +        type: 'feature',
> >> +@@ -22,6 +26,10 @@ option('udev_hwdb_dir',
> >> +        description: 'Installation path for udev hwdb',
> >> +        type: 'string',
> >> +        value: 'auto')
> >> ++option('udev_hwdb_cmd',
> >> ++       description : 'Optional path for native build of fprint-list-udev-hwdb',
> >> ++       type : 'string',
> >> ++       value : '')
> >> + option('gtk-examples',
> >> +        description: 'Whether to build GTK+ example applications',
> >> +        type: 'boolean',
> >> +--
> >> +2.39.2
> >> +
> >> diff --git a/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
> >> new file mode 100644
> >> index 000000000..c83ea95e1
> >> --- /dev/null
> >> +++ b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
> >> @@ -0,0 +1,47 @@
> >> +From 8e27d45a7747c9aaf8e619f2de3ad3eae9659da8 Mon Sep 17 00:00:00 2001
> >> +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
> >> + <zboszor@gmail.com>
> >> +Date: Thu, 30 Mar 2023 09:57:35 +0200
> >> +Subject: [PATCH 2/2] Make building tests optional
> >> +MIME-Version: 1.0
> >> +Content-Type: text/plain; charset=UTF-8
> >> +Content-Transfer-Encoding: 8bit
> >> +
> >> +Upstream-Status: Submitted
> >> +
> >> +Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
> >> +---
> >> + meson.build       | 4 +++-
> >> + meson_options.txt | 4 ++++
> >> + 2 files changed, 7 insertions(+), 1 deletion(-)
> >> +
> >> +diff --git a/meson.build b/meson.build
> >> +index 1badb16..05edb8d 100644
> >> +--- a/meson.build
> >> ++++ b/meson.build
> >> +@@ -309,7 +309,9 @@ if get_option('gtk-examples')
> >> + endif
> >> +
> >> + subdir('data')
> >> +-subdir('tests')
> >> ++if get_option('tests')
> >> ++    subdir('tests')
> >> ++endif
> >> +
> >> + pkgconfig = import('pkgconfig')
> >> + pkgconfig.generate(
> >> +diff --git a/meson_options.txt b/meson_options.txt
> >> +index a6f0c4d..175710d 100644
> >> +--- a/meson_options.txt
> >> ++++ b/meson_options.txt
> >> +@@ -38,3 +38,7 @@ option('doc',
> >> +        description: 'Whether to build the API documentation',
> >> +        type: 'boolean',
> >> +        value: true)
> >> ++option('tests',
> >> ++       description: 'Whether to build the tests',
> >> ++       type: 'boolean',
> >> ++       value: true)
> >> +--
> >> +2.39.2
> >> +
> >> diff --git a/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
> >> new file mode 100644
> >> index 000000000..b0133409a
> >> --- /dev/null
> >> +++ b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
> >> @@ -0,0 +1,45 @@
> >> +SUMMARY = "Library for fingerprint readers"
> >> +DESCRIPTION = "libfprint is an open source software library \
> >> +designed to make it easy for application developers to add \
> >> +support for consumer fingerprint readers to their software."
> >> +HOMEPAGE = "https://www.freedesktop.org/wiki/Software/fprint/libfprint/"
> >> +
> >> +DEPENDS = "glib-2.0 libgusb udev libgudev nspr nss pixman cairo"
> >> +
> >> +DEPENDS:append:class-target = " libfprint-native "
> >> +
> >> +LICENSE = "LGPL-2.1-only"
> >> +LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
> >> +
> >> +#PR = "r1"
> >> +
> >> +SRCREV = "86961a9429d589c387da37351fd6b4ff3caf67ea"
> >> +
> >> +SRC_URI = " \
> >> +       git://anongit.freedesktop.org/git/libfprint/libfprint.git;branch=master;protocol=https \
> >> +       file://0001-Optionally-use-native-generators.patch \
> >> +       file://0002-Make-building-tests-optional.patch \
> >> +"
> >> +
> >> +S = "${WORKDIR}/git"
> >> +
> >> +inherit meson pkgconfig useradd python3native gobject-introspection
> >> +
> >> +EXTRA_OEMESON:class-native = "-Ddoc=false -Dtests=false -Dintrospection=false"
> >> +
> >> +EXTRA_OEMESON:class-target = "-Ddoc=false -Dtests=false \
> >> +       -Dudev_hwdb=enabled -Dudev_hwdb_dir=${sysconfdir}/udev/hwdb.d \
> >> +       -Dudev_hwdb_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-hwdb \
> >> +       -Dudev_rules_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-rules \
> >> +"
> >> +
> >> +do_install:append:class-native () {
> >> +       install -d ${D}${bindir}
> >> +       install -m0755 ${B}/libfprint/fprint-list-udev-hwdb ${D}${bindir}/fprint-list-udev-hwdb
> >> +       install -m0755 ${B}/libfprint/fprint-list-udev-rules ${D}${bindir}/fprint-list-udev-rules
> >> +}
> >> +
> >> +BBCLASSEXTEND = "native"
> >> +
> >> +USERADD_PACKAGES = "${PN}"
> >> +GROUPADD_PARAM:${PN} = "fprint"
> >> --
> >> 2.39.2
> >>
> >>
> >> -=-=-=-=-=-=-=-=-=-=-=-
> >> Links: You receive all messages sent to this group.
> >> View/Reply Online (#101836): https://lists.openembedded.org/g/openembedded-devel/message/101836
> >> Mute This Topic: https://lists.openembedded.org/mt/97950767/1997914
> >> Group Owner: openembedded-devel+owner@lists.openembedded.org
> >> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> >> -=-=-=-=-=-=-=-=-=-=-=-
> >>
>
diff mbox series

Patch

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@gmail.com>
+Date: Thu, 30 Mar 2023 09:45:31 +0200
+Subject: [PATCH 1/2] Optionally use native generators
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+fprint-list-udev-hwdb and fprint-list-udev-rules are run
+during the build to generate autosuspend.hwdb and 70-*.rules,
+respectively.
+
+Since they are not marked as "native: true", a cross-compiled
+version is not possible.
+
+Since these binaries are linked with the libfprint_drivers target,
+marking them as native binaries would also need libfprint_drivers
+to be duplicated as a native version and possibly other library
+targets, too.
+
+Instead, make it the responsibility of the cross-compiler
+framework to build the native variant separately and allow
+the external binaries to be passed in.
+
+Upstream-Status: Submitted
+
+Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
+---
+ libfprint/meson.build | 30 ++++++++++++++++++++----------
+ meson_options.txt     |  8 ++++++++
+ 2 files changed, 28 insertions(+), 10 deletions(-)
+
+diff --git a/libfprint/meson.build b/libfprint/meson.build
+index d3c8b03..2a4de67 100644
+--- a/libfprint/meson.build
++++ b/libfprint/meson.build
+@@ -301,11 +301,16 @@ libfprint_private_dep = declare_dependency(
+     ]
+ )
+ 
+-udev_hwdb = executable('fprint-list-udev-hwdb',
+-    'fprint-list-udev-hwdb.c',
+-    dependencies: libfprint_private_dep,
+-    link_with: libfprint_drivers,
+-    install: false)
++udev_hwdb_cmd = get_option('udev_hwdb_cmd')
++if udev_hwdb_cmd == ''
++    udev_hwdb = executable('fprint-list-udev-hwdb',
++        'fprint-list-udev-hwdb.c',
++        dependencies: libfprint_private_dep,
++        link_with: libfprint_drivers,
++        install: false)
++else
++    udev_hwdb = find_program(udev_hwdb_cmd)
++endif
+ 
+ udev_hwdb_generator = custom_target('udev-hwdb',
+     output: 'autosuspend.hwdb',
+@@ -315,12 +320,17 @@ udev_hwdb_generator = custom_target('udev-hwdb',
+     install: false,
+ )
+ 
++udev_rules_cmd = get_option('udev_rules_cmd')
+ if install_udev_rules
+-    udev_rules = executable('fprint-list-udev-rules',
+-        'fprint-list-udev-rules.c',
+-        dependencies: libfprint_private_dep,
+-        link_with: libfprint_drivers,
+-        install: false)
++    if udev_rules_cmd == ''
++        udev_rules = executable('fprint-list-udev-rules',
++            'fprint-list-udev-rules.c',
++            dependencies: libfprint_private_dep,
++            link_with: libfprint_drivers,
++            install: false)
++    else
++        udev_rules = find_program(udev_rules_cmd)
++    endif
+ 
+     custom_target('udev-rules',
+         output: '70-@0@.rules'.format(versioned_libname),
+diff --git a/meson_options.txt b/meson_options.txt
+index f9b801f..a6f0c4d 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -14,6 +14,10 @@ option('udev_rules_dir',
+        description: 'Installation path for udev rules',
+        type: 'string',
+        value: 'auto')
++option('udev_rules_cmd',
++       description : 'Optional path for native build of fprint-list-udev-rules',
++       type : 'string',
++       value : '')
+ option('udev_hwdb',
+        description: 'Whether to create a udev hwdb for autosuspend (included in systemd v248 and later)',
+        type: 'feature',
+@@ -22,6 +26,10 @@ option('udev_hwdb_dir',
+        description: 'Installation path for udev hwdb',
+        type: 'string',
+        value: 'auto')
++option('udev_hwdb_cmd',
++       description : 'Optional path for native build of fprint-list-udev-hwdb',
++       type : 'string',
++       value : '')
+ option('gtk-examples',
+        description: 'Whether to build GTK+ example applications',
+        type: 'boolean',
+-- 
+2.39.2
+
diff --git a/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
new file mode 100644
index 000000000..c83ea95e1
--- /dev/null
+++ b/meta-oe/recipes-support/libfprint/libfprint/0002-Make-building-tests-optional.patch
@@ -0,0 +1,47 @@ 
+From 8e27d45a7747c9aaf8e619f2de3ad3eae9659da8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
+ <zboszor@gmail.com>
+Date: Thu, 30 Mar 2023 09:57:35 +0200
+Subject: [PATCH 2/2] Make building tests optional
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Submitted
+
+Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
+---
+ meson.build       | 4 +++-
+ meson_options.txt | 4 ++++
+ 2 files changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 1badb16..05edb8d 100644
+--- a/meson.build
++++ b/meson.build
+@@ -309,7 +309,9 @@ if get_option('gtk-examples')
+ endif
+ 
+ subdir('data')
+-subdir('tests')
++if get_option('tests')
++    subdir('tests')
++endif
+ 
+ pkgconfig = import('pkgconfig')
+ pkgconfig.generate(
+diff --git a/meson_options.txt b/meson_options.txt
+index a6f0c4d..175710d 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -38,3 +38,7 @@ option('doc',
+        description: 'Whether to build the API documentation',
+        type: 'boolean',
+        value: true)
++option('tests',
++       description: 'Whether to build the tests',
++       type: 'boolean',
++       value: true)
+-- 
+2.39.2
+
diff --git a/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
new file mode 100644
index 000000000..b0133409a
--- /dev/null
+++ b/meta-oe/recipes-support/libfprint/libfprint_1.94.5.bb
@@ -0,0 +1,45 @@ 
+SUMMARY = "Library for fingerprint readers"
+DESCRIPTION = "libfprint is an open source software library \
+designed to make it easy for application developers to add \
+support for consumer fingerprint readers to their software."
+HOMEPAGE = "https://www.freedesktop.org/wiki/Software/fprint/libfprint/"
+
+DEPENDS = "glib-2.0 libgusb udev libgudev nspr nss pixman cairo"
+
+DEPENDS:append:class-target = " libfprint-native "
+
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
+
+#PR = "r1"
+
+SRCREV = "86961a9429d589c387da37351fd6b4ff3caf67ea"
+
+SRC_URI = " \
+	git://anongit.freedesktop.org/git/libfprint/libfprint.git;branch=master;protocol=https \
+	file://0001-Optionally-use-native-generators.patch \
+	file://0002-Make-building-tests-optional.patch \
+"
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig useradd python3native gobject-introspection
+
+EXTRA_OEMESON:class-native = "-Ddoc=false -Dtests=false -Dintrospection=false"
+
+EXTRA_OEMESON:class-target = "-Ddoc=false -Dtests=false \
+	-Dudev_hwdb=enabled -Dudev_hwdb_dir=${sysconfdir}/udev/hwdb.d \
+	-Dudev_hwdb_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-hwdb \
+	-Dudev_rules_cmd=${STAGING_BINDIR_NATIVE}/fprint-list-udev-rules \
+"
+
+do_install:append:class-native () {
+	install -d ${D}${bindir}
+	install -m0755 ${B}/libfprint/fprint-list-udev-hwdb ${D}${bindir}/fprint-list-udev-hwdb
+	install -m0755 ${B}/libfprint/fprint-list-udev-rules ${D}${bindir}/fprint-list-udev-rules
+}
+
+BBCLASSEXTEND = "native"
+
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM:${PN} = "fprint"