File NetworkManager.spec of Package NetworkManager.11070

#
# spec file for package NetworkManager
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


# Toggle this whenever enabling/disabling the nm-probe-radius-server-cert.patch patch (as we export additional symbols)
# Like this, g-c-c and NM-applet, which consume this symbol, will block updating NM if we have to disable the patch until
# they are touched too
%define with_cacert_patch 0
%define _udevdir %(pkg-config --variable udevdir udev)
Name:           NetworkManager
Version:        1.10.6
Release:        0
Summary:        Network Link Manager and User Applications
License:        GPL-2.0-or-later
Group:          Productivity/Networking/System
URL:            http://www.gnome.org/projects/NetworkManager/
Source0:        http://download.gnome.org/sources/NetworkManager/1.10/%{name}-%{version}.tar.xz
Source1:        nfs
Source2:        NetworkManager.conf
Source3:        baselibs.conf
Source99:       NetworkManager-rpmlintrc
# PATCH-FEATURE-OPENSUSE systemd-network-config.patch -- don't try to start NM under systemd if it is disabled in system configuration
Patch0:         systemd-network-config.patch
# PATCH-FIX-UPSTREAM nm-probe-radius-server-cert.patch bnc#574266 glin@suse.com -- Probe the RADIUS server certificate
Patch1:         nm-probe-radius-server-cert.patch
# PATCH-FIX-OPENSUSE networkmanager-checks-po.patch tchvatal@suse.com -- fix translation validation error caused by our patch systemd-network-config.patch
Patch2:         networkmanager-checks-po.patch
# PATCH-FIX-OPENSUSE networkmanager-obs-net.patch tchvatal@suse.com -- disable tests that are by design broken on OBS workers
Patch3:         networkmanager-obs-net.patch
# PATCH-FIX-OPENSUSE nm-dont-overwrite-resolv-conf.patch bsc#1021665, bsc#960153 sckang@suse.com -- NetworkManager spawns netconfig to update DNS settings, and terminates netconfig after 1s. But 1s isn't quite long enough for netconfig to complete the task. Adjust it to 0 seconds(don't send SIGKILL) to avoid NM overwriting /etc/resolv.conf.
Patch4:         nm-dont-overwrite-resolv-conf.patch
# PATCH-FIX-UPSTREAM NM-look-at-all-rp-filter-value.patch bsc#1084336 bgo#794689 sckang@suse.com -- device: look at 'all' rp_filter value too to determine actual value
Patch5:         NM-look-at-all-rp-filter-value.patch
# PATCH-FIX-UPSTREAM NM-add-wifi-scan-polkit-rule.patch bsc#1122262, glfo#NetworkManager/NetworkManager!68 sckang@suse.com -- Adding a new polkit action "org.freedesktop.NetworkManager.wifi-scan" so that distributions can add specific rule to allow Wi-Fi scans.
Patch6:         NM-add-wifi-scan-polkit-rule.patch
# PATCH-FIX-UPSTREAM 0001-Coerce-connectivity-LIMITED-to-NONE-when-device-is-d.patch boo#1103678
Patch7:         0001-Coerce-connectivity-LIMITED-to-NONE-when-device-is-d.patch
# PATCH-FIX-UPSTREAM 0001-Update-connectivity-value-on-device-removal.patch boo#1103678
Patch8:         0001-Update-connectivity-value-on-device-removal.patch
# PATCH-FIX-UPSTREAM NetworkManager-make-nm-wait-online-follow-nm-service.patch boo#1130355 gh#NetworkManager/NetworkManager#76 sckang@suse.com -- make enablement of n-m-wait-online.service follow n-m.service
Patch9:         NetworkManager-make-nm-wait-online-follow-nm-service.patch
# PATCH-FIX-UPSTREAM NetworkManager-CVE-2018-1000135.patch bsc#1086263 bgo#746422 sckang@suse.com -- Fixes CVE-2018-1000135.
Patch10:        NetworkManager-CVE-2018-1000135.patch

