diff options
Diffstat (limited to 'external/meta-updater/recipes-connectivity/networkd-dhcp-conf')
3 files changed, 46 insertions, 5 deletions
diff --git a/external/meta-updater/recipes-connectivity/networkd-dhcp-conf/files/clean-connman-symlink.service b/external/meta-updater/recipes-connectivity/networkd-dhcp-conf/files/clean-connman-symlink.service new file mode 100644 index 00000000..8af82637 --- /dev/null +++ b/external/meta-updater/recipes-connectivity/networkd-dhcp-conf/files/clean-connman-symlink.service @@ -0,0 +1,11 @@ +[Unit] +Description=Clean up bogus symlinked resolv.conf +Before=network-pre.target +Wants=network-pre.target + +[Service] +Type=oneshot +ExecStart=/usr/sbin/resolvconf-clean + +[Install] +WantedBy=multi-user.target diff --git a/external/meta-updater/recipes-connectivity/networkd-dhcp-conf/files/resolvconf-clean b/external/meta-updater/recipes-connectivity/networkd-dhcp-conf/files/resolvconf-clean new file mode 100644 index 00000000..89c7e905 --- /dev/null +++ b/external/meta-updater/recipes-connectivity/networkd-dhcp-conf/files/resolvconf-clean @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +if [ ! -L /etc/resolv.conf ]; then + exit 0 +fi + +# 'readlink -f' will fail if the symlink doesn't resolve to an existing path +if readlink /etc/resolv.conf | grep -q connman; then + echo "Replacing resolv.conf symlink: $(readlink /etc/resolv.conf) to /etc/resolv-conf.systemd" + rm /etc/resolv.conf + ln -s /etc/resolv-conf.systemd /etc/resolv.conf +fi diff --git a/external/meta-updater/recipes-connectivity/networkd-dhcp-conf/networkd-dhcp-conf.bb b/external/meta-updater/recipes-connectivity/networkd-dhcp-conf/networkd-dhcp-conf.bb index 0700ac6e..40a39582 100644 --- a/external/meta-updater/recipes-connectivity/networkd-dhcp-conf/networkd-dhcp-conf.bb +++ b/external/meta-updater/recipes-connectivity/networkd-dhcp-conf/networkd-dhcp-conf.bb @@ -4,25 +4,41 @@ interfaces through systemd-networkd" LICENSE = "MPL-2.0" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad" -inherit allarch systemd +inherit systemd RPROVIDES_${PN} = "virtual/network-configuration" -SRC_URI_append = " file://20-wired-dhcp.network" +SRC_URI = " \ + file://20-wired-dhcp.network \ + file://resolvconf-clean \ + file://clean-connman-symlink.service \ + " PR = "r1" -RDEPENDS_${PN} = "systemd" +REQUIRED_DISTRO_FEATURES_${PN} = "systemd" +RCONFLICTS_${PN} = "connman" S = "${WORKDIR}" PACKAGE_ARCH = "${MACHINE_ARCH}" -FILES_${PN} = "${systemd_unitdir}/network/*" +FILES_${PN} = " \ + ${systemd_unitdir}/network/* \ + ${sbindir}/resolvconf-clean \ + ${systemd_unitdir}/system/clean-connman-symlink.service \ + " + +SYSTEMD_SERVICE_${PN} = "clean-connman-symlink.service" DEV_MATCH_DIRECTIVE ?= "Name=en*" do_install() { install -d ${D}/${systemd_unitdir}/network - install -m 0644 ${WORKDIR}/20-wired-dhcp.network ${D}/${systemd_unitdir}/network + install -m 0644 ${WORKDIR}/20-wired-dhcp.network ${D}${systemd_unitdir}/network sed -i -e 's|@MATCH_DIRECTIVE@|${DEV_MATCH_DIRECTIVE}|g' ${D}${systemd_unitdir}/network/20-wired-dhcp.network + + install -d ${D}${sbindir} + install -m 0755 ${WORKDIR}/resolvconf-clean ${D}${sbindir}/resolvconf-clean + install -d ${D}${systemd_unitdir}/system + install -m 0644 ${WORKDIR}/clean-connman-symlink.service ${D}${systemd_unitdir}/system/clean-connman-symlink.service } |