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