BuildRequires:  dnsmasq
BuildRequires:  fdupes
BuildRequires:  intltool
BuildRequires:  iptables
BuildRequires:  libtool
BuildRequires:  ncurses-devel
BuildRequires:  pkgconfig
BuildRequires:  ppp-devel
# Required for tests
BuildRequires:  python3-dbus-python
BuildRequires:  python3-gobject
BuildRequires:  readline-devel
BuildRequires:  rp-pppoe
# Do not use suse-release, it's very late in build chain and not needed
# all it does is netconfig and ifconfig enablement
#BuildRequires:  suse-release
# for /sbin/netconfig: integration with netconfig is required
BuildRequires:  sysconfig-netconfig
BuildRequires:  translation-update-upstream
BuildRequires:  wireless-tools
BuildRequires:  perl(YAML)
BuildRequires:  pkgconfig(bluez) >= 5
BuildRequires:  pkgconfig(dbus-1)
BuildRequires:  pkgconfig(dbus-glib-1) >= 0.94
BuildRequires:  pkgconfig(glib-2.0) >= 2.32
BuildRequires:  pkgconfig(gobject-introspection-1.0)
BuildRequires:  pkgconfig(gtk-doc)
BuildRequires:  pkgconfig(jansson)
BuildRequires:  pkgconfig(libcurl)
BuildRequires:  pkgconfig(libndp)
BuildRequires:  pkgconfig(libnewt) >= 0.52.15
BuildRequires:  pkgconfig(libnl-3.0) >= 3.2.8
BuildRequires:  pkgconfig(libnl-genl-3.0)
BuildRequires:  pkgconfig(libnl-route-3.0)
BuildRequires:  pkgconfig(libpsl) >= 0.1
BuildRequires:  pkgconfig(libsystemd) >= 209
BuildRequires:  pkgconfig(libteam)
BuildRequires:  pkgconfig(libudev) >= 175
BuildRequires:  pkgconfig(mm-glib) >= 0.7.991
BuildRequires:  pkgconfig(nss)
BuildRequires:  pkgconfig(polkit-agent-1) >= 0.97
BuildRequires:  pkgconfig(udev)
BuildRequires:  pkgconfig(uuid)
BuildRequires:  pkgconfig(vapigen)
Requires:       NetworkManager-branding
Requires:       dhcp-client
Requires:       iproute2
Requires:       iputils
Requires:       mozilla-nss
Requires:       sysconfig-netconfig >= 0.80.5
Requires:       wpa_supplicant >= 0.6.4
%requires_eq    ppp
Recommends:     %{name}-lang
Recommends:     NetworkManager-client
Recommends:     dnsmasq
Recommends:     iptables
Recommends:     org.freedesktop.ModemManager
# Recommend the rp-pppoe binary for PPP over Ethernet (common for ADSL) connections.
Recommends:     rp-pppoe
Provides:       dhcdbd = 1.14
Obsoletes:      dhcdbd < 1.14
%{?systemd_requires}

%description
NetworkManager attempts to keep an active network connection available
at all times.  The point of NetworkManager is to make networking
configuration and setup as painless and automatic as possible.	If
using DHCP, NetworkManager is intended to replace default routes,
obtain IP addresses from a DHCP server, and change name servers
whenever it sees fit.

%package devel
Summary:        Libraries and headers for adding NetworkManager support to applications
Group:          Development/Libraries/Other
Requires:       %{name} = %{version}
Requires:       libnm-glib-vpn1 = %{version}
Requires:       libnm-glib4 = %{version}
Requires:       libnm-util2 = %{version}
Requires:       libnm0 = %{version}
Requires:       typelib-1_0-NM-1_0 = %{version}
Requires:       typelib-1_0-NMClient-1_0 = %{version}
Requires:       typelib-1_0-NetworkManager-1_0 = %{version}
Provides:       %{name}-doc = %{version}
Obsoletes:      %{name}-doc < %{version}

%description devel
This package contains various headers accessing some NetworkManager
functionality from applications.

%package -n libnm0
Summary:        Convenience library for clients of NetworkManager
Group:          System/Libraries

%description -n libnm0
This package contains the libraries that make it easier to use some
Network Manager functionality from applications that use glib.

%package -n libnm-util2
Summary:        Convenience library for clients of NetworkManager
Group:          System/Libraries
%if %{with_cacert_patch}
Provides:       NetworkManager(cacert-patch)
%endif

%description -n libnm-util2
This package contains the libraries that make it easier to use some
Network Manager functionality from applications that use glib.

%package -n libnm-glib4
Summary:        Convenience library for clients of NetworkManager
Group:          System/Libraries
Provides:       %{name}-glib = %{version}
Obsoletes:      %{name}-glib < %{version}

