diff options
Diffstat (limited to 'net-misc/networkmanager')
5 files changed, 688 insertions, 1 deletions
diff --git a/net-misc/networkmanager/Manifest b/net-misc/networkmanager/Manifest index ed38bc14311e..dcf02dbd49ea 100644 --- a/net-misc/networkmanager/Manifest +++ b/net-misc/networkmanager/Manifest @@ -3,8 +3,13 @@ AUX 1.18.4-iwd1-compat.patch 3033 BLAKE2B 4f25f0f425ad13a91776d11d3df4d153f0ebdd AUX 10-openrc-status-r4 1182 BLAKE2B ab6f3e8340c3c53f5df667395489071c42320040a90356c94bca15c45a4d66c5e3e0870a17cda6531a98adee4ec92ca886f9be298765f1afbca864786abb495e SHA512 b1f0cd7eaeb13af9ab1ce192fd3f47e52d505c4ad5a0888af1ad2598701a034231c03f5346441f44443daca84f2089cb68e08c2876396be0e668c484c3d331ec AUX conf.d.NetworkManager 230 BLAKE2B 987b6b39c6c8b14a788575241575f9a0761f320117ad8c70ff084e88f3282c2d384f49042beecdbf876a534e49d26b9ff8e385cd2f301a056a0ba3c45d5e04fc SHA512 f8c9331834cbc66ab0e4e6f4a120fde6a08a435d680a1e1087718fdbb2b9843a313e7ec30b7008822999dafd98e152aa7d2a96f87320ba9c91c3adb63e0b7c9a AUX init.d.NetworkManager-r1 1822 BLAKE2B 81479268fc38412150ff480753f9be609c3d11448f645c24d24e5280eb547a3c56fe991e454c968365330d33c622466cb1140cfd0e15811a904623c33742611a SHA512 a8356480592ec5e818b390b83cb258248d64850748e9e485bed68befabf067219d02fda137ee63684e0cd2c0e4f5fca30f94f8db71f811149183ff4715159658 +AUX networkmanager-1.20.6-dont_call_helpers_with_full_paths.patch 574 BLAKE2B 179dfdcdb97bfc66adbeb58ca0e0b8f95f6d1cc0687fef338bc25ac59b4dc83e20e547d419ef8cea482c6302a05bbce8279c868f00c0cb173f42ebdc6a4bdcae SHA512 ab3e96bbd88b4a5c0aac59dc8de437be78f2e77762d6bc9c99e3b1ff1d7db39a054c4fd9ba9e2f6f9907da1ef66c8af310562addaa79ecd9e9812564f609a273 AUX networkmanager-data-fix-the-ID_NET_DRIVER-udev-rule.patch 1350 BLAKE2B 4cffb7d29c1ffdff7106485e2fe1a74ec403c8b9cb5235a066021fd91d0231aef7b9f621cd82706e58adbe27085d13600a651f5957e6a20f3ca241af483cf88c SHA512 f541c873f097b8424e04fdc0fb2ca6256a3e17cb60021f1c931908ff39bbf95de3e40975ea62b19c18aa35476a5f7e07fc96135a0fb0bc1128acc5b62724bd3e DIST NetworkManager-1.18.4.tar.xz 4875196 BLAKE2B 9c58d6d7317562332dfa9639f8e236a0a7f6b58e7dad5af83916b1c6178899a6bcf12bc289fb401d84fd6420306364b4c4c0a25eda2a08eef812acde1862a18a SHA512 9fd22775a400ee8d20c75ebddfee842bfbd8780966444dd537e371a65918f41640e921d2c441853afe8f72d693e9b4c1415435136a07004666a6af4799fd3350 +DIST NetworkManager-1.22.10.tar.bz2 6292347 BLAKE2B b6cb06a0630685714cdd3c8b8e1d788a6e979c2d7f232259e682fdc9e1f5569259731fdbbea65b6e8321561ecb8354b6f7a0b10843eb17cbe6f5937af8d9d898 SHA512 61b6214188a3cd281d0d5a5b8bfc402f8a19d8beaa6a3a2bd85983991cc66d62b2c3785d7ca652373903d53331610cd63a45d94bdb355196d939c48f42be29c1 +DIST NetworkManager-1.22.8.tar.bz2 6291982 BLAKE2B f02ca4006c7ccedc30f2a54cc15f9e0e44fb0fd00114ea1f634a1c72b422083d6bcd0b4ac23404da4eb2d278d97708776e925bb37a13394e97563053e3330e3d SHA512 af598bcb192a2f48703cd7a995823b3f9c53c3f658e29a0cc939f4436d38417ae57f44dc7da75581a9caff32bc572b57bae7ad4a56930178ae0f0003e0a44973 EBUILD networkmanager-1.18.4-r1.ebuild 11313 BLAKE2B 64307633192d02edf3d4d623588cfe7ab009e2a668daee04c0261d2c9a5b40abe8e8fc840a546a626b2fd32d2ec6aca0bc92aff7480e34e0d79d3f750d817347 SHA512 1b8db6b06a3974cdc746312797a4adb736c389596cc54ef6ed27f23a0aaf2fce401f92e5a1fc4d6ec57bb056bb1c0fa4e3dd8f2460409ad21529c3412d901d7a EBUILD networkmanager-1.18.4-r3.ebuild 11452 BLAKE2B b403c667180b5ea673f148a5eb0557ac11c45b5cc3928306b5d4b9b544d3c806ae2ea050169ea58158ff3a75e511b08cc87582128efec7cac31856bef691ea5e SHA512 2ca15626a85fe5cace717fe776e6dc8e62e677b32a7fd5dde3d34d5d6bec81a641331cb7d001023d45de5f40229c1a41f7f4d12d132e339e50984d9db147ec2e -MISC metadata.xml 2024 BLAKE2B afcda61aaa575f102f68affb5cf6a5f419262df83a8d488a29c6a07fe60f17ca36f82f1c89c95ee709766046266ac21e06314ea017271ae63c38f1729c789e30 SHA512 e79b229a5b96f81c79de4e4336d3f5cc19ccf3d9ebff180757f3e6da95f5dc21da17d82e93d5dbff1c44f7e4b4ee4b182cf6dc8df6dd7cc15d26b85309d9bcd0 +EBUILD networkmanager-1.22.10.ebuild 8727 BLAKE2B 81a7b84763845eadf9f0c59287e5614e59512eb9898c57cf833c2d80fddf222a64dc05761a856a0fe7fe97e07ed0b26c57a307166bd8c01c92813c36f8ad5488 SHA512 a486dfdbbf34a2fe0682a4b6a120b8ea6929e835886be3cddc1bdada285d604bf53811ec4858c2c26dddb0e6d03b67a31559e1de5c039ff2b0b30111f8b51817 +EBUILD networkmanager-1.22.8-r1.ebuild 8743 BLAKE2B 63da97dfbfa7261008058851103906a508cee8f98f197c7d05ae808a07687fb5e1566c7ed1bd615b1afe38441695d829c71c0d38de4ae7cd7324250865b0bd57 SHA512 d9a5e70fa609566366aae80af887175760bf9ee98869055ab2d7297f7bc72943f160d5c1213dd27bedc84786ff8ca06124f1b01ed3f1ccd0eb28eedb198c0b4a +MISC metadata.xml 2274 BLAKE2B c7c338380ebe7344d1d41d83b843e33388d890fc497301657519643eeb63d3f0b739d367aa27ac3a5826c36bdea9f0b48c588d1779872337763f5aaa810a1107 SHA512 bb57e8de13843938e7218c85631be6796a6976e88da2ccb9197c0495e655f639a54ec5aec61c04c59564132876850f3e56b9b40a6de8a0420388345fe38c7e89 diff --git a/net-misc/networkmanager/files/networkmanager-1.20.6-dont_call_helpers_with_full_paths.patch b/net-misc/networkmanager/files/networkmanager-1.20.6-dont_call_helpers_with_full_paths.patch new file mode 100644 index 000000000000..f7ce742c5d53 --- /dev/null +++ b/net-misc/networkmanager/files/networkmanager-1.20.6-dont_call_helpers_with_full_paths.patch @@ -0,0 +1,12 @@ +We don't have sed in /usr/bin + +--- NetworkManager-1.20.6/data/84-nm-drivers.rules ++++ NetworkManager-1.20.6/data/84-nm-drivers.rules +@@ -7,6 +7,6 @@ + # Determine ID_NET_DRIVER if there's no ID_NET_DRIVER or DRIVERS (old udev?) + ENV{ID_NET_DRIVER}=="?*", GOTO="nm_drivers_end" + DRIVERS=="?*", GOTO="nm_drivers_end" +-PROGRAM="/bin/sh -c '/usr/sbin/ethtool -i $$1 |/usr/bin/sed -n s/^driver:\ //p' -- $env{INTERFACE}", ENV{ID_NET_DRIVER}="%c" ++PROGRAM="/bin/sh -c 'ethtool -i $$1 | sed -n s/^driver:\ //p' -- $env{INTERFACE}", ENV{ID_NET_DRIVER}="%c" + + LABEL="nm_drivers_end" diff --git a/net-misc/networkmanager/metadata.xml b/net-misc/networkmanager/metadata.xml index 3345447e4f99..91e9ff45256e 100644 --- a/net-misc/networkmanager/metadata.xml +++ b/net-misc/networkmanager/metadata.xml @@ -6,6 +6,7 @@ <name>Gentoo GNOME Desktop</name> </maintainer> <use> + <flag name="concheck">Enable connectivity checking support</flag> <flag name="connection-sharing">Use <pkg>net-dns/dnsmasq</pkg> and <pkg>net-firewall/iptables</pkg> for connection sharing</flag> <flag name="consolekit">Use <pkg>sys-auth/consolekit</pkg> for session @@ -18,6 +19,8 @@ <pkg>net-wireless/wpa_supplicant</pkg> for wifi support by default</flag> <flag name="json">Enable JSON validation via <pkg>dev-libs/jansson</pkg> in libnm.</flag> + <flag name="libpsl">Link against libpsl</flag> + <flag name="lto">Link-time optimization</flag> <flag name="modemmanager">Enable support for mobile broadband devices using <pkg>net-misc/modemmanager</pkg></flag> <flag name="nss">Use <pkg>dev-libs/nss</pkg> for cryptography</flag> @@ -31,6 +34,7 @@ systemd-resolved, disable this flag and create a symlink to /run/systemd/resolve/stub-resolv.conf.</flag> <flag name="teamd">Enable Teamd control support</flag> + <flag name="tools">Build cli tools such as nmcli, nmtui and nm_cloud_setup</flag> <flag name="wifi">Enable support for wifi and 802.1x security</flag> <flag name="wext">Enable support for the deprecated Wext (Wireless Extensions) API; needed for some older drivers (e.g. ipw2200, diff --git a/net-misc/networkmanager/networkmanager-1.22.10.ebuild b/net-misc/networkmanager/networkmanager-1.22.10.ebuild new file mode 100644 index 000000000000..dc42b9360620 --- /dev/null +++ b/net-misc/networkmanager/networkmanager-1.22.10.ebuild @@ -0,0 +1,333 @@ +# Copyright 2019-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{6,7} ) + +inherit meson linux-info python-any-r1 systemd udev vala + +DESCRIPTION="A set of co-operative tools that make networking simple and straightforward" +HOMEPAGE="https://wiki.gnome.org/Projects/NetworkManager" +SRC_URI="https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/archive/${PV}/NetworkManager-${PV}.tar.bz2" + +LICENSE="GPL-2+" +SLOT="0" # add subslot if libnm-util.so.2 or libnm-glib.so.4 bumps soname version +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="audit bluetooth +concheck connection-sharing consolekit +dhclient dhcpcd " +IUSE+="debug doc elogind examples +gnutls introspection iwd json kernel_linux " +IUSE+="libpsl lto modemmanager nss ofono ovs +policykit ppp resolvconf selinux " +IUSE+="syslog systemd teamd test +tools vala wext +wifi" + +REQUIRED_USE=" + doc? ( introspection ) + iwd? ( wifi ) + vala? ( introspection ) + ^^ ( gnutls nss ) + ?? ( consolekit elogind systemd ) + ?? ( dhclient dhcpcd ) + ?? ( syslog systemd ) +" + +DEPEND=" + dev-libs/dbus-glib + dev-libs/glib:2 + net-libs/libndp + sys-apps/dbus + sys-kernel/linux-headers + virtual/libudev + audit? ( sys-process/audit ) + bluetooth? ( net-wireless/bluez ) + concheck? ( net-misc/curl ) + connection-sharing? ( + net-dns/dnsmasq[dbus,dhcp] + net-firewall/iptables + ) + consolekit? ( sys-auth/consolekit ) + dhclient? ( net-misc/dhcp[client] ) + dhcpcd? ( net-misc/dhcpcd ) + doc? ( dev-util/gtk-doc ) + elogind? ( sys-auth/elogind ) + gnutls? ( + dev-libs/libgcrypt:0= + net-libs/gnutls + ) + introspection? ( dev-libs/gobject-introspection:= ) + json? ( dev-libs/jansson ) + libpsl? ( net-libs/libpsl ) + modemmanager? ( + net-misc/mobile-broadband-provider-info + net-misc/modemmanager + ) + nss? ( dev-libs/nss ) + ofono? ( net-misc/ofono ) + ovs? ( dev-libs/jansson ) + policykit? ( sys-auth/polkit ) + ppp? ( net-dialup/ppp[ipv6] ) + resolvconf? ( net-dns/openresolv ) + selinux? ( sys-libs/libselinux ) + systemd? ( sys-apps/systemd:= ) + teamd? ( + dev-libs/jansson + net-misc/libteam + ) + tools? ( + dev-libs/newt + sys-libs/ncurses + sys-libs/readline:0= + ) +" +RDEPEND="${DEPEND} + acct-group/plugdev + || ( + net-analyzer/arping + net-misc/iputils[arping(+)] + ) + wifi? ( + iwd? ( net-wireless/iwd ) + !iwd? ( net-wireless/wpa_supplicant[dbus] ) + ) +" +BDEPEND="dev-util/intltool + sys-devel/gettext + virtual/pkgconfig + introspection? ( + $(python_gen_any_dep 'dev-python/pygobject:3[${PYTHON_USEDEP}]') + dev-libs/libxslt + dev-lang/perl + ) + vala? ( $(vala_depend) ) +" + +S="${WORKDIR}"/NetworkManager-${PV} + +RESTRICT="!test? ( test )" + +PATCHES=( + "${FILESDIR}/${PN}-1.20.6-dont_call_helpers_with_full_paths.patch" +) + +python_check_deps() { + if use introspection; then + has_version "dev-python/pygobject:3[${PYTHON_USEDEP}]" || return + fi + + if use test; then + has_version "dev-python/dbus-python[${PYTHON_USEDEP}]" && + has_version "dev-python/pygobject:3[${PYTHON_USEDEP}]" + fi +} + +sysfs_deprecated_check() { + ebegin "Checking for SYSFS_DEPRECATED support" + + if { linux_chkconfig_present SYSFS_DEPRECATED_V2; }; then + eerror "Please disable SYSFS_DEPRECATED_V2 support in your kernel config and recompile " + eerror "your kernel or NetworkManager will not work correctly." + eerror "See https://bugs.gentoo.org/333639 for more info." + die "CONFIG_SYSFS_DEPRECATED_V2 support detected!" + fi + eend ${?} +} + +pkg_pretend() { + if use kernel_linux; then + get_version + if linux_config_exists; then + sysfs_deprecated_check + else + ewarn "Was unable to determine your kernel .config" + ewarn "Please note that if CONFIG_SYSFS_DEPRECATED_V2 is set in your kernel .config, " + ewarn "NetworkManager will not work correctly." + ewarn "See https://bugs.gentoo.org/333639 for more info." + fi + fi +} + +pkg_setup() { + CONFIG_CHECK="~BPF" + + if use connection-sharing; then + if kernel_is lt 5 1; then + CONFIG_CHECK="~NF_NAT_IPV4 ~NF_NAT_MASQUERADE_IPV4" + else + CONFIG_CHECK="~NF_NAT ~NF_NAT_MASQUERADE" + fi + fi + + linux-info_pkg_setup + + # if use introspection || use test; then + if use introspection; then + python-any-r1_pkg_setup + fi +} + +src_prepare() { + default + use vala && vala_src_prepare +} + +src_configure() { + local emesonargs=( + -D systemdsystemunitdir=$(systemd_get_systemunitdir) + -D system_ca_path=/etc/ssl/certs + -D udev_dir=$(get_udevdir) + -D dbus_conf_dir=/usr/share/dbus-1/system.d + -D kernel_firmware_dir=/lib/firmware + -D iptables=/sbin/iptables + #-D dnsmasq= + #-D dnssec_trigger= + + -D dist_version=${PVR} + $(meson_use policykit polkit) + -D modify_system=true + $(meson_use policykit polkit_agent) + $(meson_use policykit config_auth_polkit_default) + $(meson_use selinux) + $(meson_use systemd systemd_journal) + -D hostname_persist=gentoo + -D libaudit=$(usex audit yes no) + + $(meson_use wext) + $(meson_use wifi) + $(meson_use iwd) + $(meson_use ppp) + #-D pppd='path to pppd binary' + #-D pppd_plugin_dir='path to the pppd plugins directory' + $(meson_use modemmanager modem_manager) + $(meson_use ofono) + $(meson_use concheck) + $(meson_use teamd teamdctl) + $(meson_use ovs) + $(meson_use tools nmcli) + $(meson_use tools nmtui) + $(meson_use tools nm_cloud_setup) + $(meson_use bluetooth bluez5_dun) + -D ebpf=true + + -D config_plugins_default=keyfile + -D ifcfg_rh=false + -D ifupdown=false + + $(meson_feature resolvconf) + -D netconfig=disable + -D config_dns_rc_manager_default=symlink + + $(meson_feature dhclient) + -D dhcpcanon=disable + $(meson_feature dhcpcd) + + $(meson_use introspection) + $(meson_use vala vapi) + $(meson_use doc docs) + # $(meson_use debug more_asserts) + -D more_asserts=0 + $(meson_use debug more_logging) + -D valgrind=no + -D valgrind_suppressions= + $(meson_use debug ld_gc) + $(meson_use libpsl) + $(meson_use json json_validation) + -D qt=false + + $(meson_use lto b_lto) + ) + + if use consolekit; then + emesonargs+=( -D session_tracking_consolekit=true ) + emesonargs+=( -D session_tracking=no ) + emesonargs+=( -D suspend_resume=consolekit ) + elif use systemd; then + emesonargs+=( -D session_tracking_consolekit=false ) + emesonargs+=( -D session_tracking=systemd ) + emesonargs+=( -D suspend_resume=systemd ) + elif use elogind; then + emesonargs+=( -D session_tracking_consolekit=false ) + emesonargs+=( -D session_tracking=elogind ) + emesonargs+=( -D suspend_resume=elogind ) + else + emesonargs+=( -D session_tracking_consolekit=false ) + emesonargs+=( -D session_tracking=none ) + emesonargs+=( -D suspend_resume=auto ) + fi + + if use syslog; then + emesonargs+=( -D config_logging_backend_default=syslog ) + elif use systemd; then + emesonargs+=( -D config_logging_backend_default=journal ) + else + emesonargs+=( -D config_logging_backend_default=default ) + fi + + if use dhclient; then + emesonargs+=( -D config_dhcp_default=dhclient ) + elif use dhcpcd; then + emesonargs+=( -D config_dhcp_default=dhcpcd ) + else + emesonargs+=( -D config_dhcp_default=internal ) + fi + + if use nss; then + emesonargs+=( -D crypto=nss ) + else + emesonargs+=( -D crypto=gnutls ) + fi + + meson_src_configure +} + +src_install() { + meson_src_install + + newinitd "${FILESDIR}/init.d.NetworkManager-r1" NetworkManager + newconfd "${FILESDIR}/conf.d.NetworkManager" NetworkManager + + # Need to keep the /etc/NetworkManager/dispatched.d for dispatcher scripts + keepdir /etc/NetworkManager/dispatcher.d + + # Provide openrc net dependency only when nm is connected + exeinto /etc/NetworkManager/dispatcher.d + newexe "${FILESDIR}/10-openrc-status-r4" 10-openrc-status + sed -e "s:@EPREFIX@:${EPREFIX}:g" \ + -i "${ED}/etc/NetworkManager/dispatcher.d/10-openrc-status" || die + + keepdir /etc/NetworkManager/system-connections + chmod 0600 "${ED}"/etc/NetworkManager/system-connections/.keep* || die + + # Allow users in plugdev group to modify system connections + insinto /usr/share/polkit-1/rules.d/ + doins "${FILESDIR}/01-org.freedesktop.NetworkManager.settings.modify.system.rules" + + if use iwd; then + insinto /usr/lib/NetworkManager/conf.d/ + newins - iwd.conf <<- _EOF_ + [device] + wifi.backend=iwd + _EOF_ + fi + + if use examples; then + dodoc -r "${S}"/examples/ + + insinto /usr/lib/NetworkManager/conf.d + doins "${S}"/examples/nm-conf.d/{30-anon,31-mac-addr-change}.conf + + # Temporary workaround + cp "${ED}"/usr/share/doc/NetworkManager/examples/server.conf \ + "${ED}"/usr/share/doc/${PF}/examples/ || + die "Failed to copy server.conf example." + fi + + # Temporary workaround, + # The file will be installed regargless of 'examples' USE. + rm "${ED}"/usr/share/doc/NetworkManager/examples/server.conf || die + rm -r "${ED}"/usr/share/doc/NetworkManager || die + + # Empty dirs + rm -r "${ED}/var" || die +} + +pkg_postinst() { + systemd_reenable NetworkManager.service +} diff --git a/net-misc/networkmanager/networkmanager-1.22.8-r1.ebuild b/net-misc/networkmanager/networkmanager-1.22.8-r1.ebuild new file mode 100644 index 000000000000..08e86947d2ea --- /dev/null +++ b/net-misc/networkmanager/networkmanager-1.22.8-r1.ebuild @@ -0,0 +1,333 @@ +# Copyright 2019-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{6,7} ) + +inherit meson linux-info python-any-r1 systemd udev vala + +DESCRIPTION="A set of co-operative tools that make networking simple and straightforward" +HOMEPAGE="https://wiki.gnome.org/Projects/NetworkManager" +SRC_URI="https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/archive/${PV}/NetworkManager-${PV}.tar.bz2" + +LICENSE="GPL-2+" +SLOT="0" # add subslot if libnm-util.so.2 or libnm-glib.so.4 bumps soname version +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="audit bluetooth +concheck connection-sharing consolekit +dhclient dhcpcd " +IUSE+="debug doc elogind examples +gnutls introspection iwd json kernel_linux " +IUSE+="libpsl lto modemmanager nss ofono ovs +policykit ppp resolvconf selinux " +IUSE+="syslog systemd teamd +tools vala wext +wifi" + +REQUIRED_USE=" + doc? ( introspection ) + iwd? ( wifi ) + vala? ( introspection ) + ^^ ( gnutls nss ) + ?? ( consolekit elogind systemd ) + ?? ( dhclient dhcpcd ) + ?? ( syslog systemd ) +" + +DEPEND=" + dev-libs/dbus-glib + dev-libs/glib:2 + net-libs/libndp + sys-apps/dbus + sys-kernel/linux-headers + virtual/libudev + audit? ( sys-process/audit ) + bluetooth? ( net-wireless/bluez ) + concheck? ( net-misc/curl ) + connection-sharing? ( + net-dns/dnsmasq[dbus,dhcp] + net-firewall/iptables + ) + consolekit? ( sys-auth/consolekit ) + dhclient? ( net-misc/dhcp[client] ) + dhcpcd? ( net-misc/dhcpcd ) + doc? ( dev-util/gtk-doc ) + elogind? ( sys-auth/elogind ) + gnutls? ( + dev-libs/libgcrypt:0= + net-libs/gnutls + ) + introspection? ( dev-libs/gobject-introspection:= ) + json? ( dev-libs/jansson ) + libpsl? ( net-libs/libpsl ) + modemmanager? ( + net-misc/mobile-broadband-provider-info + net-misc/modemmanager + ) + nss? ( dev-libs/nss ) + ofono? ( net-misc/ofono ) + ovs? ( dev-libs/jansson ) + policykit? ( sys-auth/polkit ) + ppp? ( net-dialup/ppp[ipv6] ) + resolvconf? ( net-dns/openresolv ) + selinux? ( sys-libs/libselinux ) + systemd? ( sys-apps/systemd:= ) + teamd? ( + dev-libs/jansson + net-misc/libteam + ) + tools? ( + dev-libs/newt + sys-libs/ncurses + sys-libs/readline:0= + ) +" +RDEPEND="${DEPEND} + acct-group/plugdev + || ( + net-analyzer/arping + net-misc/iputils[arping(+)] + ) + wifi? ( + iwd? ( net-wireless/iwd ) + !iwd? ( net-wireless/wpa_supplicant[dbus] ) + ) +" +BDEPEND="dev-util/intltool + sys-devel/gettext + virtual/pkgconfig + introspection? ( + $(python_gen_any_dep 'dev-python/pygobject:3[${PYTHON_USEDEP}]') + dev-libs/libxslt + dev-lang/perl + ) + vala? ( $(vala_depend) ) +" + +S="${WORKDIR}"/NetworkManager-${PV} + +# Not implemented yet. +RESTRICT="test" + +PATCHES=( + "${FILESDIR}/${PN}-1.20.6-dont_call_helpers_with_full_paths.patch" +) + +python_check_deps() { + if use introspection; then + has_version "dev-python/pygobject:3[${PYTHON_USEDEP}]" || return + fi + + # test requirements here +} + +sysfs_deprecated_check() { + ebegin "Checking for SYSFS_DEPRECATED support" + + if { linux_chkconfig_present SYSFS_DEPRECATED_V2; }; then + eerror "Please disable SYSFS_DEPRECATED_V2 support in your kernel config and recompile " + eerror "your kernel or NetworkManager will not work correctly." + eerror "See https://bugs.gentoo.org/333639 for more info." + die "CONFIG_SYSFS_DEPRECATED_V2 support detected!" + fi + eend ${?} +} + +pkg_pretend() { + if use kernel_linux; then + get_version + if linux_config_exists; then + sysfs_deprecated_check + else + ewarn "Was unable to determine your kernel .config" + ewarn "Please note that if CONFIG_SYSFS_DEPRECATED_V2 is set in your kernel .config, " + ewarn "NetworkManager will not work correctly." + ewarn "See https://bugs.gentoo.org/333639 for more info." + fi + fi +} + +pkg_setup() { + CONFIG_CHECK="~BPF" + + if use connection-sharing; then + if kernel_is lt 5 1; then + CONFIG_CHECK="~NF_NAT_IPV4 ~NF_NAT_MASQUERADE_IPV4" + else + CONFIG_CHECK="~NF_NAT ~NF_NAT_MASQUERADE" + fi + fi + + linux-info_pkg_setup + + # if use introspection || use test; then + if use introspection; then + python-any-r1_pkg_setup + fi +} + +src_prepare() { + default + use vala && vala_src_prepare +} + +src_configure() { + local emesonargs=( + -D systemdsystemunitdir=$(systemd_get_systemunitdir) + -D system_ca_path=/etc/ssl/certs + -D udev_dir=$(get_udevdir) + -D dbus_conf_dir=/usr/share/dbus-1/system.d + -D kernel_firmware_dir=/lib/firmware + -D iptables=/sbin/iptables + #-D dnsmasq= + #-D dnssec_trigger= + + -D dist_version=${PVR} + $(meson_use policykit polkit) + -D modify_system=true + $(meson_use policykit polkit_agent) + $(meson_use policykit config_auth_polkit_default) + $(meson_use selinux) + $(meson_use systemd systemd_journal) + -D hostname_persist=gentoo + -D libaudit=$(usex audit yes no) + + $(meson_use wext) + $(meson_use wifi) + $(meson_use iwd) + $(meson_use ppp) + #-D pppd='path to pppd binary' + #-D pppd_plugin_dir='path to the pppd plugins directory' + $(meson_use modemmanager modem_manager) + $(meson_use ofono) + $(meson_use concheck) + $(meson_use teamd teamdctl) + $(meson_use ovs) + $(meson_use tools nmcli) + $(meson_use tools nmtui) + $(meson_use tools nm_cloud_setup) + $(meson_use bluetooth bluez5_dun) + -D ebpf=true + + -D config_plugins_default=keyfile + -D ifcfg_rh=false + -D ifupdown=false + + $(meson_feature resolvconf) + -D netconfig=disable + -D config_dns_rc_manager_default=symlink + + $(meson_feature dhclient) + -D dhcpcanon=disable + $(meson_feature dhcpcd) + + $(meson_use introspection) + $(meson_use vala vapi) + $(meson_use doc docs) + # $(meson_use debug more_asserts) + -D more_asserts=0 + $(meson_use debug more_logging) + -D valgrind=no + -D valgrind_suppressions= + $(meson_use debug ld_gc) + $(meson_use libpsl) + $(meson_use json json_validation) + -D qt=false + + $(meson_use lto b_lto) + ) + + if use consolekit; then + emesonargs+=( -D session_tracking_consolekit=true ) + emesonargs+=( -D session_tracking=no ) + emesonargs+=( -D suspend_resume=consolekit ) + elif use systemd; then + emesonargs+=( -D session_tracking_consolekit=false ) + emesonargs+=( -D session_tracking=systemd ) + emesonargs+=( -D suspend_resume=systemd ) + elif use elogind; then + emesonargs+=( -D session_tracking_consolekit=false ) + emesonargs+=( -D session_tracking=elogind ) + emesonargs+=( -D suspend_resume=elogind ) + else + emesonargs+=( -D session_tracking_consolekit=false ) + emesonargs+=( -D session_tracking=none ) + emesonargs+=( -D suspend_resume=auto ) + fi + + if use syslog; then + emesonargs+=( -D config_logging_backend_default=syslog ) + elif use systemd; then + emesonargs+=( -D config_logging_backend_default=journal ) + else + emesonargs+=( -D config_logging_backend_default=default ) + fi + + if use dhclient; then + emesonargs+=( -D config_dhcp_default=dhclient ) + elif use dhcpcd; then + emesonargs+=( -D config_dhcp_default=dhcpcd ) + else + emesonargs+=( -D config_dhcp_default=internal ) + fi + + if use nss; then + emesonargs+=( -D crypto=nss ) + else + emesonargs+=( -D crypto=gnutls ) + fi + + meson_src_configure +} + +src_install() { + meson_src_install + + # ---- openrc untested, this is copied from current networkmanager ebuild. + newinitd "${FILESDIR}/init.d.NetworkManager-r1" NetworkManager + newconfd "${FILESDIR}/conf.d.NetworkManager" NetworkManager + + # Need to keep the /etc/NetworkManager/dispatched.d for dispatcher scripts + keepdir /etc/NetworkManager/dispatcher.d + + # Provide openrc net dependency only when nm is connected + exeinto /etc/NetworkManager/dispatcher.d + newexe "${FILESDIR}/10-openrc-status-r4" 10-openrc-status + sed -e "s:@EPREFIX@:${EPREFIX}:g" \ + -i "${ED}/etc/NetworkManager/dispatcher.d/10-openrc-status" || die + + keepdir /etc/NetworkManager/system-connections + chmod 0600 "${ED}"/etc/NetworkManager/system-connections/.keep* || die + + # Allow users in plugdev group to modify system connections + insinto /usr/share/polkit-1/rules.d/ + doins "${FILESDIR}/01-org.freedesktop.NetworkManager.settings.modify.system.rules" + # ---- + + if use iwd; then + insinto /usr/lib/NetworkManager/conf.d/ + newins - iwd.conf <<- _EOF_ + [device] + wifi.backend=iwd + _EOF_ + fi + + if use examples; then + dodoc -r "${S}"/examples/ + + insinto /usr/lib/NetworkManager/conf.d + doins "${S}"/examples/nm-conf.d/{30-anon,31-mac-addr-change}.conf + + # Temporary workaround before patching, + cp "${ED}"/usr/share/doc/NetworkManager/examples/server.conf \ + "${ED}"/usr/share/doc/${PF}/examples/ || + die "Failed to copy server.conf example." + fi + + # Temporary workaround, can be patched later. + # The file will be installed regargless of 'examples' USE. + rm "${ED}"/usr/share/doc/NetworkManager/examples/server.conf || die + rm -r "${ED}"/usr/share/doc/NetworkManager || die + + # Empty dirs + rm -r "${ED}/var" || die +} + +pkg_postinst() { + systemd_reenable NetworkManager.service +} |