Patchwork connman: replace hardcoded path in init script

login
register
mail settings
Submitter Stanacar, StefanX
Date April 25, 2013, 1:05 a.m.
Message ID <1366851904-1306-1-git-send-email-stefanx.stanacar@intel.com>
Download mbox | patch
Permalink /patch/48847/
State New
Headers show

Comments

Stanacar, StefanX - April 25, 2013, 1:05 a.m.
Because the connman init script sources a config file from /usr/lib
we end up with no network in multilib enabled sato images, so replace
with the real libdir.

Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com>
---
 meta/recipes-connectivity/connman/connman.inc     | 3 ++-
 meta/recipes-connectivity/connman/connman/connman | 4 ++--
 2 files changed, 4 insertions(+), 3 deletions(-)
Mark Hatle - April 25, 2013, 1:41 p.m.
On 4/24/13 8:05 PM, Stefan Stanacar wrote:
> Because the connman init script sources a config file from /usr/lib
> we end up with no network in multilib enabled sato images, so replace
> with the real libdir.
>
> Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com>
> ---
>   meta/recipes-connectivity/connman/connman.inc     | 3 ++-
>   meta/recipes-connectivity/connman/connman/connman | 4 ++--
>   2 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/meta/recipes-connectivity/connman/connman.inc b/meta/recipes-connectivity/connman/connman.inc
> index 589ece8..93c9da0 100644
> --- a/meta/recipes-connectivity/connman/connman.inc
> +++ b/meta/recipes-connectivity/connman/connman.inc
> @@ -47,7 +47,7 @@ INITSCRIPT_NAME = "connman"
>   INITSCRIPT_PARAMS = "start 05 5 2 3 . stop 22 0 1 6 ."
>
>   SYSTEMD_SERVICE_${PN} = "connman.service"
> -SYSTEMD_WIRED_SETUP = "ExecStartPre=-/usr/lib/connman/wired-setup"
> +SYSTEMD_WIRED_SETUP = "ExecStartPre=-${libdir}/connman/wired-setup"

I don't think this is right.  The initscript and setup command should be in the 
'libexec' location, which is /usr/lib/connman.  This way the initscript from any 
duplicate multilibs installed won't cause a conflict.  And the binaries end up 
in a known location.  (The libraries on the other hand should definitely be in 
the libdir.)

So far we've tried to follow RPM/Fedora style rules for multilib work.  And 
those rules are:

* Multilib packages can all be installed at once
* Executables should be installed in the same location, so the package manager 
rules take priority as to what version is installed and runable
* Scripts and other non-executables much either be the same in all multilibs, or 
installed in a unique location.

--Mark

