]> git.proxmox.com Git - mirror_zfs-debian.git/blob - rpm/generic/zfs.spec.in
New upstream version 0.7.9
[mirror_zfs-debian.git] / rpm / generic / zfs.spec.in
1 %global _sbindir /sbin
2 %global _libdir /%{_lib}
3
4 # Set the default udev directory based on distribution.
5 %if %{undefined _udevdir}
6 %if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 || 0%{?centos} >= 7
7 %global _udevdir %{_prefix}/lib/udev
8 %else
9 %global _udevdir /lib/udev
10 %endif
11 %endif
12
13 # Set the default udevrule directory based on distribution.
14 %if %{undefined _udevruledir}
15 %if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 || 0%{?centos} >= 7
16 %global _udevruledir %{_prefix}/lib/udev/rules.d
17 %else
18 %global _udevruledir /lib/udev/rules.d
19 %endif
20 %endif
21
22 # Set the default dracut directory based on distribution.
23 %if %{undefined _dracutdir}
24 %if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 || 0%{?centos} >= 7
25 %global _dracutdir %{_prefix}/lib/dracut
26 %else
27 %global _dracutdir %{_prefix}/share/dracut
28 %endif
29 %endif
30
31 # Set the default _initconfdir when undefined.
32 %if %{undefined _initconfdir}
33 %global _initconfdir /etc/sysconfig
34 %endif
35
36 %bcond_with debug
37 %bcond_with systemd
38
39 # Python permits the !/usr/bin/python shebang for scripts that are cross
40 # compatible between python2 and python3, but Fedora 28 does not. Fedora
41 # wants us to choose python3 for cross-compatible scripts. Since we want
42 # to support python2 and python3 users, exclude our scripts from Fedora 28's
43 # RPM build check, so that we don't get a bunch of build warnings.
44 #
45 # Details: https://github.com/zfsonlinux/zfs/issues/7360
46 #
47 %global __brp_mangle_shebangs_exclude_from arc_summary.py|arcstat.py|dbufstat.py|test-runner.py
48
49 # Generic enable switch for systemd
50 %if %{with systemd}
51 %define _systemd 1
52 %endif
53
54 # RHEL >= 7 comes with systemd
55 %if 0%{?rhel} >= 7
56 %define _systemd 1
57 %endif
58
59 # Fedora >= 15 comes with systemd, but only >= 18 has
60 # the proper macros
61 %if 0%{?fedora} >= 18
62 %define _systemd 1
63 %endif
64
65 # opensuse >= 12.1 comes with systemd, but only >= 13.1
66 # has the proper macros
67 %if 0%{?suse_version} >= 1310
68 %define _systemd 1
69 %endif
70
71 Name: @PACKAGE@
72 Version: @VERSION@
73 Release: @RELEASE@%{?dist}
74 Summary: Commands to control the kernel modules and libraries
75
76 Group: System Environment/Kernel
77 License: @ZFS_META_LICENSE@
78 URL: http://zfsonlinux.org/
79 Source0: %{name}-%{version}.tar.gz
80 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
81 Requires: spl = %{version}
82 Requires: libzpool2 = %{version}
83 Requires: libnvpair1 = %{version}
84 Requires: libuutil1 = %{version}
85 Requires: libzfs2 = %{version}
86 Requires: %{name}-kmod = %{version}
87 Provides: %{name}-kmod-common = %{version}
88
89 # zfs-fuse provides the same commands and man pages that ZoL does. Renaming
90 # those on either side would conflict with all available documentation.
91 Conflicts: zfs-fuse
92
93 %if 0%{?rhel}%{?fedora}%{?suse_version}
94 BuildRequires: zlib-devel
95 BuildRequires: libuuid-devel
96 BuildRequires: libblkid-devel
97 BuildRequires: libudev-devel
98 BuildRequires: libattr-devel
99 %if 0%{?fedora} >= 28
100 BuildRequires: libtirpc-devel
101 %endif
102 %endif
103
104 %if 0%{?_systemd}
105 Requires(post): systemd
106 Requires(preun): systemd
107 Requires(postun): systemd
108 %endif
109
110 # The zpool iostat/status -c scripts call some utilities like lsblk and iostat
111 Requires: util-linux
112 Requires: sysstat
113
114 %description
115 This package contains the ZFS command line utilities.
116
117 %package -n libzpool2
118 Summary: Native ZFS pool library for Linux
119 Group: System Environment/Kernel
120
121 %description -n libzpool2
122 This package contains the zpool library, which provides support
123 for managing zpools
124
125 %post -n libzpool2 -p /sbin/ldconfig
126 %postun -n libzpool2 -p /sbin/ldconfig
127
128 %package -n libnvpair1
129 Summary: Solaris name-value library for Linux
130 Group: System Environment/Kernel
131
132 %description -n libnvpair1
133 This package contains routines for packing and unpacking name-value
134 pairs. This functionality is used to portably transport data across
135 process boundaries, between kernel and user space, and can be used
136 to write self describing data structures on disk.
137
138 %post -n libnvpair1 -p /sbin/ldconfig
139 %postun -n libnvpair1 -p /sbin/ldconfig
140
141 %package -n libuutil1
142 Summary: Solaris userland utility library for Linux
143 Group: System Environment/Kernel
144
145 %description -n libuutil1
146 This library provides a variety of compatibility functions for ZFS on Linux:
147 * libspl: The Solaris Porting Layer userland library, which provides APIs
148 that make it possible to run Solaris user code in a Linux environment
149 with relatively minimal modification.
150 * libavl: The Adelson-Velskii Landis balanced binary tree manipulation
151 library.
152 * libefi: The Extensible Firmware Interface library for GUID disk
153 partitioning.
154 * libshare: NFS, SMB, and iSCSI service integration for ZFS.
155
156 %post -n libuutil1 -p /sbin/ldconfig
157 %postun -n libuutil1 -p /sbin/ldconfig
158
159 %package -n libzfs2
160 Summary: Native ZFS filesystem library for Linux
161 Group: System Environment/Kernel
162
163 %description -n libzfs2
164 This package provides support for managing ZFS filesystems
165
166 %post -n libzfs2 -p /sbin/ldconfig
167 %postun -n libzfs2 -p /sbin/ldconfig
168
169 %package -n libzfs2-devel
170 Summary: Development headers
171 Group: System Environment/Kernel
172 Requires: libzfs2 = %{version}
173 Requires: libzpool2 = %{version}
174 Requires: libnvpair1 = %{version}
175 Requires: libuutil1 = %{version}
176 Provides: libzpool2-devel
177 Provides: libnvpair1-devel
178 Provides: libuutil1-devel
179 Obsoletes: zfs-devel
180
181 %description -n libzfs2-devel
182 This package contains the header files needed for building additional
183 applications against the ZFS libraries.
184
185 %package test
186 Summary: Test infrastructure
187 Group: System Environment/Kernel
188 Requires: %{name}%{?_isa} = %{version}-%{release}
189 Requires: parted
190 Requires: lsscsi
191 Requires: mdadm
192 Requires: bc
193 Requires: ksh
194 Requires: fio
195 Requires: acl
196 Requires: sudo
197 Requires: sysstat
198 Requires: rng-tools
199 Requires: libaio
200 AutoReqProv: no
201
202 %description test
203 This package contains test infrastructure and support scripts for
204 validating the file system.
205
206 %package dracut
207 Summary: Dracut module
208 Group: System Environment/Kernel
209 Requires: %{name}%{?_isa} = %{version}-%{release}
210 Requires: dracut
211
212 %description dracut
213 This package contains a dracut module used to construct an initramfs
214 image which is ZFS aware.
215
216 %if 0%{?_initramfs}
217 %package initramfs
218 Summary: Initramfs module
219 Group: System Environment/Kernel
220 Requires: %{name}%{?_isa} = %{version}-%{release}
221 Requires: %{name} = %{version}-%{release}
222 Requires: initramfs-tools
223
224 %description initramfs
225 This package contains a initramfs module used to construct an initramfs
226 image which is ZFS aware.
227 %endif
228
229 %prep
230 %if %{with debug}
231 %define debug --enable-debug
232 %else
233 %define debug --disable-debug
234 %endif
235 %if 0%{?_systemd}
236 %define systemd --enable-systemd --with-systemdunitdir=%{_unitdir} --with-systemdpresetdir=%{_presetdir} --disable-sysvinit
237 %define systemd_svcs zfs-import-cache.service zfs-import-scan.service zfs-mount.service zfs-share.service zfs-zed.service zfs.target zfs-import.target
238 %else
239 %define systemd --enable-sysvinit --disable-systemd
240 %endif
241
242 %setup -q
243
244 %build
245 %configure \
246 --with-config=user \
247 --with-udevdir=%{_udevdir} \
248 --with-udevruledir=%{_udevruledir} \
249 --with-dracutdir=%{_dracutdir} \
250 --disable-static \
251 %{debug} \
252 %{systemd}
253 make %{?_smp_mflags}
254
255 %install
256 %{__rm} -rf $RPM_BUILD_ROOT
257 make install DESTDIR=%{?buildroot}
258 find %{?buildroot}%{_libdir} -name '*.la' -exec rm -f {} \;
259
260 %post
261 %if 0%{?_systemd}
262 %if 0%{?systemd_post:1}
263 %systemd_post %{systemd_svcs}
264 %else
265 if [ "$1" = "1" -o "$1" = "install" ] ; then
266 # Initial installation
267 systemctl preset %{systemd_svcs} >/dev/null || true
268 fi
269 %endif
270 %else
271 if [ -x /sbin/chkconfig ]; then
272 /sbin/chkconfig --add zfs-import
273 /sbin/chkconfig --add zfs-mount
274 /sbin/chkconfig --add zfs-share
275 /sbin/chkconfig --add zfs-zed
276 fi
277 %endif
278 exit 0
279
280 %preun
281 %if 0%{?_systemd}
282 %if 0%{?systemd_preun:1}
283 %systemd_preun %{systemd_svcs}
284 %else
285 if [ "$1" = "0" -o "$1" = "remove" ] ; then
286 # Package removal, not upgrade
287 systemctl --no-reload disable %{systemd_svcs} >/dev/null || true
288 systemctl stop %{systemd_svcs} >/dev/null || true
289 fi
290 %endif
291 %else
292 if [ "$1" = "0" -o "$1" = "remove" ] && [ -x /sbin/chkconfig ]; then
293 /sbin/chkconfig --del zfs-import
294 /sbin/chkconfig --del zfs-mount
295 /sbin/chkconfig --del zfs-share
296 /sbin/chkconfig --del zfs-zed
297 fi
298 %endif
299 exit 0
300
301 %postun
302 %if 0%{?_systemd}
303 %if 0%{?systemd_postun:1}
304 %systemd_postun %{systemd_svcs}
305 %else
306 systemctl --system daemon-reload >/dev/null || true
307 %endif
308 %endif
309
310 %files
311 %{_sbindir}/*
312 %{_bindir}/*
313 %{_libexecdir}/%{name}
314 %{_mandir}/man1/*
315 %{_mandir}/man5/*
316 %{_mandir}/man8/*
317 %{_udevdir}/vdev_id
318 %{_udevdir}/zvol_id
319 %{_udevdir}/rules.d/*
320 %if 0%{?_systemd}
321 /usr/lib/modules-load.d/*
322 %{_unitdir}/*
323 %{_presetdir}/*
324 %else
325 %config(noreplace) %{_sysconfdir}/init.d/*
326 %config(noreplace) %{_initconfdir}/zfs
327 %endif
328 %config(noreplace) %{_sysconfdir}/%{name}
329 %attr(440, root, root) %config(noreplace) %{_sysconfdir}/sudoers.d/*
330
331 %files -n libzpool2
332 %{_libdir}/libzpool.so.*
333
334 %files -n libnvpair1
335 %{_libdir}/libnvpair.so.*
336
337 %files -n libuutil1
338 %{_libdir}/libuutil.so.*
339
340 %files -n libzfs2
341 %{_libdir}/libzfs*.so.*
342
343 %files -n libzfs2-devel
344 %{_datadir}/pkgconfig/libzfs.pc
345 %{_datadir}/pkgconfig/libzfs_core.pc
346 %{_libdir}/*.so
347 %{_includedir}/*
348 %doc AUTHORS COPYRIGHT DISCLAIMER
349 %doc OPENSOLARIS.LICENSE README.markdown
350
351 %files test
352 %{_datadir}/%{name}
353
354 %files dracut
355 %doc contrib/dracut/README.dracut.markdown
356 %{_dracutdir}/modules.d/*
357
358 %if 0%{?_initramfs}
359 %files initramfs
360 %doc contrib/initramfs/README.initramfs.markdown
361 /usr/share/initramfs-tools/*
362 %else
363 # Since we're not building the initramfs package,
364 # ignore those files.
365 %exclude /usr/share/initramfs-tools
366 %endif
367
368 %changelog
369 * Tue May 08 2018 Tony Hutter <hutter2@llnl.gov> - 0.7.9-1
370 - Released 0.7.9-1, detailed release notes are available at:
371 - https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.9
372 * Mon Apr 09 2018 Tony Hutter <hutter2@llnl.gov> - 0.7.8-1
373 - Released 0.7.8-1, detailed release notes are available at:
374 - https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.8
375 * Wed Mar 14 2018 Tony Hutter <hutter2@llnl.gov> - 0.7.7-1
376 - Released 0.7.7-1, detailed release notes are available at:
377 - https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.7
378 * Thu Feb 01 2018 Tony Hutter <hutter2@llnl.gov> - 0.7.6-1
379 - Released 0.7.6-1, detailed release notes are available at:
380 - https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.6
381 * Mon Dec 18 2017 Tony Hutter <hutter2@llnl.gov> - 0.7.5-1
382 - Released 0.7.5-1, detailed release notes are available at:
383 - https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.5
384 * Thu Dec 07 2017 Tony Hutter <hutter2@llnl.gov> - 0.7.4-1
385 - Released 0.7.4-1, detailed release notes are available at:
386 - https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.4
387 * Wed Oct 18 2017 Tony Hutter <hutter2@llnl.gov> - 0.7.3-1
388 - Released 0.7.3-1, detailed release notes are available at:
389 - https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.3
390 * Fri Sep 22 2017 Tony Hutter <hutter2@llnl.gov> - 0.7.2-1
391 - Released 0.7.2-1, detailed release notes are available at:
392 - https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.2
393 * Tue Aug 8 2017 Tony Hutter <hutter2@llnl.gov> - 0.7.1-1
394 - Released 0.7.1-1, detailed release notes are available at:
395 - https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.1
396 * Wed Jul 26 2017 Brian Behlendorf <behlendorf1@llnl.gov> - 0.7.0-1
397 - Released 0.7.0-1, detailed release notes are available at:
398 - https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.0