From: Roy Li <rongqing...@windriver.com> Create connman-evn.service, which will run a script to compute the networking device when nfs root is on, and pass the result to connman.service
Connmand.service add ExecStartPre into Connmand.service to release do_configure_append work, use the options which is passed by connman-evn.service Signed-off-by: Roy Li <rongqing...@windriver.com> --- meta/recipes-connectivity/connman/connman.inc | 17 +++++----- .../connman/connman/connman-env.service | 13 ++++++++ .../connman/connman/connmand-env | 26 +++++++++++++++ ...ardcode-and-add-EnvironmentFile-and-Wants.patch | 33 ++++++++++++++++++++ meta/recipes-connectivity/connman/connman_1.19.bb | 3 ++ 5 files changed, 85 insertions(+), 7 deletions(-) create mode 100644 meta/recipes-connectivity/connman/connman/connman-env.service create mode 100644 meta/recipes-connectivity/connman/connman/connmand-env create mode 100644 meta/recipes-connectivity/connman/connman/replace-hardcode-and-add-EnvironmentFile-and-Wants.patch diff --git a/meta/recipes-connectivity/connman/connman.inc b/meta/recipes-connectivity/connman/connman.inc index 12f3edd..648b9f6 100644 --- a/meta/recipes-connectivity/connman/connman.inc +++ b/meta/recipes-connectivity/connman/connman.inc @@ -64,15 +64,9 @@ python __anonymous () { SYSTEMD_SERVICE_${PN} = "connman.service" SYSTEMD_SERVICE_${PN}-vpn = "connman-vpn.service" -SYSTEMD_WIRED_SETUP = "ExecStartPre=-${libdir}/connman/wired-setup" inherit autotools gtk-doc pkgconfig systemd update-rc.d -do_configure_append () { - sed -i "s#ExecStart=#${SYSTEMD_WIRED_SETUP}\nExecStart=#" ${S}/src/connman.service - -} - # This allows *everyone* to access ConnMan over DBus, without any access # control. Really the at_console flag should work, which would mean that # both this and the xuser patch can be dropped. @@ -88,6 +82,15 @@ do_install_append() { sed -i s%@LIBDIR@%${libdir}% ${D}${sysconfdir}/init.d/connman fi + if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then + install -m 0755 ${WORKDIR}/connmand-env ${D}${sbindir}/ + install -m 0644 ${WORKDIR}/connman-env.service ${D}/${systemd_unitdir}/system/ + sed -i -e 's,@SBINDIR@,${sbindir},g' \ + -e 's,@LIBDIR@,${libdir},g' \ + -e 's,@LOCALSTATEDIR@,${localstatedir},g' \ + ${D}${systemd_unitdir}/system/*.service + fi + install -d ${D}${bindir} install -m 0755 ${S}/tools/*-test ${D}${bindir} if [ -e ${S}/tools/wispr ]; then @@ -163,7 +166,7 @@ FILES_${PN} = "${bindir}/* ${sbindir}/* ${libexecdir}/* ${libdir}/lib*.so.* \ ${libdir}/connman/plugins \ ${sysconfdir} ${sharedstatedir} ${localstatedir} \ ${base_bindir}/* ${base_sbindir}/* ${base_libdir}/*.so* ${datadir}/${PN} \ - ${datadir}/dbus-1/system-services/*" + ${datadir}/dbus-1/system-services/* ${systemd_unitdir}/system/connman-env.service" FILES_${PN}-dbg += "${libdir}/connman/*/.debug" diff --git a/meta/recipes-connectivity/connman/connman/connman-env.service b/meta/recipes-connectivity/connman/connman/connman-env.service new file mode 100644 index 0000000..c4dc278 --- /dev/null +++ b/meta/recipes-connectivity/connman/connman/connman-env.service @@ -0,0 +1,13 @@ +[Unit] +Description=Generate options for connection service +Before=connman.service +ConditionKernelCommandLine=root=/dev/nfs +After=syslog.target + +[Service] +Type=oneshot +ExecStart=@SBINDIR@/connmand-env +StandardOutput=null + +[Install] +WantedBy=connman.service diff --git a/meta/recipes-connectivity/connman/connman/connmand-env b/meta/recipes-connectivity/connman/connman/connmand-env new file mode 100644 index 0000000..9c04d61 --- /dev/null +++ b/meta/recipes-connectivity/connman/connman/connmand-env @@ -0,0 +1,26 @@ +#!/bin/sh + +EXTRA_PARAM="" + +NET_DEVS=`cat /proc/net/dev | sed -ne 's/^\([a-zA-Z0-9 ]*\):.*$/\1/p'` +NET_ADDR=`cat /proc/cmdline | sed -ne 's/^.*ip=\([^ :]*\).*$/\1/p'` + +if [ ! -z "$NET_ADDR" ]; then + if [ "$NET_ADDR" = dhcp ]; then + ethn=`ifconfig | grep "^eth" | sed -e "s/\(eth[0-9]\)\(.*\)/\1/"` + if [ ! -z "$ethn" ]; then + EXTRA_PARAM="-I $ethn" + fi + else + for i in $NET_DEVS; do + ADDR=`ifconfig $i | sed 's/addr://g' | sed -ne 's/^.*inet \([0-9.]*\) .*$/\1/p'` + if [ "$NET_ADDR" = "$ADDR" ]; then + EXTRA_PARAM="-I $i" + break + fi + done + fi +fi + +[ ! -d /run/connmand ] && mkdir -p /run/connmand +echo "CONNMAND_OPTS=$EXTRA_PARAM">/run/connmand/connmand.env diff --git a/meta/recipes-connectivity/connman/connman/replace-hardcode-and-add-EnvironmentFile-and-Wants.patch b/meta/recipes-connectivity/connman/connman/replace-hardcode-and-add-EnvironmentFile-and-Wants.patch new file mode 100644 index 0000000..1394335 --- /dev/null +++ b/meta/recipes-connectivity/connman/connman/replace-hardcode-and-add-EnvironmentFile-and-Wants.patch @@ -0,0 +1,33 @@ +replace hardcode, and add EnvironmentFile and Wants + +Upstream-Status: Inappropriate [distribution] + +Signed-off-by: Roy Li <rongqing...@windriver.com> +--- + src/connman.service.in | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/connman.service.in b/src/connman.service.in +index 2e9e4d5..9984519 100644 +--- a/src/connman.service.in ++++ b/src/connman.service.in +@@ -1,12 +1,15 @@ + [Unit] + Description=Connection service + After=syslog.target ++Wants=connman-env.service + + [Service] + Type=dbus + BusName=net.connman + Restart=on-failure +-ExecStart=@prefix@/sbin/connmand -n ++EnvironmentFile=-@LOCALSTATEDIR@/run/connmand/connmand.env ++ExecStartPre=-@LIBDIR@/connman/wired-setup ++ExecStart=@SBINDIR@/connmand -n $CONNMAND_OPTS + StandardOutput=null + + [Install] +-- +1.7.10.4 + diff --git a/meta/recipes-connectivity/connman/connman_1.19.bb b/meta/recipes-connectivity/connman/connman_1.19.bb index c63dfe4..94bd8cc 100644 --- a/meta/recipes-connectivity/connman/connman_1.19.bb +++ b/meta/recipes-connectivity/connman/connman_1.19.bb @@ -4,6 +4,9 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \ file://0001-plugin.h-Change-visibility-to-default-for-debug-symb.patch \ file://add_xuser_dbus_permission.patch \ file://connman \ + file://connmand-env \ + file://replace-hardcode-and-add-EnvironmentFile-and-Wants.patch \ + file://connman-env.service \ " SRC_URI[md5sum] = "47cce1d17a693dc307e6796c81991bd0" -- 1.7.10.4 _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core