From 9e4d107f6a70564f284c7acd7545738d0a194dd3 Mon Sep 17 00:00:00 2001 From: Adrian Freihofer Date: Mon, 29 Aug 2022 21:47:29 +0200 Subject: networkmanager: update 1.38.0 -> 1.40.0 NetworkManager: * Drop unused, internal systemd DHCPv4 client. This is long replaced by nettools' n-dhcp4 implementation. * The nmcli command now supports --offline argument with "add" and "modify" commands, allowing operation on keyfile-formatted connection profiles without the service running (e.g. during system provisioning). * The device state file /run/NetworkManager/devices/$ifindex now has new sections [dhcp4] and [dhcp6] containing the DHCP options for the current lease. * Add multipath TCP (MPTCP) support. NetworkManager can now configure IP addresses as MPTCP endpoints. This is configurable via the "connection.mptcp-flags" property. The default setting is such that MPTCP handling is automatically enabled if the kernel sysctl "/proc/sys/net/mptcp/enabled" indicates so. NetworkManager does not enable the MPTCP sysctl or adjust the limits (ip mptcp limits). The administrator or the distribution is supposed to configure the desired system settings. Note that strict reverse path filtering (rp_filter) breaks many MPTCP use cases. With MPTCP handling enabled, NetworkManager will relax a strict (1) rp_filter to loose (2). Otherwise rp_filter is untouched by NetworkManager. * NetworkManager expanded log messages for invalid DHCP options. * Fix the requirement of hardware address for DHCPv6, by dropping it. * Increase the PMK lifetime for Wi-Fi connections using WPA-EAP. * "nmcli networking off" now waits for deactivations to complete. * Improve the appearance of nm-settings-nmcli man page by preserving paragraphs. * Support enabling ipv4ll alongside DHCPv4 and static addressing. * Support configuring "ipv6.mtu". * Honor "nm.debug" kernel command line to enable debug logging of NetworkManager. * NetworkManager reads the kernel command line "/proc/cmdline" for several purposes, including "nm.debug" for enabling debugging and the "match.kernel-command-line" setting in the profile. NetworkManager now first looks now for "/run/NetworkManager/proc-cmdline", which allows to overwrite the command line. * Improve the reapply of non-bridge properties. * Honor adding a Bluetooth NAP connection with all available methods. * Improve carrier detection. * During the build, stop relying on intltool for i18n and use gettext only. * Undeprecate nm_remote_connection_get_secrets() in libnm. * NetworkManager now will restart DHCP if the MAC changes on a device. * Several internal improvements. Recipe: * Drop the last patch :-). -Difcfg_rh=false is now honored and the distro detection patch is no longer needed. * Fix: move /etc/resolv-conf.NetworkManager to daemon package * Fix: remove ppp rdepends from daemon. The ppp plugin rdepends on ppp. * ifupdown plugin requires now bash not sh. But the ifupdown is an optional plugin anyway. Signed-off-by: Adrian Freihofer Signed-off-by: Khem Raj --- .../0001-do-not-ask-host-for-ifcfg-defaults.patch | 24 -- .../networkmanager/networkmanager_1.38.0.bb | 301 -------------------- .../networkmanager/networkmanager_1.40.0.bb | 305 +++++++++++++++++++++ 3 files changed, 305 insertions(+), 325 deletions(-) delete mode 100644 meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-do-not-ask-host-for-ifcfg-defaults.patch delete mode 100644 meta-networking/recipes-connectivity/networkmanager/networkmanager_1.38.0.bb create mode 100644 meta-networking/recipes-connectivity/networkmanager/networkmanager_1.40.0.bb diff --git a/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-do-not-ask-host-for-ifcfg-defaults.patch b/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-do-not-ask-host-for-ifcfg-defaults.patch deleted file mode 100644 index 92b129320c..0000000000 --- a/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-do-not-ask-host-for-ifcfg-defaults.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 37559b659e22886d5f55837d4f167ba5fda73e85 Mon Sep 17 00:00:00 2001 -From: Adrian Freihofer -Date: Sun, 29 Aug 2021 15:50:35 +0200 -Subject: [PATCH] do-not-ask-host-for-ifcfg-defaults - ---- - meson.build | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/meson.build b/meson.build -index d0cec83..289aa1b 100644 ---- a/meson.build -+++ b/meson.build -@@ -304,8 +304,8 @@ else - distro = 'unknown' - endif - --enable_ifcfg_rh = get_option('ifcfg_rh') or (distro == 'redhat') --enable_ifupdown = get_option('ifupdown') or (distro == 'debian') -+enable_ifcfg_rh = get_option('ifcfg_rh') -+enable_ifupdown = get_option('ifupdown') - - config_plugins_default = get_option('config_plugins_default') - config_h.set_quoted('NM_CONFIG_DEFAULT_MAIN_PLUGINS', config_plugins_default) diff --git a/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.38.0.bb b/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.38.0.bb deleted file mode 100644 index ebd25a8f8a..0000000000 --- a/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.38.0.bb +++ /dev/null @@ -1,301 +0,0 @@ -SUMMARY = "NetworkManager" -HOMEPAGE = "https://wiki.gnome.org/Projects/NetworkManager" -SECTION = "net/misc" - -LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later" -LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c \ -" - -DEPENDS = " \ - coreutils-native \ - intltool-native \ - libxslt-native \ - libnl \ - udev \ - util-linux \ - libndp \ - libnewt \ - curl \ - dbus \ -" -DEPENDS:append:class-target = " bash-completion" - -GNOMEBASEBUILDCLASS = "meson" -inherit gnomebase gettext update-rc.d systemd gobject-introspection gtk-doc update-alternatives upstream-version-is-even - -SRC_URI = " \ - ${GNOME_MIRROR}/NetworkManager/${@gnome_verdir("${PV}")}/NetworkManager-${PV}.tar.xz \ - file://${BPN}.initd \ - file://enable-dhcpcd.conf \ - file://enable-iwd.conf \ - file://0001-do-not-ask-host-for-ifcfg-defaults.patch \ -" -SRC_URI[sha256sum] = "82a4cf07ddfeb0816787b67c0f5058ae6c50d6259c0b0541a24e35156062b2ef" - -S = "${WORKDIR}/NetworkManager-${PV}" - -# ['auto', 'symlink', 'file', 'netconfig', 'resolvconf'] -NETWORKMANAGER_DNS_RC_MANAGER_DEFAULT ??= "auto" - -# ['dhcpcanon', 'dhclient', 'dhcpcd', 'internal', 'nettools'] -NETWORKMANAGER_DHCP_DEFAULT ??= "internal" - -# The default gets detected based on whether /usr/sbin/nft or /usr/sbin/iptables is installed, with nftables preferred. -# ['', 'iptables', 'nftables'] -NETWORKMANAGER_FIREWALL_DEFAULT ??= "nftables" - -EXTRA_OEMESON = "\ - -Difcfg_rh=false \ - -Dtests=yes \ - -Dnmtui=true \ - -Dudev_dir=${nonarch_base_libdir}/udev \ - -Dlibpsl=false \ - -Dqt=false \ - -Dconfig_dns_rc_manager_default=${NETWORKMANAGER_DNS_RC_MANAGER_DEFAULT} \ - -Dconfig_dhcp_default=${NETWORKMANAGER_DHCP_DEFAULT} \ - -Ddhcpcanon=false \ - -Diptables=${sbindir}/iptables \ - -Dnft=${sbindir}/nft \ -" - -# stolen from https://github.com/void-linux/void-packages/blob/master/srcpkgs/NetworkManager/template -# avoids: -# | ../NetworkManager-1.16.0/libnm-core/nm-json.c:106:50: error: 'RTLD_DEEPBIND' undeclared (first use in this function); did you mean 'RTLD_DEFAULT'? -CFLAGS:append:libc-musl = " \ - -DRTLD_DEEPBIND=0 \ -" - -do_compile:prepend() { - export GI_TYPELIB_PATH="${B}}/src/libnm-client-impl${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}" -} - -PACKAGECONFIG ??= "readline nss ifupdown dnsmasq nmcli vala \ - ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', bb.utils.contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d), d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez5', '', d)} \ - ${@bb.utils.filter('DISTRO_FEATURES', 'wifi polkit', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux audit', '', d)} \ -" - -inherit ${@bb.utils.contains('PACKAGECONFIG', 'vala', 'vala', '', d)} - -PACKAGECONFIG[systemd] = "\ - -Dsystemdsystemunitdir=${systemd_unitdir}/system -Dsession_tracking=systemd,\ - -Dsystemdsystemunitdir=no -Dsystemd_journal=false -Dsession_tracking=no\ -" -PACKAGECONFIG[polkit] = "-Dpolkit=true,-Dpolkit=false,polkit" -PACKAGECONFIG[bluez5] = "-Dbluez5_dun=true,-Dbluez5_dun=false,bluez5" -# consolekit is not picked by shlibs, so add it to RDEPENDS too -PACKAGECONFIG[consolekit] = "-Dsession_tracking_consolekit=true,-Dsession_tracking_consolekit=false,consolekit,consolekit" -PACKAGECONFIG[modemmanager] = "-Dmodem_manager=true,-Dmodem_manager=false,modemmanager mobile-broadband-provider-info" -PACKAGECONFIG[ppp] = "-Dppp=true -Dpppd=${sbindir}/pppd,-Dppp=false,ppp,ppp" -PACKAGECONFIG[dnsmasq] = "-Ddnsmasq=${bindir}/dnsmasq" -PACKAGECONFIG[nss] = "-Dcrypto=nss,,nss" -PACKAGECONFIG[resolvconf] = "-Dresolvconf=${base_sbindir}/resolvconf,-Dresolvconf=no,,resolvconf" -PACKAGECONFIG[gnutls] = "-Dcrypto=gnutls,,gnutls" -PACKAGECONFIG[crypto-null] = "-Dcrypto=null" -PACKAGECONFIG[wifi] = "-Dwext=true -Dwifi=true,-Dwext=false -Dwifi=false" -PACKAGECONFIG[iwd] = "-Diwd=true,-Diwd=false" -PACKAGECONFIG[ifupdown] = "-Difupdown=true,-Difupdown=false" -PACKAGECONFIG[cloud-setup] = "-Dnm_cloud_setup=true,-Dnm_cloud_setup=false" -PACKAGECONFIG[nmcli] = "-Dnmcli=true,-Dnmcli=false" -PACKAGECONFIG[readline] = "-Dreadline=libreadline,,readline" -PACKAGECONFIG[libedit] = "-Dreadline=libedit,,libedit" -PACKAGECONFIG[ovs] = "-Dovs=true,-Dovs=false,jansson" -PACKAGECONFIG[audit] = "-Dlibaudit=yes,-Dlibaudit=no" -PACKAGECONFIG[selinux] = "-Dselinux=true,-Dselinux=false,libselinux" -PACKAGECONFIG[vala] = "-Dvapi=true,-Dvapi=false" -PACKAGECONFIG[dhcpcd] = "-Ddhcpcd=yes,-Ddhcpcd=no,,dhcpcd" -PACKAGECONFIG[dhclient] = "-Ddhclient=yes,-Ddhclient=no,,dhcp" -PACKAGECONFIG[concheck] = "-Dconcheck=true,-Dconcheck=false" - - -PACKAGES =+ " \ - libnm \ - ${PN}-adsl \ - ${PN}-bluetooth \ - ${PN}-cloud-setup \ - ${PN}-nmcli \ - ${PN}-nmcli-bash-completion \ - ${PN}-nmtui \ - ${PN}-wifi \ - ${PN}-wwan \ - ${PN}-ovs \ - ${PN}-ppp \ - ${PN}-daemon \ -" - -SYSTEMD_PACKAGES = "${PN}-daemon ${PN}-cloud-setup" -INITSCRIPT_PACKAGES = "${PN}-daemon" - -NETWORKMANAGER_PLUGINDIR = "${libdir}/NetworkManager/${PV}" -NETWORKMANAGER_DISPATCHERDIR = "${nonarch_libdir}/NetworkManager/dispatcher.d" - - -SUMMARY:libnm = "Libraries for adding NetworkManager support to applications" -FILES:libnm = "\ - ${libdir}/libnm.so.* \ - ${libdir}/girepository-1.0/NM-1.0.typelib \ -" - -SUMMARY:${PN}-adsl = "ADSL device plugin for NetworkManager" -FILES:${PN}-adsl = "${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-adsl.so" -RDEPENDS:${PN}-adsl += "${PN}-daemon" - -SUMMARY:${PN}-bluetooth = "Bluetooth device plugin for NetworkManager" -FILES:${PN}-bluetooth = "${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-bluetooth.so" -RDEPENDS:${PN}-bluetooth += "${PN}-daemon ${@bb.utils.contains('PACKAGECONFIG', 'bluez5', '${PN}-wwan bluez5', '', d)}" - -SUMMARY:${PN}-cloud-setup = "Automatically configure NetworkManager in cloud" -FILES:${PN}-cloud-setup = " \ - ${libexecdir}/nm-cloud-setup \ - ${systemd_system_unitdir}/nm-cloud-setup.service \ - ${systemd_system_unitdir}/nm-cloud-setup.timer \ - ${libdir}/NetworkManager/dispatcher.d/90-nm-cloud-setup.sh \ - ${libdir}/NetworkManager/dispatcher.d/no-wait.d/90-nm-cloud-setup.sh \ -" -RDEPENDS:${PN}-cloud-setup += "${PN}-daemon" -ALLOW_EMPTY:${PN}-cloud-setup = "1" -SYSTEMD_SERVICE:${PN}-cloud-setup = "${@bb.utils.contains('PACKAGECONFIG', 'cloud-setup', 'nm-cloud-setup.service nm-cloud-setup.timer', '', d)}" - -SUMMARY:${PN}-nmcli = "NetworkManager command line client" -FILES:${PN}-nmcli = " \ - ${bindir}/nmcli \ -" -RDEPENDS:${PN}-nmcli += "${PN}-daemon" - -SUMMARY:${PN}-nmcli-bash-completion = "NetworkManager command line client bash completion" -FILES:${PN}-nmcli-bash-completion = "${datadir}/bash-completion/completions/nmcli" -RDEPENDS:${PN}-nmcli-bash-completion = "bash-completion" - -SUMMARY:${PN}-nmtui = "NetworkManager curses-based UI" -FILES:${PN}-nmtui = " \ - ${bindir}/nmtui \ - ${bindir}/nmtui-edit \ - ${bindir}/nmtui-connect \ - ${bindir}/nmtui-hostname \ -" -RDEPENDS:${PN}-nmtui += "${PN}-daemon" - -SUMMARY:${PN}-wifi = "Wifi plugin for NetworkManager" -FILES:${PN}-wifi = "\ - ${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-wifi.so \ - ${libdir}/NetworkManager/conf.d/enable-iwd.conf \ -" -def get_wifi_deps(d): - packageconfig = (d.getVar('PACKAGECONFIG') or "").split() - if 'wifi' in packageconfig: - if 'iwd' in packageconfig: - return 'iwd' - else: - return 'wpa-supplicant' - else: - return '' -RDEPENDS:${PN}-wifi += "${PN}-daemon ${@get_wifi_deps(d)}" - -SUMMARY:${PN}-wwan = "Mobile broadband device plugin for NetworkManager" -FILES:${PN}-wwan = "\ - ${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-wwan.so \ - ${NETWORKMANAGER_PLUGINDIR}/libnm-wwan.so \ -" -RDEPENDS:${PN}-wwan += "${PN}-daemon ${@bb.utils.contains('PACKAGECONFIG','modemmanager','modemmanager','',d)}" - -SUMMARY:${PN}-ovs = "Open vSwitch device plugin for NetworkManager" -FILES:${PN}-ovs = "\ - ${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-ovs.so \ - ${systemd_system_unitdir}/NetworkManager.service.d/NetworkManager-ovs.conf \ -" -RDEPENDS:${PN}-ovs += "${PN}-daemon" - -SUMMARY:${PN}-ppp = "PPP plugin for NetworkManager" -FILES:${PN}-ppp = "\ - ${NETWORKMANAGER_PLUGINDIR}/libnm-ppp-plugin.so \ - ${libdir}/pppd/*/nm-pppd-plugin.so \ -" -RDEPENDS:${PN}-ppp += "${PN}-daemon ${@bb.utils.contains('PACKAGECONFIG','ppp','ppp','',d)}" - -FILES:${PN}-dev += " \ - ${libdir}/pppd/*/*.la \ - ${libdir}/NetworkManager/*.la \ - ${NETWORKMANAGER_PLUGINDIR}/*.la \ - ${datadir}/dbus-1/interfaces/*.xml \ -" - -SUMMARY:${PN}-daemon += "The NetworkManager daemon" -FILES:${PN}-daemon += " \ - ${bindir}/nm-online \ - ${datadir}/dbus-1 \ - ${datadir}/polkit-1 \ - ${libdir}/NetworkManager \ - ${libexecdir} \ - ${localstatedir}/lib/NetworkManager \ - ${NETWORKMANAGER_DISPATCHERDIR} \ - ${nonarch_base_libdir}/udev/* \ - ${nonarch_libdir}/firewalld \ - ${nonarch_libdir}/NetworkManager/conf.d \ - ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-down.d \ - ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-up.d \ - ${nonarch_libdir}/NetworkManager/dispatcher.d/no-wait.d \ - ${nonarch_libdir}/NetworkManager/system-connections \ - ${nonarch_libdir}/NetworkManager/VPN \ - ${sbindir}/NetworkManager \ - ${sysconfdir}/init.d/network-manager \ - ${sysconfdir}/NetworkManager \ - ${systemd_system_unitdir} \ -" -RRECOMMENDS:${PN}-daemon += "\ - ${NETWORKMANAGER_FIREWALL_DEFAULT} \ - ${@bb.utils.filter('PACKAGECONFIG', 'dnsmasq', d)} \ -" -INITSCRIPT_NAME:${PN}-daemon = "network-manager" -SYSTEMD_SERVICE:${PN}-daemon = "\ - NetworkManager.service \ - NetworkManager-dispatcher.service \ -" -RCONFLICTS:${PN}-daemon += "connman" -ALTERNATIVE_PRIORITY = "100" -ALTERNATIVE:${PN}-daemon = "${@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)}" - - -# The networkmanager package is an empty meta package which weakly depends on all the compiled features. -# Install this package to get all plugins and related dependencies installed. Alternatively just install -# plugins and related dependencies e.g. by installing networkmanager-wifi or networkmanager-wwan -# packages to the firmware. -ALLOW_EMPTY:${PN} = "1" -RRECOMMENDS:${PN} += "\ - ${@bb.utils.contains('PACKAGECONFIG','adsl','${PN}-adsl','',d)} \ - ${@bb.utils.contains('PACKAGECONFIG','bluez5','${PN}-bluetooth','',d)} \ - ${@bb.utils.contains('PACKAGECONFIG','cloud-setup','${PN}-cloud-setup','',d)} \ - ${@bb.utils.contains('PACKAGECONFIG','nmcli','${PN}-nmcli','',d)} \ - ${@bb.utils.contains('PACKAGECONFIG','nmtui','${PN}-nmtui','',d)} \ - ${@bb.utils.contains('PACKAGECONFIG','wifi','${PN}-wifi','',d)} \ - ${@bb.utils.contains('PACKAGECONFIG','wwan','${PN}-wwan','',d)} \ - ${@bb.utils.contains('PACKAGECONFIG','ovs','${PN}-ovs','',d)} \ - ${@bb.utils.contains('PACKAGECONFIG','ppp','${PN}-ppp','',d)} \ -" - -do_install:append() { - install -Dm 0755 ${WORKDIR}/${BPN}.initd ${D}${sysconfdir}/init.d/network-manager - - rm -rf ${D}/run ${D}${localstatedir}/run - - if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then - # For read-only filesystem, do not create links during bootup - ln -sf ../run/NetworkManager/resolv.conf ${D}${sysconfdir}/resolv-conf.NetworkManager - - # systemd v210 and newer do not need this rule file - rm ${D}/${nonarch_base_libdir}/udev/rules.d/84-nm-drivers.rules - fi - - # Enable iwd if compiled - if ${@bb.utils.contains('PACKAGECONFIG','iwd','true','false',d)}; then - install -Dm 0644 ${WORKDIR}/enable-iwd.conf ${D}${libdir}/NetworkManager/conf.d/enable-iwd.conf - fi - - # Enable dhcpd if compiled - if ${@bb.utils.contains('PACKAGECONFIG','dhcpcd','true','false',d)}; then - install -Dm 0644 ${WORKDIR}/enable-dhcpcd.conf ${D}${libdir}/NetworkManager/conf.d/enable-dhcpcd.conf - fi -} diff --git a/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.40.0.bb b/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.40.0.bb new file mode 100644 index 0000000000..10241e12a6 --- /dev/null +++ b/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.40.0.bb @@ -0,0 +1,305 @@ +SUMMARY = "NetworkManager" +HOMEPAGE = "https://wiki.gnome.org/Projects/NetworkManager" +SECTION = "net/misc" + +LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later" +LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c \ +" + +DEPENDS = " \ + coreutils-native \ + intltool-native \ + libxslt-native \ + libnl \ + udev \ + util-linux \ + libndp \ + libnewt \ + curl \ + dbus \ +" +DEPENDS:append:class-target = " bash-completion" + +GNOMEBASEBUILDCLASS = "meson" +inherit gnomebase gettext update-rc.d systemd gobject-introspection gtk-doc update-alternatives upstream-version-is-even + +SRC_URI = " \ + ${GNOME_MIRROR}/NetworkManager/${@gnome_verdir("${PV}")}/NetworkManager-${PV}.tar.xz \ + file://${BPN}.initd \ + file://enable-dhcpcd.conf \ + file://enable-iwd.conf \ +" +SRC_URI[sha256sum] = "aee7e057bc2cca5dab84e41f15f1da8b795eb290747b04cbeee822bad9e9fc03" + +S = "${WORKDIR}/NetworkManager-${PV}" + +# ['auto', 'symlink', 'file', 'netconfig', 'resolvconf'] +NETWORKMANAGER_DNS_RC_MANAGER_DEFAULT ??= "auto" + +# ['dhcpcanon', 'dhclient', 'dhcpcd', 'internal', 'nettools'] +NETWORKMANAGER_DHCP_DEFAULT ??= "internal" + +# The default gets detected based on whether /usr/sbin/nft or /usr/sbin/iptables is installed, with nftables preferred. +# ['', 'iptables', 'nftables'] +NETWORKMANAGER_FIREWALL_DEFAULT ??= "nftables" + +EXTRA_OEMESON = "\ + -Difcfg_rh=false \ + -Dtests=yes \ + -Dnmtui=true \ + -Dudev_dir=${nonarch_base_libdir}/udev \ + -Dlibpsl=false \ + -Dqt=false \ + -Dconfig_dns_rc_manager_default=${NETWORKMANAGER_DNS_RC_MANAGER_DEFAULT} \ + -Dconfig_dhcp_default=${NETWORKMANAGER_DHCP_DEFAULT} \ + -Ddhcpcanon=false \ + -Diptables=${sbindir}/iptables \ + -Dnft=${sbindir}/nft \ +" + +# stolen from https://github.com/void-linux/void-packages/blob/master/srcpkgs/NetworkManager/template +# avoids: +# | ../NetworkManager-1.16.0/libnm-core/nm-json.c:106:50: error: 'RTLD_DEEPBIND' undeclared (first use in this function); did you mean 'RTLD_DEFAULT'? +CFLAGS:append:libc-musl = " \ + -DRTLD_DEEPBIND=0 \ +" + +do_compile:prepend() { + export GI_TYPELIB_PATH="${B}}/src/libnm-client-impl${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}" +} + +PACKAGECONFIG ??= "readline nss ifupdown dnsmasq nmcli vala \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', bb.utils.contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d), d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez5', '', d)} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'wifi polkit', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux audit', '', d)} \ +" + +inherit ${@bb.utils.contains('PACKAGECONFIG', 'vala', 'vala', '', d)} + +PACKAGECONFIG[systemd] = "\ + -Dsystemdsystemunitdir=${systemd_unitdir}/system -Dsession_tracking=systemd,\ + -Dsystemdsystemunitdir=no -Dsystemd_journal=false -Dsession_tracking=no\ +" +PACKAGECONFIG[polkit] = "-Dpolkit=true,-Dpolkit=false,polkit" +PACKAGECONFIG[bluez5] = "-Dbluez5_dun=true,-Dbluez5_dun=false,bluez5" +# consolekit is not picked by shlibs, so add it to RDEPENDS too +PACKAGECONFIG[consolekit] = "-Dsession_tracking_consolekit=true,-Dsession_tracking_consolekit=false,consolekit,consolekit" +PACKAGECONFIG[modemmanager] = "-Dmodem_manager=true,-Dmodem_manager=false,modemmanager mobile-broadband-provider-info" +PACKAGECONFIG[ppp] = "-Dppp=true -Dpppd=${sbindir}/pppd,-Dppp=false,ppp" +PACKAGECONFIG[dnsmasq] = "-Ddnsmasq=${bindir}/dnsmasq" +PACKAGECONFIG[nss] = "-Dcrypto=nss,,nss" +PACKAGECONFIG[resolvconf] = "-Dresolvconf=${base_sbindir}/resolvconf,-Dresolvconf=no,,resolvconf" +PACKAGECONFIG[gnutls] = "-Dcrypto=gnutls,,gnutls" +PACKAGECONFIG[crypto-null] = "-Dcrypto=null" +PACKAGECONFIG[wifi] = "-Dwext=true -Dwifi=true,-Dwext=false -Dwifi=false" +PACKAGECONFIG[iwd] = "-Diwd=true,-Diwd=false" +PACKAGECONFIG[ifupdown] = "-Difupdown=true,-Difupdown=false" +PACKAGECONFIG[cloud-setup] = "-Dnm_cloud_setup=true,-Dnm_cloud_setup=false" +PACKAGECONFIG[nmcli] = "-Dnmcli=true,-Dnmcli=false" +PACKAGECONFIG[readline] = "-Dreadline=libreadline,,readline" +PACKAGECONFIG[libedit] = "-Dreadline=libedit,,libedit" +PACKAGECONFIG[ovs] = "-Dovs=true,-Dovs=false,jansson" +PACKAGECONFIG[audit] = "-Dlibaudit=yes,-Dlibaudit=no" +PACKAGECONFIG[selinux] = "-Dselinux=true,-Dselinux=false,libselinux" +PACKAGECONFIG[vala] = "-Dvapi=true,-Dvapi=false" +PACKAGECONFIG[dhcpcd] = "-Ddhcpcd=yes,-Ddhcpcd=no,,dhcpcd" +PACKAGECONFIG[dhclient] = "-Ddhclient=yes,-Ddhclient=no,,dhcp" +PACKAGECONFIG[concheck] = "-Dconcheck=true,-Dconcheck=false" + + +PACKAGES =+ " \ + libnm \ + ${PN}-adsl \ + ${PN}-bluetooth \ + ${PN}-cloud-setup \ + ${PN}-nmcli \ + ${PN}-nmcli-bash-completion \ + ${PN}-nmtui \ + ${PN}-wifi \ + ${PN}-wwan \ + ${PN}-ovs \ + ${PN}-ppp \ + ${PN}-daemon \ +" + +SYSTEMD_PACKAGES = "${PN}-daemon ${PN}-cloud-setup" +INITSCRIPT_PACKAGES = "${PN}-daemon" + +NETWORKMANAGER_PLUGINDIR = "${libdir}/NetworkManager/${PV}" +NETWORKMANAGER_DISPATCHERDIR = "${nonarch_libdir}/NetworkManager/dispatcher.d" + + +SUMMARY:libnm = "Libraries for adding NetworkManager support to applications" +FILES:libnm = "\ + ${libdir}/libnm.so.* \ + ${libdir}/girepository-1.0/NM-1.0.typelib \ +" + +SUMMARY:${PN}-adsl = "ADSL device plugin for NetworkManager" +FILES:${PN}-adsl = "${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-adsl.so" +RDEPENDS:${PN}-adsl += "${PN}-daemon" + +SUMMARY:${PN}-bluetooth = "Bluetooth device plugin for NetworkManager" +FILES:${PN}-bluetooth = "${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-bluetooth.so" +RDEPENDS:${PN}-bluetooth += "${PN}-daemon ${@bb.utils.contains('PACKAGECONFIG', 'bluez5', '${PN}-wwan bluez5', '', d)}" + +SUMMARY:${PN}-cloud-setup = "Automatically configure NetworkManager in cloud" +FILES:${PN}-cloud-setup = " \ + ${libexecdir}/nm-cloud-setup \ + ${systemd_system_unitdir}/nm-cloud-setup.service \ + ${systemd_system_unitdir}/nm-cloud-setup.timer \ + ${libdir}/NetworkManager/dispatcher.d/90-nm-cloud-setup.sh \ + ${libdir}/NetworkManager/dispatcher.d/no-wait.d/90-nm-cloud-setup.sh \ +" +RDEPENDS:${PN}-cloud-setup += "${PN}-daemon" +ALLOW_EMPTY:${PN}-cloud-setup = "1" +SYSTEMD_SERVICE:${PN}-cloud-setup = "${@bb.utils.contains('PACKAGECONFIG', 'cloud-setup', 'nm-cloud-setup.service nm-cloud-setup.timer', '', d)}" + +SUMMARY:${PN}-nmcli = "NetworkManager command line client" +FILES:${PN}-nmcli = " \ + ${bindir}/nmcli \ +" +RDEPENDS:${PN}-nmcli += "${PN}-daemon" + +SUMMARY:${PN}-nmcli-bash-completion = "NetworkManager command line client bash completion" +FILES:${PN}-nmcli-bash-completion = "${datadir}/bash-completion/completions/nmcli" +RDEPENDS:${PN}-nmcli-bash-completion = "bash-completion" + +SUMMARY:${PN}-nmtui = "NetworkManager curses-based UI" +FILES:${PN}-nmtui = " \ + ${bindir}/nmtui \ + ${bindir}/nmtui-edit \ + ${bindir}/nmtui-connect \ + ${bindir}/nmtui-hostname \ +" +RDEPENDS:${PN}-nmtui += "${PN}-daemon" + +SUMMARY:${PN}-wifi = "Wifi plugin for NetworkManager" +FILES:${PN}-wifi = "\ + ${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-wifi.so \ + ${libdir}/NetworkManager/conf.d/enable-iwd.conf \ +" +def get_wifi_deps(d): + packageconfig = (d.getVar('PACKAGECONFIG') or "").split() + if 'wifi' in packageconfig: + if 'iwd' in packageconfig: + return 'iwd' + else: + return 'wpa-supplicant' + else: + return '' +RDEPENDS:${PN}-wifi += "${PN}-daemon ${@get_wifi_deps(d)}" + +SUMMARY:${PN}-wwan = "Mobile broadband device plugin for NetworkManager" +FILES:${PN}-wwan = "\ + ${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-wwan.so \ + ${NETWORKMANAGER_PLUGINDIR}/libnm-wwan.so \ +" +RDEPENDS:${PN}-wwan += "${PN}-daemon ${@bb.utils.contains('PACKAGECONFIG','modemmanager','modemmanager','',d)}" + +SUMMARY:${PN}-ovs = "Open vSwitch device plugin for NetworkManager" +FILES:${PN}-ovs = "\ + ${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-ovs.so \ + ${systemd_system_unitdir}/NetworkManager.service.d/NetworkManager-ovs.conf \ +" +RDEPENDS:${PN}-ovs += "${PN}-daemon" + +SUMMARY:${PN}-ppp = "PPP plugin for NetworkManager" +FILES:${PN}-ppp = "\ + ${NETWORKMANAGER_PLUGINDIR}/libnm-ppp-plugin.so \ + ${libdir}/pppd/*/nm-pppd-plugin.so \ +" +RDEPENDS:${PN}-ppp += "${PN}-daemon ${@bb.utils.contains('PACKAGECONFIG','ppp','ppp','',d)}" + +FILES:${PN}-dev += " \ + ${libdir}/pppd/*/*.la \ + ${libdir}/NetworkManager/*.la \ + ${NETWORKMANAGER_PLUGINDIR}/*.la \ + ${datadir}/dbus-1/interfaces/*.xml \ +" + +SUMMARY:${PN}-daemon += "The NetworkManager daemon" +FILES:${PN}-daemon += " \ + ${bindir}/nm-online \ + ${datadir}/dbus-1 \ + ${datadir}/polkit-1 \ + ${libdir}/NetworkManager \ + ${libexecdir} \ + ${localstatedir}/lib/NetworkManager \ + ${NETWORKMANAGER_DISPATCHERDIR} \ + ${nonarch_base_libdir}/udev/* \ + ${nonarch_libdir}/firewalld \ + ${nonarch_libdir}/NetworkManager/conf.d \ + ${nonarch_libdir}/NetworkManager/dispatcher.d/no-wait.d \ + ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-down.d \ + ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-up.d \ + ${nonarch_libdir}/NetworkManager/system-connections \ + ${nonarch_libdir}/NetworkManager/VPN \ + ${sbindir}/NetworkManager \ + ${sysconfdir}/init.d/network-manager \ + ${sysconfdir}/NetworkManager \ + ${sysconfdir}/resolv-conf.NetworkManager \ + ${sysconfdir}/sysconfig/network-scripts \ + ${systemd_system_unitdir} \ +" +RDEPENDS:${PN}-daemon += "\ + ${@bb.utils.contains('PACKAGECONFIG', 'ifupdown', 'bash', '', d)} \ +" +RRECOMMENDS:${PN}-daemon += "\ + ${NETWORKMANAGER_FIREWALL_DEFAULT} \ + ${@bb.utils.filter('PACKAGECONFIG', 'dnsmasq', d)} \ +" +INITSCRIPT_NAME:${PN}-daemon = "network-manager" +SYSTEMD_SERVICE:${PN}-daemon = "\ + NetworkManager.service \ + NetworkManager-dispatcher.service \ +" +RCONFLICTS:${PN}-daemon += "connman" +ALTERNATIVE_PRIORITY = "100" +ALTERNATIVE:${PN}-daemon = "${@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)}" + + +# The networkmanager package is an empty meta package which weakly depends on all the compiled features. +# Install this package to get all plugins and related dependencies installed. Alternatively just install +# plugins and related dependencies e.g. by installing networkmanager-wifi or networkmanager-wwan +# packages to the firmware. +ALLOW_EMPTY:${PN} = "1" +RRECOMMENDS:${PN} += "\ + ${@bb.utils.contains('PACKAGECONFIG','adsl','${PN}-adsl','',d)} \ + ${@bb.utils.contains('PACKAGECONFIG','bluez5','${PN}-bluetooth','',d)} \ + ${@bb.utils.contains('PACKAGECONFIG','cloud-setup','${PN}-cloud-setup','',d)} \ + ${@bb.utils.contains('PACKAGECONFIG','nmcli','${PN}-nmcli','',d)} \ + ${@bb.utils.contains('PACKAGECONFIG','nmtui','${PN}-nmtui','',d)} \ + ${@bb.utils.contains('PACKAGECONFIG','wifi','${PN}-wifi','',d)} \ + ${@bb.utils.contains('PACKAGECONFIG','wwan','${PN}-wwan','',d)} \ + ${@bb.utils.contains('PACKAGECONFIG','ovs','${PN}-ovs','',d)} \ + ${@bb.utils.contains('PACKAGECONFIG','ppp','${PN}-ppp','',d)} \ +" + +do_install:append() { + install -Dm 0755 ${WORKDIR}/${BPN}.initd ${D}${sysconfdir}/init.d/network-manager + + rm -rf ${D}/run ${D}${localstatedir}/run + + if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then + # For read-only filesystem, do not create links during bootup + ln -sf ../run/NetworkManager/resolv.conf ${D}${sysconfdir}/resolv-conf.NetworkManager + + # systemd v210 and newer do not need this rule file + rm ${D}/${nonarch_base_libdir}/udev/rules.d/84-nm-drivers.rules + fi + + # Enable iwd if compiled + if ${@bb.utils.contains('PACKAGECONFIG','iwd','true','false',d)}; then + install -Dm 0644 ${WORKDIR}/enable-iwd.conf ${D}${libdir}/NetworkManager/conf.d/enable-iwd.conf + fi + + # Enable dhcpd if compiled + if ${@bb.utils.contains('PACKAGECONFIG','dhcpcd','true','false',d)}; then + install -Dm 0644 ${WORKDIR}/enable-dhcpcd.conf ${D}${libdir}/NetworkManager/conf.d/enable-dhcpcd.conf + fi +} -- cgit v1.2.3-54-g00ecf