>
>   # IMPORTANT: because xuser is shared with rootless X, please make sure the
>   # USERADD_PARAM is in sync with the one in xserver-nodm-init.bb
> @@ -73,6 +73,7 @@ do_install_append() {
>   	if ${@base_contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
>   		install -d ${D}${sysconfdir}/init.d
>   		install -m 0755 ${WORKDIR}/connman ${D}${sysconfdir}/init.d/connman
> +                sed -i s%@LIBDIR@%${libdir}% ${D}${sysconfdir}/init.d/connman
>   	fi
>
>   	install -d ${D}${bindir}
> diff --git a/meta/recipes-connectivity/connman/connman/connman b/meta/recipes-connectivity/connman/connman/connman
> index a111f60..67ba7c8 100644
> --- a/meta/recipes-connectivity/connman/connman/connman
> +++ b/meta/recipes-connectivity/connman/connman/connman
> @@ -32,8 +32,8 @@ do_start() {
>   		ethn=`ifconfig | grep eth | sed -e "s/\(eth[0-9]\)\(.*\)/\1/"`
>   		EXTRA_PARAM="-I $ethn"
>   	fi
> -	if [ -f /usr/lib/connman/wired-setup ] ; then
> -		. /usr/lib/connman/wired-setup
> +	if [ -f @LIBDIR@/connman/wired-setup ] ; then
> +		. @LIBDIR@/connman/wired-setup
>   	fi
>   	$DAEMON $EXTRA_PARAM
>   }
>
Stefan Stanacar - April 25, 2013, 6:32 p.m.
Mark Hatle <mark.hatle@...> writes:

> 
> On 4/24/13 8:05 PM, Stefan Stanacar wrote:
> > Because the connman init script sources a config file from /usr/lib
> > we end up with no network in multilib enabled sato images, so replace
> > with the real libdir.
> >
> > Signed-off-by: Stefan Stanacar <stefanx.stanacar@...>
> > ---
> >   meta/recipes-connectivity/connman/connman.inc     | 3 ++-
> >   meta/recipes-connectivity/connman/connman/connman | 4 ++--
> >   2 files changed, 4 insertions(+), 3 deletions(-)
> >
> > diff --git a/meta/recipes-connectivity/connman/connman.inc 
b/meta/recipes-connectivity/connman/connman.inc
> > index 589ece8..93c9da0 100644
> > --- a/meta/recipes-connectivity/connman/connman.inc
> > +++ b/meta/recipes-connectivity/connman/connman.inc
> >  <at>  <at>  -47,7 +47,7  <at>  <at>  INITSCRIPT_NAME = "connman"
> >   INITSCRIPT_PARAMS = "start 05 5 2 3 . stop 22 0 1 6 ."
> >
> >   SYSTEMD_SERVICE_${PN} = "connman.service"
> > -SYSTEMD_WIRED_SETUP = "ExecStartPre=-/usr/lib/connman/wired-setup"
> > +SYSTEMD_WIRED_SETUP = "ExecStartPre=-${libdir}/connman/wired-setup"
> 
> I don't think this is right.  The initscript and setup command should be 
in the 
> 'libexec' location, which is /usr/lib/connman.  This way the initscript 
from any 
> duplicate multilibs installed won't cause a conflict.  And the binaries 
end up 
> in a known location.  (The libraries on the other hand should definitely 
be in 
> the libdir.)
> 


Okay, that makes sense. The only problem is that wired-setup is installed by 
connman-conf so libexec won't work.  (connman rrecomends connman-conf which 
installs wired.config and wired-setup for qemu machines only). And I'm not 
sure how to get around that.

Poky commit  e93b6376a0cff5321dd7fc13a88c8b06ae8b83c7 moved wired-setup from 
/etc/connman to /usr/lib/connman. 
I do think that /etc/connman/wired-setup was the better location (or perhaps 
connman-conf), given that's only a script sourced in /etc/init.d/connman if 
it exists. But I don't know the reasons why it was moved to 
/usr/lib/connman.

Any thoughts?

Patch

diff --git a/meta/recipes-connectivity/connman/connman.inc b/meta/recipes-connectivity/connman/connman.inc
index 589ece8..93c9da0 100644
--- a/meta/recipes-connectivity/connman/connman.inc
+++ b/meta/recipes-connectivity/connman/connman.inc
@@ -47,7 +47,7 @@  INITSCRIPT_NAME = "connman"
 INITSCRIPT_PARAMS = "start 05 5 2 3 . stop 22 0 1 6 ."
 
 SYSTEMD_SERVICE_${PN} = "connman.service"
-SYSTEMD_WIRED_SETUP = "ExecStartPre=-/usr/lib/connman/wired-setup"
+SYSTEMD_WIRED_SETUP = "ExecStartPre=-${libdir}/connman/wired-setup"
 
 # IMPORTANT: because xuser is shared with rootless X, please make sure the
 # USERADD_PARAM is in sync with the one in xserver-nodm-init.bb
@@ -73,6 +73,7 @@  do_install_append() {
 	if ${@base_contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
 		install -d ${D}${sysconfdir}/init.d
 		install -m 0755 ${WORKDIR}/connman ${D}${sysconfdir}/init.d/connman
+                sed -i s%@LIBDIR@%${libdir}% ${D}${sysconfdir}/init.d/connman
 	fi
 
 	install -d ${D}${bindir}
diff --git a/meta/recipes-connectivity/connman/connman/connman b/meta/recipes-connectivity/connman/connman/connman
index a111f60..67ba7c8 100644
--- a/meta/recipes-connectivity/connman/connman/connman
+++ b/meta/recipes-connectivity/connman/connman/connman
@@ -32,8 +32,8 @@  do_start() {
 		ethn=`ifconfig | grep eth | sed -e "s/\(eth[0-9]\)\(.*\)/\1/"`
 		EXTRA_PARAM="-I $ethn"
 	fi
-	if [ -f /usr/lib/connman/wired-setup ] ; then
-		. /usr/lib/connman/wired-setup
+	if [ -f @LIBDIR@/connman/wired-setup ] ; then
+		. @LIBDIR@/connman/wired-setup
 	fi
 	$DAEMON $EXTRA_PARAM
 }