[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