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 %if %{with regen_docs}
348 # back up pristine docs and use them instead of generated ones, which make
349 # multilib unhappy due to different timestamps in the generated content
353 autoreconf --install --force
354 intltoolize --automake --copy --force
357 --with-dhclient=yes \
360 --enable-more-warnings=error \
362 --with-more-logging \
363 --with-more-asserts=10000 \
366 --with-libaudit=yes-disabled-by-default \
367 %if 0%{?with_modem_manager_1}
368 --with-modem-manager-1=yes \
370 --with-modem-manager-1=no \
383 %if %{with regen_docs}
389 --enable-teamdctl=yes \
391 --enable-teamdctl=no \
394 --enable-polkit=yes \
395 --enable-polkit-agent \
396 --enable-modify-system=yes \
398 --with-session-tracking=systemd \
399 --with-suspend-resume=systemd \
400 --with-systemdsystemunitdir=%{systemd_dir} \
401 --with-system-ca-path=/etc/pki/tls/cert.pem \
404 --enable-ifcfg-rh=yes \
405 --with-system-libndp=yes \
406 --with-pppd-plugin-dir=%{_libdir}/pppd/%{ppp_version} \
407 --with-dist-version=%{version}-%{release} \
408 --with-setting-plugins-default='ifcfg-rh,ibft'
414 make install DESTDIR=%{buildroot}
416 cp %{SOURCE1} %{buildroot}%{_sysconfdir}/%{name}/
418 mkdir -p %{buildroot}%{_sysconfdir}/%{name}/conf.d
419 mkdir -p %{buildroot}%{nmlibdir}/conf.d
420 mkdir -p %{buildroot}%{nmlibdir}/VPN
421 cp %{SOURCE2} %{buildroot}%{nmlibdir}/conf.d/
422 cp %{SOURCE3} %{buildroot}%{nmlibdir}/conf.d/
424 # create a VPN directory
425 mkdir -p %{buildroot}%{_sysconfdir}/NetworkManager/VPN
427 # create a keyfile plugin system settings directory
428 mkdir -p %{buildroot}%{_sysconfdir}/NetworkManager/system-connections
430 # create a dnsmasq.d directory
431 mkdir -p %{buildroot}%{_sysconfdir}/NetworkManager/dnsmasq.d
432 mkdir -p %{buildroot}%{_sysconfdir}/NetworkManager/dnsmasq-shared.d
434 # create dispatcher directories
435 mkdir -p %{buildroot}%{_sysconfdir}/%{name}/dispatcher.d
436 mkdir -p %{buildroot}%{_sysconfdir}/%{name}/dispatcher.d/pre-up.d
437 mkdir -p %{buildroot}%{_sysconfdir}/%{name}/dispatcher.d/pre-down.d
438 mkdir -p %{buildroot}%{_sysconfdir}/%{name}/dispatcher.d/no-wait.d
439 cp examples/dispatcher/10-ifcfg-rh-routes.sh %{buildroot}%{_sysconfdir}/%{name}/dispatcher.d/
440 ln -s ../no-wait.d/10-ifcfg-rh-routes.sh %{buildroot}%{_sysconfdir}/%{name}/dispatcher.d/pre-up.d/
441 ln -s ../10-ifcfg-rh-routes.sh %{buildroot}%{_sysconfdir}/%{name}/dispatcher.d/no-wait.d/
443 mkdir -p %{buildroot}%{_datadir}/gnome-vpn-properties
445 mkdir -p %{buildroot}%{_localstatedir}/lib/NetworkManager
449 rm -f %{buildroot}%{_libdir}/*.la
450 rm -f %{buildroot}%{_libdir}/pppd/%{ppp_version}/*.la
451 rm -f %{buildroot}%{_libdir}/NetworkManager/*.la
453 %if %{with regen_docs}
454 # install the pristine docs
455 cp ORIG-docs/libnm-glib/html/* %{buildroot}%{_datadir}/gtk-doc/html/libnm-glib/
456 cp ORIG-docs/libnm-util/html/* %{buildroot}%{_datadir}/gtk-doc/html/libnm-util/
459 %if 0%{?__debug_package}
460 mkdir -p %{buildroot}%{_prefix}/src/debug/NetworkManager-%{real_version}
461 cp valgrind.suppressions %{buildroot}%{_prefix}/src/debug/NetworkManager-%{real_version}
472 /usr/bin/udevadm control --reload-rules || :
473 /usr/bin/udevadm trigger --subsystem-match=net || :
475 %systemd_post NetworkManager.service NetworkManager-wait-online.service NetworkManager-dispatcher.service
478 if [ $1 -eq 0 ]; then
479 # Package removal, not upgrade
480 /bin/systemctl --no-reload disable NetworkManager.service >/dev/null 2>&1 || :
482 # Don't kill networking entirely just on package remove
483 #/bin/systemctl stop NetworkManager.service >/dev/null 2>&1 || :
485 %systemd_preun NetworkManager-wait-online.service NetworkManager-dispatcher.service
488 /usr/bin/udevadm control --reload-rules || :
489 /usr/bin/udevadm trigger --subsystem-match=net || :
494 %post glib -p /sbin/ldconfig
495 %postun glib -p /sbin/ldconfig
497 %post libnm -p /sbin/ldconfig
498 %postun libnm -p /sbin/ldconfig
501 %files -f %{name}.lang
502 %{_sysconfdir}/dbus-1/system.d/org.freedesktop.NetworkManager.conf
503 %{_sysconfdir}/dbus-1/system.d/nm-dispatcher.conf
504 %{_sysconfdir}/dbus-1/system.d/nm-ifcfg-rh.conf
507 %{_datadir}/bash-completion/completions/nmcli
508 %dir %{_sysconfdir}/%{name}/
509 %dir %{_sysconfdir}/%{name}/dispatcher.d
510 %{_sysconfdir}/%{name}/dispatcher.d/10-ifcfg-rh-routes.sh
511 %dir %{_sysconfdir}/%{name}/dispatcher.d/pre-down.d
512 %dir %{_sysconfdir}/%{name}/dispatcher.d/pre-up.d
513 %dir %{_sysconfdir}/%{name}/dispatcher.d/no-wait.d
514 %{_sysconfdir}/%{name}/dispatcher.d/no-wait.d/10-ifcfg-rh-routes.sh
515 %{_sysconfdir}/%{name}/dispatcher.d/pre-up.d/10-ifcfg-rh-routes.sh
516 %dir %{_sysconfdir}/%{name}/dnsmasq.d
517 %dir %{_sysconfdir}/%{name}/dnsmasq-shared.d
518 %dir %{_sysconfdir}/%{name}/VPN
519 %config(noreplace) %{_sysconfdir}/%{name}/NetworkManager.conf
521 %{_libexecdir}/nm-dhcp-helper
522 %{_libexecdir}/nm-dispatcher
523 %{_libexecdir}/nm-iface-helper
524 %dir %{_libdir}/NetworkManager
525 %{_libdir}/NetworkManager/libnm-settings-plugin*.so
527 %exclude %{_mandir}/man1/nmtui*
529 %dir %{_sysconfdir}/%{name}
530 %dir %{_sysconfdir}/%{name}/conf.d
532 %dir %{nmlibdir}/conf.d
537 %dir %{_localstatedir}/lib/NetworkManager
538 %dir %{_sysconfdir}/NetworkManager/system-connections
539 %{_datadir}/dbus-1/system-services/org.freedesktop.NetworkManager.service
540 %{_datadir}/dbus-1/system-services/org.freedesktop.nm_dispatcher.service
541 %{_libdir}/pppd/%{ppp_version}/nm-pppd-plugin.so
542 %{_datadir}/polkit-1/actions/*.policy
543 %{_prefix}/lib/udev/rules.d/*.rules
545 %{systemd_dir}/NetworkManager.service
546 %{systemd_dir}/NetworkManager-wait-online.service
547 %{systemd_dir}/NetworkManager-dispatcher.service
548 %{systemd_dir}/network-online.target.wants/NetworkManager-wait-online.service
549 %dir %{_datadir}/doc/NetworkManager/examples
550 %{_datadir}/doc/NetworkManager/examples/server.conf
551 %doc NEWS AUTHORS README CONTRIBUTING TODO
556 %{_libdir}/%{name}/libnm-device-plugin-adsl.so
558 %exclude %{_libdir}/%{name}/libnm-device-plugin-adsl.so
561 %if %{with bluetooth}
563 %{_libdir}/%{name}/libnm-device-plugin-bluetooth.so
568 %{_libdir}/%{name}/libnm-device-plugin-team.so
573 %{_libdir}/%{name}/libnm-device-plugin-wifi.so
578 %{_libdir}/%{name}/libnm-device-plugin-wwan.so
579 %{_libdir}/%{name}/libnm-wwan.so
583 %{_libdir}/libnm-glib.so.*
584 %{_libdir}/libnm-glib-vpn.so.*
585 %{_libdir}/libnm-util.so.*
586 %{_libdir}/girepository-1.0/NetworkManager-1.0.typelib
587 %{_libdir}/girepository-1.0/NMClient-1.0.typelib
590 %doc ChangeLog docs/api/html/*
591 %dir %{_includedir}/libnm-glib
592 %dir %{_includedir}/%{name}
593 %{_includedir}/libnm-glib/*.h
594 %{_includedir}/%{name}/%{name}.h
595 %{_includedir}/%{name}/NetworkManagerVPN.h
596 %{_includedir}/%{name}/nm-setting*.h
597 %{_includedir}/%{name}/nm-connection.h
598 %{_includedir}/%{name}/nm-utils-enum-types.h
599 %{_includedir}/%{name}/nm-utils.h
600 %{_includedir}/%{name}/nm-version.h
601 %{_includedir}/%{name}/nm-version-macros.h
602 %{_libdir}/pkgconfig/libnm-glib.pc
603 %{_libdir}/pkgconfig/libnm-glib-vpn.pc
604 %{_libdir}/pkgconfig/libnm-util.pc
605 %{_libdir}/pkgconfig/%{name}.pc
606 %{_libdir}/libnm-glib.so
607 %{_libdir}/libnm-glib-vpn.so
608 %{_libdir}/libnm-util.so
609 %{_datadir}/gir-1.0/NetworkManager-1.0.gir
610 %{_datadir}/gir-1.0/NMClient-1.0.gir
611 %dir %{_datadir}/gtk-doc/html/libnm-glib
612 %{_datadir}/gtk-doc/html/libnm-glib/*
613 %dir %{_datadir}/gtk-doc/html/libnm-util
614 %{_datadir}/gtk-doc/html/libnm-util/*
615 %dir %{_datadir}/gtk-doc/html/NetworkManager
616 %{_datadir}/gtk-doc/html/NetworkManager/*
617 %{_datadir}/vala/vapi/*.deps
618 %{_datadir}/vala/vapi/*.vapi
621 %{_libdir}/libnm.so.*
622 %{_libdir}/girepository-1.0/NM-1.0.typelib
625 %doc ChangeLog docs/api/html/*
626 %dir %{_includedir}/libnm
627 %{_includedir}/libnm/*.h
628 %{_libdir}/pkgconfig/libnm.pc
630 %{_datadir}/gir-1.0/NM-1.0.gir
631 %dir %{_datadir}/gtk-doc/html/libnm
632 %{_datadir}/gtk-doc/html/libnm/*
634 %files config-connectivity-fedora
636 %dir %{nmlibdir}/conf.d
637 %{nmlibdir}/conf.d/20-connectivity-fedora.conf
641 %dir %{nmlibdir}/conf.d
642 %{nmlibdir}/conf.d/00-server.conf
647 %{_bindir}/nmtui-edit
648 %{_bindir}/nmtui-connect
649 %{_bindir}/nmtui-hostname
650 %{_mandir}/man1/nmtui*