[OE-core] [PATCH 3/4] wpa-supplicant: use debian wpa contribution to improve ifup/ifdown
Jens Rehsack
rehsack at gmail.com
Wed Mar 16 09:42:47 UTC 2016
Instead of simplified, self-written start/stop hooks for wpa-supplicant on
interfaces coming up or going down, use the more advanced hooks provided
by the debian contribution.
Since the default behavior in the debian start/stop hooks is log into syslog,
which is more reasonable for embedded devices either (usually no user interface
available), follow this behavior and enable CONFIG_DEBUG_SYSLOG.
Add a package for ifplugd action hooks, if desired and install man-pages
as well for a reasonable wpa-supplicant-doc.
Signed-off-by: Jens Rehsack <sno at netbsd.org>
---
.../wpa-supplicant/wpa-supplicant/defconfig | 4 +-
.../wpa-supplicant/wpa-supplicant.sh | 85 ----------------------
.../wpa-supplicant/wpa-supplicant_2.5.bb | 47 ++++++++----
3 files changed, 36 insertions(+), 100 deletions(-)
delete mode 100644 meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/wpa-supplicant.sh
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/defconfig b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/defconfig
index f04e398..217cf61 100644
--- a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/defconfig
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/defconfig
@@ -418,9 +418,9 @@ CONFIG_CTRL_IFACE_DBUS_NEW=y
#CONFIG_DEBUG_FILE=y
# Send debug messages to syslog instead of stdout
-#CONFIG_DEBUG_SYSLOG=y
+CONFIG_DEBUG_SYSLOG=y
# Set syslog facility for debug messages
-#CONFIG_DEBUG_SYSLOG_FACILITY=LOG_DAEMON
+CONFIG_DEBUG_SYSLOG_FACILITY=LOG_DAEMON
# Add support for sending all debug messages (regardless of debug verbosity)
# to the Linux kernel tracing facility. This helps debug the entire stack by
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/wpa-supplicant.sh b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/wpa-supplicant.sh
deleted file mode 100644
index 5c9e5d3..0000000
--- a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/wpa-supplicant.sh
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/bin/sh
-
-
-WPA_SUP_BIN="/usr/sbin/wpa_supplicant"
-WPA_SUP_PNAME="wpa_supplicant"
-WPA_SUP_PIDFILE="/var/run/wpa_supplicant.$IFACE.pid"
-WPA_SUP_OPTIONS="-B -P $WPA_SUP_PIDFILE -i $IFACE"
-
-VERBOSITY=0
-
-
-if [ -s "$IF_WPA_CONF" ]; then
- WPA_SUP_CONF="-c $IF_WPA_CONF"
-else
- exit 0
-fi
-
-if [ ! -x "$WPA_SUP_BIN" ]; then
-
- if [ "$VERBOSITY" = "1" ]; then
- echo "$WPA_SUP_PNAME: binaries not executable or missing from $WPA_SUP_BIN"
- fi
-
- exit 1
-fi
-
-if [ "$MODE" = "start" ] ; then
- # driver type of interface, defaults to wext when undefined
- if [ -s "/etc/wpa_supplicant/driver.$IFACE" ]; then
- IF_WPA_DRIVER=$(cat "/etc/wpa_supplicant/driver.$IFACE")
- elif [ -z "$IF_WPA_DRIVER" ]; then
-
- if [ "$VERBOSITY" = "1" ]; then
- echo "$WPA_SUP_PNAME: wpa-driver not provided, using \"wext\""
- fi
-
- IF_WPA_DRIVER="wext"
- fi
-
- # if we have passed the criteria, start wpa_supplicant
- if [ -n "$WPA_SUP_CONF" ]; then
-
- if [ "$VERBOSITY" = "1" ]; then
- echo "$WPA_SUP_PNAME: $WPA_SUP_BIN $WPA_SUP_OPTIONS $WPA_SUP_CONF -D $IF_WPA_DRIVER"
- fi
-
- start-stop-daemon --start --quiet \
- --name $WPA_SUP_PNAME --startas $WPA_SUP_BIN --pidfile $WPA_SUP_PIDFILE \
- -- $WPA_SUP_OPTIONS $WPA_SUP_CONF -D $IF_WPA_DRIVER
- fi
-
- # if the interface socket exists, then wpa_supplicant was invoked successfully
- if [ -S "$WPA_COMMON_CTRL_IFACE/$IFACE" ]; then
-
- if [ "$VERBOSITY" = "1" ]; then
- echo "$WPA_SUP_PNAME: ctrl_interface socket located at $WPA_COMMON_CTRL_IFACE/$IFACE"
- fi
-
- exit 0
-
- fi
-
-elif [ "$MODE" = "stop" ]; then
-
- if [ -f "$WPA_SUP_PIDFILE" ]; then
-
- if [ "$VERBOSITY" = "1" ]; then
- echo "$WPA_SUP_PNAME: terminating $WPA_SUP_PNAME daemon"
- fi
-
- start-stop-daemon --stop --quiet \
- --name $WPA_SUP_PNAME --pidfile $WPA_SUP_PIDFILE
-
- if [ -S "$WPA_COMMON_CTRL_IFACE/$IFACE" ]; then
- rm -f $WPA_COMMON_CTRL_IFACE/$IFACE
- fi
-
- if [ -f "$WPA_SUP_PIDFILE" ]; then
- rm -f $WPA_SUP_PIDFILE
- fi
- fi
-
-fi
-
-exit 0
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.5.bb b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.5.bb
index 935c8af..fa40c57 100644
--- a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.5.bb
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.5.bb
@@ -19,8 +19,8 @@ SYSTEMD_SERVICE_${PN} = "wpa_supplicant.service wpa_supplicant-nl80211 at .service
SYSTEMD_AUTO_ENABLE = "disable"
SRC_URI = "http://w1.fi/releases/wpa_supplicant-${PV}.tar.gz \
+ http://snapshot.debian.org/archive/debian/20151115T033945Z/pool/main/w/wpa/wpa_2.3-2.3.debian.tar.xz;name=wpa-debian \
file://defconfig \
- file://wpa-supplicant.sh \
file://wpa_supplicant.conf \
file://wpa_supplicant.conf-sane \
file://99_wpa_supplicant \
@@ -28,11 +28,15 @@ SRC_URI = "http://w1.fi/releases/wpa_supplicant-${PV}.tar.gz \
SRC_URI[md5sum] = "96ff75c3a514f1f324560a2376f13110"
SRC_URI[sha256sum] = "cce55bae483b364eae55c35ba567c279be442ed8bab5b80a3c7fb0d057b9b316"
+SRC_URI[wpa-debian.md5sum] = "38dedea3056ee103fb70c544ae1b99b8"
+SRC_URI[wpa-debian.sha256sum] = "aebdeda11461e93d7f37df5f45643a3fc3c203853c884d983ed4f558604f0b2f"
+
S = "${WORKDIR}/wpa_supplicant-${PV}"
-PACKAGES_prepend = "wpa-supplicant-passphrase wpa-supplicant-cli "
+PACKAGES_prepend = "wpa-supplicant-passphrase wpa-supplicant-cli wpa-supplicant-ifplugd "
FILES_wpa-supplicant-passphrase = "${bindir}/wpa_passphrase"
FILES_wpa-supplicant-cli = "${sbindir}/wpa_cli"
+FILES_wpa-supplicant-ifplugd = "${sysconfdir}/ifplugd/action.d/ ${sysconfdir}/wpa_supplicant/action_wpa.sh"
FILES_${PN} += "${datadir}/dbus-1/system-services/*"
CONFFILES_${PN} += "${sysconfdir}/wpa_supplicant.conf"
@@ -62,12 +66,16 @@ do_compile () {
unset CFLAGS CPPFLAGS CXXFLAGS
sed -e "s:CFLAGS\ =.*:& \$(EXTRA_CFLAGS):g" -i ${S}/src/lib.rules
oe_runmake -C wpa_supplicant
+
+ cd "${WORKDIR}/debian"
+ sed -i -e 's,"/sbin/wpa,"/usr/sbin/wpa,g' ifupdown/functions.sh
}
do_install () {
install -d ${D}${sbindir}
- install -m 755 wpa_supplicant/wpa_supplicant ${D}${sbindir}
- install -m 755 wpa_supplicant/wpa_cli ${D}${sbindir}
+ install -m 755 wpa_supplicant/wpa_supplicant ${D}${sbindir}
+ install -m 755 wpa_supplicant/wpa_cli ${D}${sbindir}
+ install -m 755 ${WORKDIR}/debian/ifupdown/wpa_action ${D}${sbindir}
install -d ${D}${bindir}
install -m 755 wpa_supplicant/wpa_passphrase ${D}${bindir}
@@ -78,21 +86,34 @@ do_install () {
install -d ${D}${sysconfdir}
install -m 600 ${WORKDIR}/wpa_supplicant.conf-sane ${D}${sysconfdir}/wpa_supplicant.conf
- install -d ${D}${sysconfdir}/network/if-pre-up.d/
- install -d ${D}${sysconfdir}/network/if-post-down.d/
- install -d ${D}${sysconfdir}/network/if-down.d/
- install -m 755 ${WORKDIR}/wpa-supplicant.sh ${D}${sysconfdir}/network/if-pre-up.d/wpa-supplicant
- cd ${D}${sysconfdir}/network/ && \
- ln -sf ../if-pre-up.d/wpa-supplicant if-post-down.d/wpa-supplicant
+ install -d ${D}${sysconfdir}/wpa_supplicant/
+ install -m 755 ${WORKDIR}/debian/ifupdown/action_wpa.sh ${D}${sysconfdir}/wpa_supplicant/
+ install -m 644 ${WORKDIR}/debian/ifupdown/functions.sh ${D}${sysconfdir}/wpa_supplicant/
+ install -m 755 ${WORKDIR}/debian/ifupdown/wpasupplicant.sh ${D}${sysconfdir}/wpa_supplicant/ifupdown.sh
+
+ for nethook in if-up.d if-pre-up.d if-post-down.d if-down.d; do
+ install -d ${D}${sysconfdir}/network/${nethook}/
+ (cd ${D}${sysconfdir}/network/ && \
+ ln -sf ../../wpa_supplicant/ifupdown.sh ${nethook}/wpa-supplicant)
+ done
+
+ install -d ${D}${sysconfdir}/ifplugd/action.d/
+ (cd ${D}${sysconfdir}/ifplugd/action.d/ && ln -sf ../../wpa_supplicant/action_wpa.sh action_wpa)
+
+ install -d ${D}${mandir}/man5 ${D}${mandir}/man8
+ install -m 0644 wpa_supplicant/doc/docbook/wpa_supplicant.conf.5 ${D}${mandir}/man5/
+ install -m 0644 wpa_supplicant/doc/docbook/wpa_passphrase.8 wpa_supplicant/doc/docbook/wpa_supplicant.8 \
+ wpa_supplicant/doc/docbook/wpa_cli.8 ${WORKDIR}/debian/ifupdown/wpa_action.8 \
+ ${D}${mandir}/man8/
install -d ${D}/${sysconfdir}/dbus-1/system.d
- install -m 644 ${S}/wpa_supplicant/dbus/dbus-wpa_supplicant.conf ${D}/${sysconfdir}/dbus-1/system.d
+ install -m 644 wpa_supplicant/dbus/dbus-wpa_supplicant.conf ${D}/${sysconfdir}/dbus-1/system.d
install -d ${D}/${datadir}/dbus-1/system-services
- install -m 644 ${S}/wpa_supplicant/dbus/*.service ${D}/${datadir}/dbus-1/system-services
+ install -m 644 wpa_supplicant/dbus/*.service ${D}/${datadir}/dbus-1/system-services
if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
install -d ${D}/${systemd_unitdir}/system
- install -m 644 ${S}/wpa_supplicant/systemd/*.service ${D}/${systemd_unitdir}/system
+ install -m 644 wpa_supplicant/systemd/*.service ${D}/${systemd_unitdir}/system
fi
install -d ${D}/etc/default/volatiles
--
2.6.3
The counterpart (cf88eed - dnsmasq: steal resolvconf support from Ubuntu) is in master-next of meta-oe
and will be hopefully pushed to master (heard nothing contrary ...)
Cheers
--
Jens Rehsack - rehsack at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 842 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20160316/8fd80572/attachment-0002.sig>
More information about the Openembedded-core
mailing list