%description -n libnm-glib4
This package contains the libraries that make it easier to use some
Network Manager functionality from applications that use glib.

%package -n libnm-glib-vpn1
Summary:        Convenience library for NetworkManager VPN plugins
Group:          System/Libraries

%description -n libnm-glib-vpn1
This package contains the libraries that make it easier to use some
Network Manager functionality from applications that use glib.

%package -n typelib-1_0-NetworkManager-1_0
Summary:        Convenience library for clients of NetworkManager -- Introspection bindings
Group:          System/Libraries

%description -n typelib-1_0-NetworkManager-1_0
This package contains the gi-bindings that make it easier to use some
Network Manager functionality from applications that use glib.

This package provides the GObject Introspection bindings for the
NetworkManager library.

%package -n typelib-1_0-NM-1_0
Summary:        Convenience library for clients of NetworkManager -- Introspection bindings
Group:          System/Libraries

%description -n typelib-1_0-NM-1_0
This package contains the gi-bindings that make it easier to use some
Network Manager functionality from applications that use glib.

This package provides the GObject Introspection bindings for the
NetworkManager library.

%package -n typelib-1_0-NMClient-1_0
Summary:        Convenience library for clients of NetworkManager -- Introspection bindings
Group:          System/Libraries

%description -n typelib-1_0-NMClient-1_0
This package contains the gi-bindings that make it easier to use some
Network Manager functionality from applications that use glib.

This package provides the GObject Introspection bindings for the
NetworkManager library.

%package branding-upstream
Summary:        Default upstream configuration for %{_sysconfdir}/NetworkManager/NetworkManager.conf
Group:          Productivity/Networking/System
Requires:       NetworkManager = %{version}
Supplements:    packageand(NetworkManager:branding-upstream)
Conflicts:      NetworkManager-branding
Provides:       NetworkManager-branding = %{version}
BuildArch:      noarch

%description branding-upstream
This package provides the default upstream configuration for
%{_sysconfdir}/NetworkManager/NetworkManager.conf. Specifically,
it is not configured for connection checking against
http://conncheck.opensuse.org. For, the version with connection
checking, install %{name}-branding-openSUSE.

%lang_package

%prep
%setup -q
translation-update-upstream
%patch0 -p1
%if %{with_cacert_patch}
%patch1 -p1
%endif
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1

%build
NOCONFIGURE=1 ./autogen.sh
pppddir=`ls -1d %{_libdir}/pppd/2*`
test -n "$pppddir" || exit 1
export CFLAGS="%{optflags} -fno-strict-aliasing"
export PYTHON=%{_bindir}/python3
%configure \
    --disable-silent-rules \
    --with-hostname-persist=suse \
    --enable-ld-gc \
    --disable-static \
    --with-crypto=nss \
    --enable-gtk-doc \
    --enable-json-validation \
    --with-tests=yes \
    --with-netconfig=yes \
    --with-config-dns-rc-manager-default=netconfig \
    --enable-more-warnings=no \
    --with-pppd-plugin-dir=$pppddir \
    --with-dhclient=/sbin/dhclient \
    --with-dhcpcd=no \
    --with-udev-dir=%{_udevdir} \
    --with-modem-manager-1 \
    --enable-concheck \
    --enable-wifi=yes \
    --with-nmtui \
    --with-session-tracking=systemd \
    --with-suspend-resume=systemd
# Fail if netconfig was not detected. Avoids future occurences of bnc#817592
if grep "with_netconfig='no'" config.log; then
  print netconfig support was not found -- BUILD ABORTED
  false
fi
make %{?_smp_mflags} nmrundir="/run/%{name}"

%check
make %{?_smp_mflags} check

%install
%make_install nmrundir="/run/%{name}"
find %{buildroot} -type f -name "*.la" -delete -print
%find_lang %{name}
%fdupes %{buildroot}%{_datadir}/gtk-doc/
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_sysconfdir}/NetworkManager/VPN
mkdir -p %{buildroot}%{_localstatedir}/log/
mkdir -p %{buildroot}%{_localstatedir}/lib/NetworkManager
touch %{buildroot}%{_localstatedir}/log/NetworkManager
mkdir -p %{buildroot}%{_sysconfdir}/NetworkManager/system-connections
install -m 0755 %{SOURCE1} %{buildroot}%{_sysconfdir}/NetworkManager/dispatcher.d/
install -m 0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/NetworkManager/
# We package this one as %%doc in the default location.
rm %{buildroot}%{_datadir}/doc/NetworkManager/examples/server.conf

