[oe] [meta-networking][PATCH] networkmanager: Use ALTERNATIVES for resolv-conf handling.
Kang Kai
Kai.Kang at windriver.com
Tue Aug 20 06:48:36 UTC 2019
On 2019/7/20 上午3:58, drew.moseley at northern.tech wrote:
> From: Drew Moseley <drew.moseley at northern.tech>
>
> This brings the networkmanager in sync with how systemd-resolved and connman
> work. Additionally this allows it to function with a read-only rootFS.
>
> Signed-off-by: Drew Moseley <drew.moseley at northern.tech>
> ---
> .../networkmanager/networkmanager_1.18.0.bb | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.18.0.bb b/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.18.0.bb
> index 21fbea9c1..037566783 100644
> --- a/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.18.0.bb
> +++ b/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.18.0.bb
> @@ -20,7 +20,7 @@ DEPENDS = " \
> curl \
> "
>
> -inherit gnomebase gettext systemd bash-completion vala gobject-introspection gtk-doc
> +inherit gnomebase gettext systemd bash-completion vala gobject-introspection gtk-doc update-alternatives
>
> SRC_URI = " \
> ${GNOME_MIRROR}/NetworkManager/${@gnome_verdir("${PV}")}/NetworkManager-${PV}.tar.xz \
> @@ -141,6 +141,16 @@ FILES_${PN}-nmtui-doc = " \
>
> SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'NetworkManager.service NetworkManager-dispatcher.service', '', d)}"
>
> +ALTERNATIVE_PRIORITY = "100"
> +ALTERNATIVE_${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','resolv-conf','',d)}"
> +ALTERNATIVE_TARGET[resolv-conf] = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${sysconfdir}/resolv-conf.NetworkManager','',d)}"
> +ALTERNATIVE_LINK_NAME[resolv-conf] = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${sysconfdir}/resolv.conf','',d)}"
> +
> do_install_append() {
> rm -rf ${D}/run ${D}${localstatedir}/run
> +
> + # For read-only filesystem, do not create links during bootup
> + if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
> + ln -sf ../run/NetworkManager/resolv.conf ${D}${sysconfdir}/resolv-conf.NetworkManager
> + fi
> }
Hi Drew,
After apply your patch, I meet a error with systemd init manager that
/etc/resolv.conf is a mangling link file:
root at qemux86-64:~# ls -l /etc/resolv*
lrwxrwxrwx 1 root root 33 Aug 20 03:22
/etc/resolv-conf.NetworkManager -> ../run/NetworkManager/resolv.conf
lrwxrwxrwx 1 root root 34 Aug 15 06:14
/etc/resolv-conf.systemd -> ../run/systemd/resolve/resolv.conf
lrwxrwxrwx 1 root root 31 Aug 20 03:26
/etc/resolv.conf -> /etc/resolv-conf.NetworkManager
root at qemux86-64:~# cat /etc/resolv.conf
cat: can't open '/etc/resolv.conf': No such file or directory
There is no /run/NetworkManager/resolv.conf actually. What's the
behavior in your environment?
--
Kai Kang
More information about the Openembedded-devel
mailing list