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 %define dbus_version 1.1
11 %define dbus_glib_version 0.100
13 %define glib2_version 2.32.0
14 %define wireless_tools_version 1:28-0pre9
15 %define libnl3_version 3.2.7
17 %define ppp_version %(rpm -q ppp-devel >/dev/null && rpm -q --qf '%%{version}' ppp-devel || echo -n bad)
19 %define snapshot %{nil}
20 %define git_sha __COMMIT__
21 %define realversion __VERSION__
22 %define release_version __RELEASE_VERSION__
23 %define epoch_version 1
25 %define obsoletes_nmver 1:0.9.9.95-1
35 %define systemd_dir %{_prefix}/lib/systemd/system
36 %define udev_dir %{_prefix}/lib/udev
39 %global with_bluetooth 1
45 # WiMAX still supported on <= F19
46 %if ! 0%{?rhel} && (! 0%{?fedora} || 0%{?fedora} < 20)
50 # ModemManager on Fedora < 20 too old for Bluetooth && wwan
51 %if (0%{?fedora} && 0%{?fedora} < 20)
52 %global with_bluetooth 0
56 # Bluetooth requires the WWAN plugin
57 %if 0%{?with_bluetooth}
61 %if (0%{?fedora} && 0%{?fedora} <= 19)
65 %define with_modem_manager_1 0
66 %if 0%{?with_bluetooth} || (0%{?with_wwan} && (0%{?rhel} || (0%{?fedora} && 0%{?fedora} > 19)))
67 %define with_modem_manager_1 1
70 %global _hardened_build 1
72 %define git_sha_version %(test -n '%{git_sha}' && echo '.%{git_sha}')
75 Summary: Network connection manager and user applications
76 Epoch: %{epoch_version}
77 Version: %{realversion}
78 Release: %{release_version}%{snapshot}%{git_sha_version}%{?dist}
79 Group: System Environment/Base
81 URL: http://www.gnome.org/projects/NetworkManager/
84 Source1: NetworkManager.conf
85 Source2: 00-server.conf
86 Source3: 20-connectivity-fedora.conf
88 #Patch1: 0001-some.patch
90 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
92 %if 0%{?fedora} && 0%{?fedora} < 20
93 Requires(post): chkconfig
94 Requires(preun): chkconfig
96 Requires(post): systemd-sysv
97 Requires(post): systemd
98 Requires(preun): systemd
99 Requires(postun): systemd
101 Requires: dbus >= %{dbus_version}
102 Requires: dbus-glib >= %{dbus_glib_version}
103 Requires: glib2 >= %{glib2_version}
105 Requires: dhclient >= 12:4.1.0
106 Requires: libnl3 >= %{libnl3_version}
107 Requires: %{name}-libnm%{?_isa} = %{epoch}:%{version}-%{release}
108 Requires: ppp = %{ppp_version}
109 Requires: avahi-autoipd
115 Obsoletes: NetworkManager < %{obsoletes_nmver}
117 Conflicts: NetworkManager-vpnc < 1:0.7.0.99-1
118 Conflicts: NetworkManager-openvpn < 1:0.7.0.99-1
119 Conflicts: NetworkManager-pptp < 1:0.7.0.99-1
120 Conflicts: NetworkManager-openconnect < 0:0.7.0.99-1
121 Conflicts: kde-plasma-networkmanagement < 1:0.9-0.49.20110527git.nm09
123 BuildRequires: dbus-devel >= %{dbus_version}
124 BuildRequires: dbus-glib-devel >= %{dbus_glib_version}
126 BuildRequires: wireless-tools-devel >= %{wireless_tools_version}
128 BuildRequires: glib2-devel >= %{glib2_version}
129 BuildRequires: gobject-introspection-devel >= 0.10.3
130 BuildRequires: gettext-devel
131 BuildRequires: /usr/bin/autopoint
132 BuildRequires: pkgconfig
133 BuildRequires: libnl3-devel >= %{libnl3_version}
134 BuildRequires: perl(XML::Parser)
135 BuildRequires: perl(YAML)
136 BuildRequires: automake autoconf intltool libtool
137 BuildRequires: ppp-devel >= 2.4.5
138 BuildRequires: nss-devel >= 3.11.7
139 BuildRequires: dhclient
140 BuildRequires: readline-devel
142 BuildRequires: gtk-doc
144 BuildRequires: libudev-devel
145 BuildRequires: libuuid-devel
146 BuildRequires: libgudev1-devel >= 143
147 BuildRequires: vala-tools
148 BuildRequires: iptables
149 %if 0%{?with_bluetooth} && 0%{?fedora} > 19
150 BuildRequires: bluez-libs-devel
153 BuildRequires: wimax-devel
155 BuildRequires: systemd >= 200-3 systemd-devel
156 BuildRequires: libsoup-devel
157 BuildRequires: libndp-devel >= 1.0
158 %if 0%{?with_modem_manager_1}
159 BuildRequires: ModemManager-glib-devel >= 1.0
162 BuildRequires: newt-devel
164 BuildRequires: /usr/bin/dbus-launch
165 BuildRequires: pygobject3-base
166 BuildRequires: dbus-python
167 BuildRequires: libselinux-devel
168 BuildRequires: polkit-devel
172 NetworkManager is a system service that manages network interfaces and
173 connections based on user or automatic configuration. It supports
174 Ethernet, Bridge, Bond, VLAN, Team, InfiniBand, Wi-Fi, mobile broadband
175 (WWAN), PPPoE and other devices, and supports a variety of different VPN
181 Summary: ADSL device plugin for NetworkManager
182 Group: System Environment/Base
183 Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
184 Obsoletes: NetworkManager < %{obsoletes_nmver}
185 Obsoletes: NetworkManager-atm
188 This package contains NetworkManager support for ADSL devices.
192 %if 0%{?with_bluetooth}
194 Summary: Bluetooth device plugin for NetworkManager
195 Group: System Environment/Base
196 Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
197 Requires: NetworkManager-wwan
198 %if (0%{?fedora} > 19)
199 Requires: bluez >= 5.0
201 Requires: bluez >= 4.101-5
203 Obsoletes: NetworkManager < %{obsoletes_nmver}
204 Obsoletes: NetworkManager-bt
206 %description bluetooth
207 This package contains NetworkManager support for Bluetooth devices.
213 Summary: Team device plugin for NetworkManager
214 Group: System Environment/Base
215 BuildRequires: teamd-devel
216 Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
217 Obsoletes: NetworkManager < %{obsoletes_nmver}
218 # Team was split from main NM binary between 0.9.10 and 1.0
219 Obsoletes: NetworkManager < 1.0.0
222 This package contains NetworkManager support for team devices.
228 Summary: Wifi plugin for NetworkManager
229 Group: System Environment/Base
230 Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
231 Requires: wpa_supplicant >= 1:1.1
232 Obsoletes: NetworkManager < %{obsoletes_nmver}
235 This package contains NetworkManager support for Wifi and OLPC devices.
241 Summary: Mobile broadband device plugin for NetworkManager
242 Group: System Environment/Base
243 Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
244 Requires: ModemManager
245 Obsoletes: NetworkManager < %{obsoletes_nmver}
248 This package contains NetworkManager support for mobile broadband (WWAN) devices.
254 Summary: Intel WiMAX device support for NetworkManager
255 Group: System Environment/Base
257 Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
260 This package contains NetworkManager support for Intel WiMAX mobile broadband
266 Summary: Headers defining the NetworkManager D-Bus APIs
267 Group: Development/Libraries
268 Requires: %{name} = %{epoch}:%{version}-%{release}
269 Requires: dbus-devel >= %{dbus_version}
270 Requires: dbus-glib >= %{dbus_glib_version}
274 This package contains various headers accessing some NetworkManager functionality
279 Summary: Libraries for adding NetworkManager support to applications (old API).
280 Group: Development/Libraries
281 Requires: dbus >= %{dbus_version}
282 Requires: dbus-glib >= %{dbus_glib_version}
285 This package contains the libraries that make it easier to use some NetworkManager
286 functionality from applications that use glib. This is the older NetworkManager API.
287 See also NetworkManager-libnm.
291 Summary: Header files for adding NetworkManager support to applications (old API).
292 Group: Development/Libraries
293 Requires: %{name}-devel%{?_isa} = %{epoch}:%{version}-%{release}
294 Requires: %{name}-glib%{?_isa} = %{epoch}:%{version}-%{release}
295 Requires: glib2-devel
297 Requires: dbus-glib-devel >= %{dbus_glib_version}
299 %description glib-devel
300 This package contains the header and pkg-config files for development applications using
301 NetworkManager functionality from applications that use glib. This is the older
302 NetworkManager API. See also NetworkManager-libnm-devel.
306 Summary: Libraries for adding NetworkManager support to applications (new API).
307 Group: Development/Libraries
310 This package contains the libraries that make it easier to use some NetworkManager
311 functionality from applications. This is the new NetworkManager API. See also
316 Summary: Header files for adding NetworkManager support to applications (new API).
317 Group: Development/Libraries
318 Requires: %{name}-devel%{?_isa} = %{epoch}:%{version}-%{release}
319 Requires: %{name}-libnm%{?_isa} = %{epoch}:%{version}-%{release}
320 Requires: glib2-devel
323 %description libnm-devel
324 This package contains the header and pkg-config files for development applications using
325 NetworkManager functionality from applications. This is the new NetworkManager API.
326 See also NetworkManager-glib-devel.
329 %package config-connectivity-fedora
330 Summary: NetworkManager config file for connectivity checking via Fedora servers
331 Group: System Environment/Base
333 %description config-connectivity-fedora
334 This adds a NetworkManager configuration file to enable connectivity checking
335 via Fedora infrastructure.
337 %package config-server
338 Summary: NetworkManager config file for "server-like" defaults
339 Group: System Environment/Base
341 %description config-server
342 This adds a NetworkManager configuration file to make it behave more
343 like the old "network" service. In particular, it stops NetworkManager
344 from automatically running DHCP on unconfigured ethernet devices, and
345 allows connections with static IP addresses to be brought up even on
346 ethernet devices with no carrier.
348 This package is intended to be installed by default for server
353 Summary: NetworkManager curses-based UI
354 Group: System Environment/Base
355 Requires: %{name} = %{epoch}:%{version}-%{release}
356 Requires: %{name}-libnm%{?_isa} = %{epoch}:%{version}-%{release}
359 This adds a curses-based "TUI" (Text User Interface) to
360 NetworkManager, to allow performing some of the operations supported
361 by nm-connection-editor and nm-applet in a non-graphical environment.
365 %setup -q -n NetworkManager-%{realversion}
367 #%patch1 -p1 -b .0001-some.orig
372 # back up pristine docs and use them instead of generated ones, which make
373 # multilib unhappy due to different timestamps in the generated content
374 %{__cp} -R docs ORIG-docs
381 --with-dhclient=yes \
384 --enable-more-warnings=error \
386 %if 0%{?with_modem_manager_1}
387 --with-modem-manager-1=yes \
389 --with-modem-manager-1=no \
408 --enable-teamdctl=yes \
410 --enable-teamdctl=no \
413 --enable-polkit=yes \
414 --enable-polkit-agent \
415 --enable-modify-system=yes \
417 --with-session-tracking=systemd \
418 --with-suspend-resume=systemd \
419 --with-systemdsystemunitdir=%{systemd_dir} \
420 --with-udev-dir=%{udev_dir} \
421 --with-system-ca-path=/etc/pki/tls/certs \
424 --enable-ifcfg-rh=yes \
425 --with-system-libndp=yes \
426 --with-pppd-plugin-dir=%{_libdir}/pppd/%{ppp_version} \
427 --with-dist-version=%{version}-%{release} \
428 --with-setting-plugins-default='ifcfg-rh,ibft'
433 %{__rm} -rf $RPM_BUILD_ROOT
436 make install DESTDIR=$RPM_BUILD_ROOT
438 %{__cp} %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/
440 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/conf.d
441 %{__cp} %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/conf.d
442 %{__cp} %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/conf.d
444 # create a VPN directory
445 %{__mkdir_p} $RPM_BUILD_ROOT%{_sysconfdir}/NetworkManager/VPN
447 # create a keyfile plugin system settings directory
448 %{__mkdir_p} $RPM_BUILD_ROOT%{_sysconfdir}/NetworkManager/system-connections
450 # create a dnsmasq.d directory
451 %{__mkdir_p} $RPM_BUILD_ROOT%{_sysconfdir}/NetworkManager/dnsmasq.d
453 # create dispatcher directories
454 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/dispatcher.d
455 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/dispatcher.d/pre-up.d
456 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/dispatcher.d/pre-down.d
457 %{__cp} examples/dispatcher/10-ifcfg-rh-routes.sh $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/dispatcher.d/pre-up.d
459 %{__mkdir_p} $RPM_BUILD_ROOT%{_datadir}/gnome-vpn-properties
461 %{__mkdir_p} $RPM_BUILD_ROOT%{_localstatedir}/lib/NetworkManager
465 %{__rm} -f $RPM_BUILD_ROOT%{_libdir}/*.la
466 %{__rm} -f $RPM_BUILD_ROOT%{_libdir}/pppd/%{ppp_version}/*.la
467 %{__rm} -f $RPM_BUILD_ROOT%{_libdir}/NetworkManager/*.la
470 # install the pristine docs
471 %{__cp} ORIG-docs/libnm-glib/html/* $RPM_BUILD_ROOT%{_datadir}/gtk-doc/html/libnm-glib/
472 %{__cp} ORIG-docs/libnm-util/html/* $RPM_BUILD_ROOT%{_datadir}/gtk-doc/html/libnm-util/
476 %{__rm} -rf $RPM_BUILD_ROOT
484 %systemd_post NetworkManager.service NetworkManager-wait-online.service NetworkManager-dispatcher.service
487 if [ $1 -eq 0 ]; then
488 # Package removal, not upgrade
489 /bin/systemctl --no-reload disable NetworkManager.service >/dev/null 2>&1 || :
491 # Don't kill networking entirely just on package remove
492 #/bin/systemctl stop NetworkManager.service >/dev/null 2>&1 || :
494 %systemd_preun NetworkManager-wait-online.service NetworkManager-dispatcher.service
500 %post glib -p /sbin/ldconfig
501 %postun glib -p /sbin/ldconfig
504 %files -f %{name}.lang
505 %defattr(-,root,root,0755)
506 %doc COPYING NEWS AUTHORS README CONTRIBUTING TODO
507 %{_sysconfdir}/dbus-1/system.d/org.freedesktop.NetworkManager.conf
508 %{_sysconfdir}/dbus-1/system.d/nm-avahi-autoipd.conf
509 %{_sysconfdir}/dbus-1/system.d/nm-dispatcher.conf
510 %{_sysconfdir}/dbus-1/system.d/nm-ifcfg-rh.conf
513 %{_datadir}/bash-completion/completions/nmcli
514 %dir %{_sysconfdir}/%{name}/
515 %dir %{_sysconfdir}/%{name}/dispatcher.d
516 %dir %{_sysconfdir}/%{name}/dispatcher.d/pre-down.d
517 %dir %{_sysconfdir}/%{name}/dispatcher.d/pre-up.d
518 %{_sysconfdir}/%{name}/dispatcher.d/pre-up.d/10-ifcfg-rh-routes.sh
519 %dir %{_sysconfdir}/%{name}/dnsmasq.d
520 %dir %{_sysconfdir}/%{name}/VPN
521 %config(noreplace) %{_sysconfdir}/%{name}/NetworkManager.conf
523 %{_libexecdir}/nm-dhcp-helper
524 %{_libexecdir}/nm-avahi-autoipd.action
525 %{_libexecdir}/nm-dispatcher
526 %{_libexecdir}/nm-iface-helper
527 %dir %{_libdir}/NetworkManager
528 %{_libdir}/NetworkManager/libnm-settings-plugin*.so
530 %exclude %{_mandir}/man1/nmtui*
535 %dir %{_localstatedir}/lib/NetworkManager
536 %dir %{_sysconfdir}/NetworkManager/system-connections
537 %{_datadir}/dbus-1/system-services/org.freedesktop.NetworkManager.service
538 %{_datadir}/dbus-1/system-services/org.freedesktop.nm_dispatcher.service
539 %{_libdir}/pppd/%{ppp_version}/nm-pppd-plugin.so
540 %{_datadir}/polkit-1/actions/*.policy
541 %{udev_dir}/rules.d/*.rules
543 %{systemd_dir}/NetworkManager.service
544 %{systemd_dir}/NetworkManager-wait-online.service
545 %{systemd_dir}/NetworkManager-dispatcher.service
546 %{systemd_dir}/network-online.target.wants/NetworkManager-wait-online.service
547 %dir %{_datadir}/doc/NetworkManager/examples
548 %{_datadir}/doc/NetworkManager/examples/server.conf
552 %defattr(-,root,root,0755)
553 %{_libdir}/%{name}/libnm-device-plugin-adsl.so
555 %exclude %{_libdir}/%{name}/libnm-device-plugin-adsl.so
558 %if 0%{?with_bluetooth}
560 %defattr(-,root,root,0755)
561 %{_libdir}/%{name}/libnm-device-plugin-bluetooth.so
566 %defattr(-,root,root,0755)
567 %{_libdir}/%{name}/libnm-device-plugin-team.so
572 %defattr(-,root,root,0755)
573 %{_libdir}/%{name}/libnm-device-plugin-wifi.so
575 %exclude %{_libdir}/%{name}/libnm-device-plugin-wifi.so
580 %defattr(-,root,root,0755)
581 %{_libdir}/%{name}/libnm-device-plugin-wwan.so
582 %{_libdir}/%{name}/libnm-wwan.so
587 %defattr(-,root,root,0755)
588 %{_libdir}/%{name}/libnm-device-plugin-wimax.so
592 %defattr(-,root,root,0755)
593 %doc ChangeLog docs/api/html/*
594 %dir %{_includedir}/%{name}
595 %{_includedir}/%{name}/%{name}.h
596 %{_includedir}/%{name}/NetworkManagerVPN.h
597 %{_includedir}/%{name}/nm-version.h
598 %{_libdir}/pkgconfig/%{name}.pc
599 %dir %{_datadir}/gtk-doc/html/NetworkManager
600 %{_datadir}/gtk-doc/html/NetworkManager/*
601 %{_datadir}/vala/vapi/*.deps
602 %{_datadir}/vala/vapi/*.vapi
605 %defattr(-,root,root,0755)
606 %{_libdir}/libnm-glib.so.*
607 %{_libdir}/libnm-glib-vpn.so.*
608 %{_libdir}/libnm-util.so.*
609 %{_libdir}/girepository-1.0/NetworkManager-1.0.typelib
610 %{_libdir}/girepository-1.0/NMClient-1.0.typelib
613 %defattr(-,root,root,0755)
614 %dir %{_includedir}/libnm-glib
615 %{_includedir}/libnm-glib/*.h
616 %{_includedir}/%{name}/nm-setting*.h
617 %{_includedir}/%{name}/nm-connection.h
618 %{_includedir}/%{name}/nm-utils-enum-types.h
619 %{_includedir}/%{name}/nm-utils.h
620 %{_libdir}/pkgconfig/libnm-glib.pc
621 %{_libdir}/pkgconfig/libnm-glib-vpn.pc
622 %{_libdir}/pkgconfig/libnm-util.pc
623 %{_libdir}/libnm-glib.so
624 %{_libdir}/libnm-glib-vpn.so
625 %{_libdir}/libnm-util.so
626 %{_datadir}/gir-1.0/NetworkManager-1.0.gir
627 %{_datadir}/gir-1.0/NMClient-1.0.gir
628 %dir %{_datadir}/gtk-doc/html/libnm-glib
629 %{_datadir}/gtk-doc/html/libnm-glib/*
630 %dir %{_datadir}/gtk-doc/html/libnm-util
631 %{_datadir}/gtk-doc/html/libnm-util/*
634 %defattr(-,root,root,0755)
635 %{_libdir}/libnm.so.*
636 %{_libdir}/girepository-1.0/NM-1.0.typelib
639 %defattr(-,root,root,0755)
640 %dir %{_includedir}/libnm
641 %{_includedir}/libnm/*.h
642 %{_libdir}/pkgconfig/libnm.pc
644 %{_datadir}/gir-1.0/NM-1.0.gir
645 %dir %{_datadir}/gtk-doc/html/libnm
646 %{_datadir}/gtk-doc/html/libnm/*
648 %files config-connectivity-fedora
649 %defattr(-,root,root,0755)
650 %dir %{_sysconfdir}/%{name}
651 %dir %{_sysconfdir}/%{name}/conf.d
652 %config(noreplace) %{_sysconfdir}/%{name}/conf.d/20-connectivity-fedora.conf
655 %defattr(-,root,root,0755)
656 %dir %{_sysconfdir}/%{name}
657 %dir %{_sysconfdir}/%{name}/conf.d
658 %config(noreplace) %{_sysconfdir}/%{name}/conf.d/00-server.conf
663 %{_bindir}/nmtui-edit
664 %{_bindir}/nmtui-connect
665 %{_bindir}/nmtui-hostname
666 %{_mandir}/man1/nmtui*