Patchwork [v2] connman: fix systemd support for connman-* packages.

login
register
mail settings
Submitter Yevhen Kyriukha
Date Aug. 13, 2013, 11:26 a.m.
Message ID <1376393206-14191-1-git-send-email-kirgene@gmail.com>
Download mbox | patch
Permalink /patch/55539/
State Accepted
Commit 657c7724966fdbd1236cb003419f01c885bcd570
Headers show

Comments

Yevhen Kyriukha - Aug. 13, 2013, 11:26 a.m.
This patch fixes systemd's postinst/postrm script generation.

Signed-off-by: Yevhen Kyriukha <kirgene@gmail.com>
---
 meta/recipes-connectivity/connman/connman.inc | 8 ++++++++
 1 file changed, 8 insertions(+)
Saul Wold - Aug. 13, 2013, 3:30 p.m.
On 08/13/2013 04:26 AM, Yevhen Kyriukha wrote:
> This patch fixes systemd's postinst/postrm script generation.
>
> Signed-off-by: Yevhen Kyriukha <kirgene@gmail.com>
> ---
>   meta/recipes-connectivity/connman/connman.inc | 8 ++++++++
>   1 file changed, 8 insertions(+)
>
> diff --git a/meta/recipes-connectivity/connman/connman.inc b/meta/recipes-connectivity/connman/connman.inc
> index 6b5ea0b..37ce3ec 100644
> --- a/meta/recipes-connectivity/connman/connman.inc
> +++ b/meta/recipes-connectivity/connman/connman.inc
> @@ -56,6 +56,14 @@ PACKAGECONFIG[wispr] = "--enable-wispr,--disable-wispr,gnutls,"
>   INITSCRIPT_NAME = "connman"
>   INITSCRIPT_PARAMS = "start 05 5 2 3 . stop 22 0 1 6 ."
>
> +python __anonymous () {
> +    systemd_packages = "${PN}"
> +    pkgconfig = d.getVar('PACKAGECONFIG', True)
> +    if ('openvpn' or 'vpnc' or 'l2tp' or 'pptp') in pkgconfig.split():
> +        systemd_packages += " ${PN}-vpn"
> +    d.setVar('SYSTEMD_PACKAGES', systemd_packages)
> +}
> +
>   SYSTEMD_SERVICE_${PN} = "connman.service"
>   SYSTEMD_SERVICE_${PN}-vpn = "connman-vpn.service"
>   SYSTEMD_WIRED_SETUP = "ExecStartPre=-${libdir}/connman/wired-setup"
>
Can't you use the base_contains style of anon python in the 
SYSTEMD_PACKAGES:

SYSTEMD_PACKAGES = "${PN} ${@base_contains('PACKAGECONFIG', 'vpn', 
'${PN}-vpn', '', d)}"

Or can any one of those in the list above trigger the vpn, it would be 
cleaner if we just trigger on just one item.

