1 # SPEC file to build NetworkManager for testing. It aims for a similar
2 # configuration as rhel-7.0 and Fedora rawhide
4 # This spec file is not used as is to create official packages for RHEL, Fedora or any
7 # Note that it contains __PLACEHOLDERS__ that will be replaced by the accompanying 'build.sh' script.
10 %global dbus_version 1.1
11 %global dbus_glib_version 0.100
13 %global glib2_version 2.32.0
14 %global wireless_tools_version 1:28-0pre9
15 %global libnl3_version 3.2.7
17 %global ppp_version %(rpm -q ppp-devel >/dev/null && rpm -q --qf '%%{version}' ppp-devel || echo -n bad)
19 %global snapshot %{nil}
20 %global git_sha __COMMIT__
21 %global rpm_version __VERSION__
22 %global real_version __VERSION__
23 %global release_version __RELEASE_VERSION__
24 %global epoch_version 1
26 %global obsoletes_nmver 1:0.9.9.95-1
28 %global systemd_dir %{_prefix}/lib/systemd/system
29 %global nmlibdir %{_prefix}/lib/%{name}
31 %global _hardened_build 1
33 %global git_sha_version %{?git_sha:.%{git_sha}}
35 ###############################################################################
39 %global default_with_bluetooth 1
40 %global default_with_wwan 1
42 # ModemManager on Fedora < 20 too old for Bluetooth && wwan
43 %if (0%{?fedora} && 0%{?fedora} < 20)
44 %global default_with_bluetooth 0
45 %global default_with_wwan 0
48 # Bluetooth requires the WWAN plugin
49 %if 0%{?default_with_bluetooth}
50 %global default_with_wwan 1
53 %if 0%{?default_with_bluetooth}
54 %bcond_without bluetooth
59 %if 0%{?default_with_wwan}
65 %if (0%{?fedora} && 0%{?fedora} <= 19)
74 %bcond_without regen_docs
78 ###############################################################################
80 %if %{with bluetooth} || (%{with wwan} && (0%{?rhel} || (0%{?fedora} && 0%{?fedora} > 19)))
81 %global with_modem_manager_1 1
83 %global with_modem_manager_1 0
86 ###############################################################################
89 Summary: Network connection manager and user applications
90 Epoch: %{epoch_version}
91 Version: %{rpm_version}
92 Release: %{release_version}%{snapshot}%{git_sha_version}%{?dist}
93 Group: System Environment/Base
95 URL: http://www.gnome.org/projects/NetworkManager/
98 Source1: NetworkManager.conf
99 Source2: 00-server.conf
100 Source3: 20-connectivity-fedora.conf
102 #Patch1: 0001-some.patch
104 Requires(post): systemd
105 Requires(preun): systemd
106 Requires(postun): systemd
108 Requires: dbus >= %{dbus_version}
109 Requires: glib2 >= %{glib2_version}
111 Requires: dhclient >= 12:4.1.0
112 Requires: libnl3 >= %{libnl3_version}
113 Requires: %{name}-libnm%{?_isa} = %{epoch}:%{version}-%{release}
114 Requires: ppp = %{ppp_version}
120 Obsoletes: NetworkManager < %{obsoletes_nmver}
121 Obsoletes: NetworkManager-wimax < 1.2
123 Conflicts: NetworkManager-vpnc < 1:0.7.0.99-1
124 Conflicts: NetworkManager-openvpn < 1:0.7.0.99-1
125 Conflicts: NetworkManager-pptp < 1:0.7.0.99-1
126 Conflicts: NetworkManager-openconnect < 0:0.7.0.99-1
127 Conflicts: kde-plasma-networkmanagement < 1:0.9-0.49.20110527git.nm09
129 BuildRequires: dbus-devel >= %{dbus_version}
130 BuildRequires: dbus-glib-devel >= %{dbus_glib_version}
132 BuildRequires: wireless-tools-devel >= %{wireless_tools_version}
134 BuildRequires: glib2-devel >= %{glib2_version}
135 BuildRequires: gobject-introspection-devel >= 0.10.3
136 BuildRequires: gettext-devel
137 BuildRequires: pkgconfig
138 BuildRequires: libnl3-devel >= %{libnl3_version}
139 BuildRequires: perl(XML::Parser)
140 BuildRequires: perl(YAML)
141 BuildRequires: automake autoconf intltool libtool
142 BuildRequires: ppp-devel >= 2.4.5
143 BuildRequires: nss-devel >= 3.11.7
144 BuildRequires: dhclient
145 BuildRequires: readline-devel
146 BuildRequires: audit-libs-devel
147 %if %{with regen_docs}
148 BuildRequires: gtk-doc
150 BuildRequires: libudev-devel
151 BuildRequires: libuuid-devel
152 BuildRequires: libgudev1-devel >= 143
153 BuildRequires: vala-tools
154 BuildRequires: iptables
155 %if %{with bluetooth}
156 BuildRequires: bluez-libs-devel
158 BuildRequires: systemd >= 200-3 systemd-devel
159 BuildRequires: libsoup-devel
160 BuildRequires: libndp-devel >= 1.0
161 %if 0%{?with_modem_manager_1}
162 BuildRequires: ModemManager-glib-devel >= 1.0
165 BuildRequires: newt-devel
167 BuildRequires: /usr/bin/dbus-launch
168 BuildRequires: pygobject3-base
169 BuildRequires: dbus-python
170 BuildRequires: libselinux-devel
171 BuildRequires: polkit-devel
175 NetworkManager is a system service that manages network interfaces and
176 connections based on user or automatic configuration. It supports
177 Ethernet, Bridge, Bond, VLAN, Team, InfiniBand, Wi-Fi, mobile broadband
178 (WWAN), PPPoE and other devices, and supports a variety of different VPN
184 Summary: ADSL device plugin for NetworkManager
185 Group: System Environment/Base
186 Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
187 Obsoletes: NetworkManager < %{obsoletes_nmver}
188 Obsoletes: NetworkManager-atm
191 This package contains NetworkManager support for ADSL devices.
195 %if %{with bluetooth}
197 Summary: Bluetooth device plugin for NetworkManager
198 Group: System Environment/Base
199 Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
200 Requires: NetworkManager-wwan
201 Requires: bluez >= 4.101-5
202 Obsoletes: NetworkManager < %{obsoletes_nmver}
203 Obsoletes: NetworkManager-bt
205 %description bluetooth
206 This package contains NetworkManager support for Bluetooth devices.
212 Summary: Team device plugin for NetworkManager
213 Group: System Environment/Base
214 BuildRequires: teamd-devel
215 Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
216 Obsoletes: NetworkManager < %{obsoletes_nmver}
217 # Team was split from main NM binary between 0.9.10 and 1.0
218 Obsoletes: NetworkManager < 1.0.0
221 This package contains NetworkManager support for team devices.
227 Summary: Wifi plugin for NetworkManager
228 Group: System Environment/Base
229 Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
230 Requires: wpa_supplicant >= 1:1.1
231 Obsoletes: NetworkManager < %{obsoletes_nmver}
234 This package contains NetworkManager support for Wifi and OLPC devices.
240 Summary: Mobile broadband device plugin for NetworkManager
241 Group: System Environment/Base
242 Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
243 Requires: ModemManager
244 Obsoletes: NetworkManager < %{obsoletes_nmver}
247 This package contains NetworkManager support for mobile broadband (WWAN)
253 Summary: Libraries for adding NetworkManager support to applications (old API).
254 Group: Development/Libraries
255 Requires: dbus >= %{dbus_version}
256 Requires: dbus-glib >= %{dbus_glib_version}
259 This package contains the libraries that make it easier to use some
260 NetworkManager functionality from applications that use glib. This is
261 the older NetworkManager API. See also NetworkManager-libnm.
265 Summary: Header files for adding NetworkManager support to applications (old API).
266 Group: Development/Libraries
267 Requires: %{name}-glib%{?_isa} = %{epoch}:%{version}-%{release}
268 Requires: glib2-devel
270 Requires: dbus-glib-devel >= %{dbus_glib_version}
271 Provides: %{name}-devel = %{epoch}:%{version}-%{release}
272 Provides: %{name}-devel%{?_isa} = %{epoch}:%{version}-%{release}
273 Obsoletes: %{name}-devel < %{epoch}:%{version}-%{release}
275 %description glib-devel
276 This package contains the header and pkg-config files for development
277 applications using NetworkManager functionality from applications that
279 This is the older NetworkManager API. See also NetworkManager-libnm-devel.
283 Summary: Libraries for adding NetworkManager support to applications (new API).
284 Group: Development/Libraries
287 This package contains the libraries that make it easier to use some
288 NetworkManager functionality from applications. This is the new
289 NetworkManager API. See also NetworkManager-glib.
293 Summary: Header files for adding NetworkManager support to applications (new API).
294 Group: Development/Libraries
295 Requires: %{name}-libnm%{?_isa} = %{epoch}:%{version}-%{release}
296 Requires: glib2-devel
299 %description libnm-devel
300 This package contains the header and pkg-config files for development
301 applications using NetworkManager functionality from applications. This
302 is the new NetworkManager API. See also NetworkManager-glib-devel.
305 %package config-connectivity-fedora
306 Summary: NetworkManager config file for connectivity checking via Fedora servers
307 Group: System Environment/Base
309 %description config-connectivity-fedora
310 This adds a NetworkManager configuration file to enable connectivity checking
311 via Fedora infrastructure.
313 %package config-server
314 Summary: NetworkManager config file for "server-like" defaults
315 Group: System Environment/Base
317 %description config-server
318 This adds a NetworkManager configuration file to make it behave more
319 like the old "network" service. In particular, it stops NetworkManager
320 from automatically running DHCP on unconfigured ethernet devices, and
321 allows connections with static IP addresses to be brought up even on
322 ethernet devices with no carrier.
324 This package is intended to be installed by default for server
329 Summary: NetworkManager curses-based UI
330 Group: System Environment/Base
331 Requires: %{name} = %{epoch}:%{version}-%{release}
332 Requires: %{name}-libnm%{?_isa} = %{epoch}:%{version}-%{release}
335 This adds a curses-based "TUI" (Text User Interface) to
336 NetworkManager, to allow performing some of the operations supported
337 by nm-connection-editor and nm-applet in a non-graphical environment.
341 %setup -q -n NetworkManager-%{real_version}
347 autoreconf --install --force
348 intltoolize --automake --copy --force
351 --with-dhclient=yes \
354 --enable-more-warnings=error \
356 --with-more-logging \
357 --with-more-asserts=10000 \
360 --with-libaudit=yes-disabled-by-default \
361 %if 0%{?with_modem_manager_1}
362 --with-modem-manager-1=yes \
364 --with-modem-manager-1=no \
377 %if %{with regen_docs}
383 --enable-teamdctl=yes \
385 --enable-teamdctl=no \
388 --enable-polkit=yes \
389 --enable-polkit-agent \
390 --enable-modify-system=yes \
392 --with-session-tracking=systemd \
393 --with-suspend-resume=systemd \
394 --with-systemdsystemunitdir=%{systemd_dir} \
395 --with-system-ca-path=/etc/pki/tls/cert.pem \
398 --enable-ifcfg-rh=yes \
399 --with-system-libndp=yes \
400 --with-pppd-plugin-dir=%{_libdir}/pppd/%{ppp_version} \
401 --with-dist-version=%{version}-%{release} \
402 --with-setting-plugins-default='ifcfg-rh,ibft'
408 make install DESTDIR=%{buildroot}
410 cp %{SOURCE1} %{buildroot}%{_sysconfdir}/%{name}/
412 mkdir -p %{buildroot}%{_sysconfdir}/%{name}/conf.d
413 mkdir -p %{buildroot}%{nmlibdir}/conf.d
414 mkdir -p %{buildroot}%{nmlibdir}/VPN
415 cp %{SOURCE2} %{buildroot}%{nmlibdir}/conf.d/
416 cp %{SOURCE3} %{buildroot}%{nmlibdir}/conf.d/
418 # create a VPN directory
419 mkdir -p %{buildroot}%{_sysconfdir}/NetworkManager/VPN
421 # create a keyfile plugin system settings directory
422 mkdir -p %{buildroot}%{_sysconfdir}/NetworkManager/system-connections
424 # create a dnsmasq.d directory
425 mkdir -p %{buildroot}%{_sysconfdir}/NetworkManager/dnsmasq.d
426 mkdir -p %{buildroot}%{_sysconfdir}/NetworkManager/dnsmasq-shared.d
428 # create dispatcher directories
429 mkdir -p %{buildroot}%{_sysconfdir}/%{name}/dispatcher.d
430 mkdir -p %{buildroot}%{_sysconfdir}/%{name}/dispatcher.d/pre-up.d
431 mkdir -p %{buildroot}%{_sysconfdir}/%{name}/dispatcher.d/pre-down.d
432 mkdir -p %{buildroot}%{_sysconfdir}/%{name}/dispatcher.d/no-wait.d
433 cp examples/dispatcher/10-ifcfg-rh-routes.sh %{buildroot}%{_sysconfdir}/%{name}/dispatcher.d/
434 ln -s ../no-wait.d/10-ifcfg-rh-routes.sh %{buildroot}%{_sysconfdir}/%{name}/dispatcher.d/pre-up.d/
435 ln -s ../10-ifcfg-rh-routes.sh %{buildroot}%{_sysconfdir}/%{name}/dispatcher.d/no-wait.d/
437 mkdir -p %{buildroot}%{_datadir}/gnome-vpn-properties
439 mkdir -p %{buildroot}%{_localstatedir}/lib/NetworkManager
443 rm -f %{buildroot}%{_libdir}/*.la
444 rm -f %{buildroot}%{_libdir}/pppd/%{ppp_version}/*.la
445 rm -f %{buildroot}%{_libdir}/NetworkManager/*.la
447 # Ensure the documentation timestamps are constant to avoid multilib conflicts
448 find %{buildroot}%{_datadir}/gtk-doc -exec touch --reference configure.ac '{}' \+
450 %if 0%{?__debug_package}
451 mkdir -p %{buildroot}%{_prefix}/src/debug/NetworkManager-%{real_version}
452 cp valgrind.suppressions %{buildroot}%{_prefix}/src/debug/NetworkManager-%{real_version}
463 /usr/bin/udevadm control --reload-rules || :
464 /usr/bin/udevadm trigger --subsystem-match=net || :
466 %systemd_post NetworkManager.service NetworkManager-wait-online.service NetworkManager-dispatcher.service
469 if [ $1 -eq 0 ]; then
470 # Package removal, not upgrade
471 /bin/systemctl --no-reload disable NetworkManager.service >/dev/null 2>&1 || :
473 # Don't kill networking entirely just on package remove
474 #/bin/systemctl stop NetworkManager.service >/dev/null 2>&1 || :
476 %systemd_preun NetworkManager-wait-online.service NetworkManager-dispatcher.service
479 /usr/bin/udevadm control --reload-rules || :
480 /usr/bin/udevadm trigger --subsystem-match=net || :
485 %post glib -p /sbin/ldconfig
486 %postun glib -p /sbin/ldconfig
488 %post libnm -p /sbin/ldconfig
489 %postun libnm -p /sbin/ldconfig
492 %files -f %{name}.lang
493 %{_sysconfdir}/dbus-1/system.d/org.freedesktop.NetworkManager.conf
494 %{_sysconfdir}/dbus-1/system.d/nm-dispatcher.conf
495 %{_sysconfdir}/dbus-1/system.d/nm-ifcfg-rh.conf
498 %{_datadir}/bash-completion/completions/nmcli
499 %dir %{_sysconfdir}/%{name}/
500 %dir %{_sysconfdir}/%{name}/dispatcher.d
501 %{_sysconfdir}/%{name}/dispatcher.d/10-ifcfg-rh-routes.sh
502 %dir %{_sysconfdir}/%{name}/dispatcher.d/pre-down.d
503 %dir %{_sysconfdir}/%{name}/dispatcher.d/pre-up.d
504 %dir %{_sysconfdir}/%{name}/dispatcher.d/no-wait.d
505 %{_sysconfdir}/%{name}/dispatcher.d/no-wait.d/10-ifcfg-rh-routes.sh
506 %{_sysconfdir}/%{name}/dispatcher.d/pre-up.d/10-ifcfg-rh-routes.sh
507 %dir %{_sysconfdir}/%{name}/dnsmasq.d
508 %dir %{_sysconfdir}/%{name}/dnsmasq-shared.d
509 %dir %{_sysconfdir}/%{name}/VPN
510 %config(noreplace) %{_sysconfdir}/%{name}/NetworkManager.conf
512 %{_libexecdir}/nm-dhcp-helper
513 %{_libexecdir}/nm-dispatcher
514 %{_libexecdir}/nm-iface-helper
515 %dir %{_libdir}/NetworkManager
516 %{_libdir}/NetworkManager/libnm-settings-plugin*.so
518 %exclude %{_mandir}/man1/nmtui*
520 %dir %{_sysconfdir}/%{name}
521 %dir %{_sysconfdir}/%{name}/conf.d
523 %dir %{nmlibdir}/conf.d
528 %dir %{_localstatedir}/lib/NetworkManager
529 %dir %{_sysconfdir}/NetworkManager/system-connections
530 %{_datadir}/dbus-1/system-services/org.freedesktop.NetworkManager.service
531 %{_datadir}/dbus-1/system-services/org.freedesktop.nm_dispatcher.service
532 %{_libdir}/pppd/%{ppp_version}/nm-pppd-plugin.so
533 %{_datadir}/polkit-1/actions/*.policy
534 %{_prefix}/lib/udev/rules.d/*.rules
536 %{systemd_dir}/NetworkManager.service
537 %{systemd_dir}/NetworkManager-wait-online.service
538 %{systemd_dir}/NetworkManager-dispatcher.service
539 %{systemd_dir}/network-online.target.wants/NetworkManager-wait-online.service
540 %dir %{_datadir}/doc/NetworkManager/examples
541 %{_datadir}/doc/NetworkManager/examples/server.conf
542 %doc NEWS AUTHORS README CONTRIBUTING TODO
547 %{_libdir}/%{name}/libnm-device-plugin-adsl.so
549 %exclude %{_libdir}/%{name}/libnm-device-plugin-adsl.so
552 %if %{with bluetooth}
554 %{_libdir}/%{name}/libnm-device-plugin-bluetooth.so
559 %{_libdir}/%{name}/libnm-device-plugin-team.so
564 %{_libdir}/%{name}/libnm-device-plugin-wifi.so
569 %{_libdir}/%{name}/libnm-device-plugin-wwan.so
570 %{_libdir}/%{name}/libnm-wwan.so
574 %{_libdir}/libnm-glib.so.*
575 %{_libdir}/libnm-glib-vpn.so.*
576 %{_libdir}/libnm-util.so.*
577 %{_libdir}/girepository-1.0/NetworkManager-1.0.typelib
578 %{_libdir}/girepository-1.0/NMClient-1.0.typelib
581 %doc ChangeLog docs/api/html/*
582 %dir %{_includedir}/libnm-glib
583 %dir %{_includedir}/%{name}
584 %{_includedir}/libnm-glib/*.h
585 %{_includedir}/%{name}/%{name}.h
586 %{_includedir}/%{name}/NetworkManagerVPN.h
587 %{_includedir}/%{name}/nm-setting*.h
588 %{_includedir}/%{name}/nm-connection.h
589 %{_includedir}/%{name}/nm-utils-enum-types.h
590 %{_includedir}/%{name}/nm-utils.h
591 %{_includedir}/%{name}/nm-version.h
592 %{_includedir}/%{name}/nm-version-macros.h
593 %{_libdir}/pkgconfig/libnm-glib.pc
594 %{_libdir}/pkgconfig/libnm-glib-vpn.pc
595 %{_libdir}/pkgconfig/libnm-util.pc
596 %{_libdir}/pkgconfig/%{name}.pc
597 %{_libdir}/libnm-glib.so
598 %{_libdir}/libnm-glib-vpn.so
599 %{_libdir}/libnm-util.so
600 %{_datadir}/gir-1.0/NetworkManager-1.0.gir
601 %{_datadir}/gir-1.0/NMClient-1.0.gir
602 %dir %{_datadir}/gtk-doc/html/libnm-glib
603 %{_datadir}/gtk-doc/html/libnm-glib/*
604 %dir %{_datadir}/gtk-doc/html/libnm-util
605 %{_datadir}/gtk-doc/html/libnm-util/*
606 %dir %{_datadir}/gtk-doc/html/NetworkManager
607 %{_datadir}/gtk-doc/html/NetworkManager/*
608 %{_datadir}/vala/vapi/*.deps
609 %{_datadir}/vala/vapi/*.vapi
612 %{_libdir}/libnm.so.*
613 %{_libdir}/girepository-1.0/NM-1.0.typelib
616 %doc ChangeLog docs/api/html/*
617 %dir %{_includedir}/libnm
618 %{_includedir}/libnm/*.h
619 %{_libdir}/pkgconfig/libnm.pc
621 %{_datadir}/gir-1.0/NM-1.0.gir
622 %dir %{_datadir}/gtk-doc/html/libnm
623 %{_datadir}/gtk-doc/html/libnm/*
625 %files config-connectivity-fedora
627 %dir %{nmlibdir}/conf.d
628 %{nmlibdir}/conf.d/20-connectivity-fedora.conf
632 %dir %{nmlibdir}/conf.d
633 %{nmlibdir}/conf.d/00-server.conf
638 %{_bindir}/nmtui-edit
639 %{_bindir}/nmtui-connect
640 %{_bindir}/nmtui-hostname
641 %{_mandir}/man1/nmtui*