Patchwork [v2] util-linux: Use PACKAGECONFIG to control pam and system config options

login
register
mail settings
Submitter Saul Wold
Date July 8, 2013, 11:10 p.m.
Message ID <1373325035-29814-1-git-send-email-sgw@linux.intel.com>
Download mbox | patch
Permalink /patch/53333/
State New
Headers show

Comments

Saul Wold - July 8, 2013, 11:10 p.m.
The PACKAGECONFIG will ensure consistent enabling and disabling of the pam and systemd related
options for configure and the correct dependencies

v2: fixed PACKAGECONFIG line continuation grammar
    added _class-target for PACKAGECONFIG to work on target only

Signed-off-by: Saul Wold <sgw@linux.intel.com>
---
 meta/recipes-core/util-linux/util-linux.inc | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)
Enrico Scholz - July 10, 2013, 4:26 p.m.
Saul Wold <sgw-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> writes:

> The PACKAGECONFIG will ensure consistent enabling and disabling of the pam and systemd related
> options for configure and the correct dependencies
>
> v2: fixed PACKAGECONFIG line continuation grammar
>     added _class-target for PACKAGECONFIG to work on target only
> ...
> +PACKAGECONFIG_class-target ??= "${@base_contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \
> +                                ${@base_contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} "

This does not work here. d.getVar('PACKAGECONFIG', True) evaluates to 'None'
in the anonymous python function in base.bbclass so that non-systemd options
are selected in systemd distributions and packaging fails in a sanity check.

Using the less weak '?=' operator makes thing work as expected.



Enrico
Koen Kooi - July 25, 2013, 12:58 p.m.
Op 10 jul. 2013, om 18:26 heeft Enrico Scholz <enrico.scholz@sigma-chemnitz.de> het volgende geschreven:

> Saul Wold <sgw-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> writes:
> 
>> The PACKAGECONFIG will ensure consistent enabling and disabling of the pam and systemd related
>> options for configure and the correct dependencies
>> 
>> v2: fixed PACKAGECONFIG line continuation grammar
>>    added _class-target for PACKAGECONFIG to work on target only
>> ...
>> +PACKAGECONFIG_class-target ??= "${@base_contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \
>> +                                ${@base_contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} "
> 
> This does not work here. d.getVar('PACKAGECONFIG', True) evaluates to 'None'
> in the anonymous python function in base.bbclass so that non-systemd options
> are selected in systemd distributions and packaging fails in a sanity check.
> 
> Using the less weak '?=' operator makes thing work as expected.

And a different version of this patch got merged:

	https://github.com/openembedded/oe-core/commit/7cde7c639c53724327d981cbc0db5e123607de1c

Which has the following bug:

PACKAGECONFIG_class-target ??= "${@base_contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)} \
[..]
PACKAGECONFIG[pam] = "--enable-su --enable-runuser,--disable-su --disable-runuser, pam,"

It sets 'libpam' as PACKAGECONFIG option, but the option is actually named 'pam'. The patches posted to this list don't seem to have this bug.

regards,

Koen

Patch

diff --git a/meta/recipes-core/util-linux/util-linux.inc b/meta/recipes-core/util-linux/util-linux.inc
index 5bae370..7d50856 100644
--- a/meta/recipes-core/util-linux/util-linux.inc
+++ b/meta/recipes-core/util-linux/util-linux.inc
@@ -42,18 +42,17 @@  EXTRA_OECONF = "--libdir=${base_libdir} --disable-use-tty-group \
                 --disable-makeinstall-chown --enable-elvtune --enable-init \
                 --enable-kill --enable-last --enable-mesg --enable-partx \
                 --enable-raw --enable-rdev --enable-reset --disable-login \
-                --disable-vipw --disable-newgrp --disable-chfn-chsh --disable-su \
+                --disable-vipw --disable-newgrp --disable-chfn-chsh \
                 --enable-write --enable-arch --enable-mount --with-fsprobe=builtin \
                 --enable-libuuid --enable-libblkid --enable-fsck --without-udev \
-                --disable-runuser \
 		usrsbin_execdir='${sbindir}' \
 "
+PACKAGECONFIG_class-target ??= "${@base_contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \
+                                ${@base_contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} "
+PACKAGECONFIG[pam] = "--enable-su --enable-runuser,--disable-su --disable-runuser, pam,"
 
 # Respect the systemd feature for uuidd
-EXTRA_OECONF += "${@base_contains('DISTRO_FEATURES', 'systemd', '--enable-socket-activation', '--disable-socket-activation', d)}"
-EXTRA_OECONF += "${@base_contains('DISTRO_FEATURES', 'systemd', '--with-systemdsystemunitdir=${systemd_unitdir}/system/', '--without-systemdsystemunitdir', d)}"
-
-EXTRA_OECONF_append_class-native = " --disable-login --disable-su --disable-runuser"
+PACKAGECONFIG[systemd] = "--enable-socket-activation --with-systemdsystemunitdir=${systemd_unitdir}/system/, --disable-socket-activation --without-systemdsystemunitdir"
 
 FILES_${PN}-bash-completion += "${datadir}/bash-completion"
 FILES_${PN}-doc += "${datadir}/getopt/getopt-*.*"