summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--recipes-connectivity/networkd-dhcp-conf/files/clean-connman-symlink.service11
-rw-r--r--recipes-connectivity/networkd-dhcp-conf/files/resolvconf-clean14
-rw-r--r--recipes-connectivity/networkd-dhcp-conf/networkd-dhcp-conf.bb22
3 files changed, 44 insertions, 3 deletions
diff --git a/recipes-connectivity/networkd-dhcp-conf/files/clean-connman-symlink.service b/recipes-connectivity/networkd-dhcp-conf/files/clean-connman-symlink.service
new file mode 100644
index 0000000..8af8263
--- /dev/null
+++ b/recipes-connectivity/networkd-dhcp-conf/files/clean-connman-symlink.service
@@ -0,0 +1,11 @@
1[Unit]
2Description=Clean up bogus symlinked resolv.conf
3Before=network-pre.target
4Wants=network-pre.target
5
6[Service]
7Type=oneshot
8ExecStart=/usr/sbin/resolvconf-clean
9
10[Install]
11WantedBy=multi-user.target
diff --git a/recipes-connectivity/networkd-dhcp-conf/files/resolvconf-clean b/recipes-connectivity/networkd-dhcp-conf/files/resolvconf-clean
new file mode 100644
index 0000000..89c7e90
--- /dev/null
+++ b/recipes-connectivity/networkd-dhcp-conf/files/resolvconf-clean
@@ -0,0 +1,14 @@
1#!/bin/sh
2
3set -e
4
5if [ ! -L /etc/resolv.conf ]; then
6 exit 0
7fi
8
9# 'readlink -f' will fail if the symlink doesn't resolve to an existing path
10if readlink /etc/resolv.conf | grep -q connman; then
11 echo "Replacing resolv.conf symlink: $(readlink /etc/resolv.conf) to /etc/resolv-conf.systemd"
12 rm /etc/resolv.conf
13 ln -s /etc/resolv-conf.systemd /etc/resolv.conf
14fi
diff --git a/recipes-connectivity/networkd-dhcp-conf/networkd-dhcp-conf.bb b/recipes-connectivity/networkd-dhcp-conf/networkd-dhcp-conf.bb
index 0700ac6..b6076cd 100644
--- a/recipes-connectivity/networkd-dhcp-conf/networkd-dhcp-conf.bb
+++ b/recipes-connectivity/networkd-dhcp-conf/networkd-dhcp-conf.bb
@@ -8,21 +8,37 @@ inherit allarch systemd
8 8
9RPROVIDES_${PN} = "virtual/network-configuration" 9RPROVIDES_${PN} = "virtual/network-configuration"
10 10
11SRC_URI_append = " file://20-wired-dhcp.network" 11SRC_URI = " \
12 file://20-wired-dhcp.network \
13 file://resolvconf-clean \
14 file://clean-connman-symlink.service \
15 "
12PR = "r1" 16PR = "r1"
13 17
14RDEPENDS_${PN} = "systemd" 18RDEPENDS_${PN} = "systemd"
19RCONFLICTS_${PN} = "connman"
15 20
16S = "${WORKDIR}" 21S = "${WORKDIR}"
17 22
18PACKAGE_ARCH = "${MACHINE_ARCH}" 23PACKAGE_ARCH = "${MACHINE_ARCH}"
19 24
20FILES_${PN} = "${systemd_unitdir}/network/*" 25FILES_${PN} = " \
26 ${systemd_unitdir}/network/* \
27 ${sbindir}/resolvconf-clean \
28 ${systemd_unitdir}/system/clean-connman-symlink.service \
29 "
30
31SYSTEMD_SERVICE_${PN} = "clean-connman-symlink.service"
21 32
22DEV_MATCH_DIRECTIVE ?= "Name=en*" 33DEV_MATCH_DIRECTIVE ?= "Name=en*"
23 34
24do_install() { 35do_install() {
25 install -d ${D}/${systemd_unitdir}/network 36 install -d ${D}/${systemd_unitdir}/network
26 install -m 0644 ${WORKDIR}/20-wired-dhcp.network ${D}/${systemd_unitdir}/network 37 install -m 0644 ${WORKDIR}/20-wired-dhcp.network ${D}${systemd_unitdir}/network
27 sed -i -e 's|@MATCH_DIRECTIVE@|${DEV_MATCH_DIRECTIVE}|g' ${D}${systemd_unitdir}/network/20-wired-dhcp.network 38 sed -i -e 's|@MATCH_DIRECTIVE@|${DEV_MATCH_DIRECTIVE}|g' ${D}${systemd_unitdir}/network/20-wired-dhcp.network
39
40 install -d ${D}${sbindir}
41 install -m 0755 ${WORKDIR}/resolvconf-clean ${D}${sbindir}/resolvconf-clean
42 install -d ${D}${systemd_unitdir}/system
43 install -m 0644 ${WORKDIR}/clean-connman-symlink.service ${D}${systemd_unitdir}/system/clean-connman-symlink.service
28} 44}