Sau!
Yevhen Kyriukha - Aug. 13, 2013, 4:08 p.m.
2013/8/13 Saul Wold <sgw@linux.intel.com>:
> On 08/13/2013 04:26 AM, Yevhen Kyriukha wrote:
>>
>> This patch fixes systemd's postinst/postrm script generation.
>>
>> Signed-off-by: Yevhen Kyriukha <kirgene@gmail.com>
>> ---
>>   meta/recipes-connectivity/connman/connman.inc | 8 ++++++++
>>   1 file changed, 8 insertions(+)
>>
>> diff --git a/meta/recipes-connectivity/connman/connman.inc
>> b/meta/recipes-connectivity/connman/connman.inc
>> index 6b5ea0b..37ce3ec 100644
>> --- a/meta/recipes-connectivity/connman/connman.inc
>> +++ b/meta/recipes-connectivity/connman/connman.inc
>> @@ -56,6 +56,14 @@ PACKAGECONFIG[wispr] =
>> "--enable-wispr,--disable-wispr,gnutls,"
>>   INITSCRIPT_NAME = "connman"
>>   INITSCRIPT_PARAMS = "start 05 5 2 3 . stop 22 0 1 6 ."
>>
>> +python __anonymous () {
>> +    systemd_packages = "${PN}"
>> +    pkgconfig = d.getVar('PACKAGECONFIG', True)
>> +    if ('openvpn' or 'vpnc' or 'l2tp' or 'pptp') in pkgconfig.split():
>> +        systemd_packages += " ${PN}-vpn"
>> +    d.setVar('SYSTEMD_PACKAGES', systemd_packages)
>> +}
>> +
>>   SYSTEMD_SERVICE_${PN} = "connman.service"
>>   SYSTEMD_SERVICE_${PN}-vpn = "connman-vpn.service"
>>   SYSTEMD_WIRED_SETUP = "ExecStartPre=-${libdir}/connman/wired-setup"
>>
> Can't you use the base_contains style of anon python in the
> SYSTEMD_PACKAGES:
>
> SYSTEMD_PACKAGES = "${PN} ${@base_contains('PACKAGECONFIG', 'vpn',
> '${PN}-vpn', '', d)}"
>
> Or can any one of those in the list above trigger the vpn, it would be
> cleaner if we just trigger on just one item.
>
> Sau!

Here is how connman detects (in configure.ac) whether to build
connman-vpn or not:
AM_CONDITIONAL(VPN, test "${enable_openconnect}" != "no" -o \
                        "${enable_openvpn}" != "no" -o \
                        "${enable_vpnc}" != "no" -o \
                        "${enable_l2tp}" != "no" -o \
                        "${enable_pptp}" != "no")

This patch is doing the same check: if at least one of VPN
technologies were selected we should build connman-vpn.

base_contains is not an option in this case as it checks whether
environment variable contains all strings that you provide in second
parameter.

Regards,
Yevhen
Ross Burton - Aug. 20, 2013, 11:58 a.m.
On 13 August 2013 12:26, Yevhen Kyriukha <kirgene@gmail.com> wrote:
> +python __anonymous () {
> +    systemd_packages = "${PN}"
> +    pkgconfig = d.getVar('PACKAGECONFIG', True)
> +    if ('openvpn' or 'vpnc' or 'l2tp' or 'pptp') in pkgconfig.split():
> +        systemd_packages += " ${PN}-vpn"
> +    d.setVar('SYSTEMD_PACKAGES', systemd_packages)
> +}

I'm not keen on this as its quite a lot of logic to put in the recipe
when it would be good to handle this case of optional packages in the
systemd class itself.

However I'm not sure how best to do this as the FILES_* manipulation
needs to happen *before* the package split, and this check can only
happen *after* the package split.  I wonder if it's possible to split
up the systemd class functionality like that.

So, we should probably merge this now, and try and fix the class so we
can remove it again later.

Ross

Patch

diff --git a/meta/recipes-connectivity/connman/connman.inc b/meta/recipes-connectivity/connman/connman.inc
index 6b5ea0b..37ce3ec 100644
--- a/meta/recipes-connectivity/connman/connman.inc
+++ b/meta/recipes-connectivity/connman/connman.inc
@@ -56,6 +56,14 @@  PACKAGECONFIG[wispr] = "--enable-wispr,--disable-wispr,gnutls,"
 INITSCRIPT_NAME = "connman"
 INITSCRIPT_PARAMS = "start 05 5 2 3 . stop 22 0 1 6 ."
 
+python __anonymous () {
+    systemd_packages = "${PN}"
+    pkgconfig = d.getVar('PACKAGECONFIG', True)
+    if ('openvpn' or 'vpnc' or 'l2tp' or 'pptp') in pkgconfig.split():
+        systemd_packages += " ${PN}-vpn"
+    d.setVar('SYSTEMD_PACKAGES', systemd_packages)
+}
+
 SYSTEMD_SERVICE_${PN} = "connman.service"
 SYSTEMD_SERVICE_${PN}-vpn = "connman-vpn.service"
 SYSTEMD_WIRED_SETUP = "ExecStartPre=-${libdir}/connman/wired-setup"