# drop on demand activation, it is handled as a system service
rm -f %{buildroot}%{_datadir}/dbus-1/system-services/org.freedesktop.NetworkManager.service

%pre
%service_add_pre NetworkManager.service
%service_add_pre NetworkManager-dispatcher.service

%post
%service_add_post NetworkManager.service
%service_add_post NetworkManager-dispatcher.service
# enable NetworkManager-dispatcher, it's a DBus enabled service
systemctl enable NetworkManager-dispatcher.service
# bnc#803058:
# sysconfig creates this file while update from openSUSE < 12.3,
# which were using the NETWORKMANAGER=yes/no sysconfig variable.
# When it exists and NETWORKMANAGER were enabled, force enable to
# ensure, the network.service alias link exists points to us.
if [ -f /dev/.sysconfig/network/migrate_nm_variable ] ; then
	. /dev/.sysconfig/network/migrate_nm_variable
	if [ "X$NETWORKMANAGER" = "Xyes" ] ; then
		# In running system "--force enable" is sufficient to
		# create the network.service alias link regardless if
		# the network.service is masked or not.
		# While 12.2 -> 12.3 dist update, enable seems to be
		# unable to create the alias... no idea why. Kick it
		rm -f %{_sysconfdir}/systemd/system/network.service
		%{_bindir}/systemctl --system daemon-reload || :
		%{_bindir}/systemctl --force enable NetworkManager.service || :
		# and create the alias when enable failed to make it.
		if [ ! -e %{_sysconfdir}/systemd/system/network.service ] ; then
			ln -sf	%{_unitdir}/NetworkManager.service \
				%{_sysconfdir}/systemd/system/network.service
		fi
		%{_bindir}/systemctl --system daemon-reload || :
	fi
	rm -f /dev/.sysconfig/network/migrate_nm_variable
fi

%preun
%service_del_preun NetworkManager.service
%service_del_preun NetworkManager-dispatcher.service

%postun
%service_del_postun NetworkManager.service
%service_del_postun NetworkManager-dispatcher.service

%post -n libnm-util2 -p /sbin/ldconfig
%postun -n libnm-util2 -p /sbin/ldconfig
%post -n libnm-glib4 -p /sbin/ldconfig
%postun -n libnm-glib4 -p /sbin/ldconfig
%post -n libnm-glib-vpn1 -p /sbin/ldconfig
%postun -n libnm-glib-vpn1 -p /sbin/ldconfig
%post -n libnm0 -p /sbin/ldconfig
%postun -n libnm0 -p /sbin/ldconfig

%files
%license COPYING
%doc ChangeLog NEWS AUTHORS README CONTRIBUTING TODO data/server.conf
%{_bindir}/nm-online
%{_bindir}/nmcli
%{_bindir}/nmtui*
%{_datadir}/bash-completion/completions/nmcli
%{_sbindir}/NetworkManager
%{_datadir}/dbus-1/system-services/org.freedesktop.nm_dispatcher.service
%{_datadir}/dbus-1/interfaces/org.freedesktop.NetworkManager.*
%{_datadir}/polkit-1/actions/org.freedesktop.NetworkManager.policy
%attr(0700,root,root) %{_localstatedir}/lib/NetworkManager
%{_mandir}/man1/nm-online.1%{ext_man}
%{_mandir}/man1/nmcli.1%{ext_man}
%{_mandir}/man1/nmtui.1%{?ext_man}
%{_mandir}/man1/nmtui-connect.1%{?ext_man}
%{_mandir}/man1/nmtui-edit.1%{?ext_man}
%{_mandir}/man1/nmtui-hostname.1%{?ext_man}
%{_mandir}/man5/nm-settings-keyfile.5%{?ext_man}
%{_mandir}/man5/NetworkManager.conf.5%{?ext_man}
%{_mandir}/man5/nm-settings.5%{?ext_man}
%{_mandir}/man5/nm-system-settings.conf.5%{?ext_man}
%{_mandir}/man7/nm-openvswitch.7%{?ext_man}
%{_mandir}/man7/nmcli-examples.7%{?ext_man}
%{_mandir}/man8/NetworkManager.8%{ext_man}
%dir %{_libdir}/NetworkManager/
%{_libdir}/NetworkManager/libnm-device-plugin-adsl.so
%{_libdir}/NetworkManager/libnm-device-plugin-bluetooth.so
%{_libdir}/NetworkManager/libnm-device-plugin-ovs.so
%{_libdir}/NetworkManager/libnm-device-plugin-wifi.so
%{_libdir}/NetworkManager/libnm-device-plugin-wwan.so
%{_libdir}/NetworkManager/libnm-device-plugin-team.so
%{_libdir}/NetworkManager/libnm-ppp-plugin.so
%{_libdir}/NetworkManager/libnm-settings-plugin-ibft.so
%{_libdir}/NetworkManager/libnm-wwan.so
%dir %{_libdir}/pppd/2.*
%{_libdir}/pppd/2.*/nm-pppd-plugin.*
%{_libexecdir}/nm-dhcp-helper
%{_libexecdir}/nm-dispatcher
%{_libexecdir}/nm-iface-helper
%config %{_sysconfdir}/dbus-1/system.d/org.freedesktop.NetworkManager.conf
%config %{_sysconfdir}/dbus-1/system.d/nm-dispatcher.conf
%dir %{_sysconfdir}/NetworkManager
%dir %{_sysconfdir}/NetworkManager/VPN
%dir %{_sysconfdir}/NetworkManager/dispatcher.d
%dir %{_sysconfdir}/NetworkManager/system-connections
%attr(0755,root,root) %{_sysconfdir}/NetworkManager/dispatcher.d/nfs
%{_unitdir}/NetworkManager.service
%{_unitdir}/NetworkManager-dispatcher.service
%{_unitdir}/NetworkManager-wait-online.service
%dir %{_unitdir}/NetworkManager.service.d
%{_unitdir}/NetworkManager.service.d/NetworkManager-ovs.conf
%{_udevdir}/rules.d/84-nm-drivers.rules
%{_udevdir}/rules.d/85-nm-unmanaged.rules
%ghost %config(noreplace) %{_localstatedir}/log/NetworkManager

%files devel
%{_includedir}/NetworkManager/
%{_includedir}/libnm/
%{_includedir}/libnm-glib/
%{_datadir}/gir-1.0/*.gir
%dir %{_datadir}/vala/vapi
%{_datadir}/vala/vapi/libnm.deps
%{_datadir}/vala/vapi/libnm.vapi
%{_datadir}/vala/vapi/libnm-glib.deps
%{_datadir}/vala/vapi/libnm-glib.vapi
%{_datadir}/vala/vapi/libnm-util.deps
%{_datadir}/vala/vapi/libnm-util.vapi
%{_libdir}/libnm.so
%{_libdir}/libnm-util.so
%{_libdir}/libnm-glib.so
%{_libdir}/libnm-glib-vpn.so
%{_libdir}/pkgconfig/NetworkManager.pc
%{_libdir}/pkgconfig/libnm.pc
%{_libdir}/pkgconfig/libnm-util.pc
%{_libdir}/pkgconfig/libnm-glib.pc
%{_libdir}/pkgconfig/libnm-glib-vpn.pc
%doc %{_datadir}/gtk-doc/html/NetworkManager/
%doc %{_datadir}/gtk-doc/html/libnm/
%doc %{_datadir}/gtk-doc/html/libnm-glib/
%doc %{_datadir}/gtk-doc/html/libnm-util/

%files -n libnm0
%{_libdir}/libnm.so.*

%files -n libnm-util2
%{_libdir}/libnm-util.so.*

%files -n libnm-glib4
%{_libdir}/libnm-glib.so.*

%files -n libnm-glib-vpn1
%{_libdir}/libnm-glib-vpn.so.*

%files -n typelib-1_0-NetworkManager-1_0
%{_libdir}/girepository-1.0/NetworkManager-1.0.typelib

%files -n typelib-1_0-NM-1_0
%{_libdir}/girepository-1.0/NM-1.0.typelib

%files -n typelib-1_0-NMClient-1_0
%{_libdir}/girepository-1.0/NMClient-1.0.typelib

%files lang -f %{name}.lang

%files branding-upstream
%config(noreplace) %{_sysconfdir}/NetworkManager/NetworkManager.conf

%changelog