1 |
commit: c87de1ae3f3027a29c7d1db353c5faa17442a21b |
2 |
Author: Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org> |
3 |
AuthorDate: Fri Sep 27 18:28:37 2019 +0000 |
4 |
Commit: Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org> |
5 |
CommitDate: Fri Sep 27 19:16:19 2019 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c87de1ae |
7 |
|
8 |
sys-fs/zfs: bump to 0.8.2 |
9 |
|
10 |
Package-Manager: Portage-2.3.76, Repoman-2.3.17 |
11 |
RepoMan-Options: --ignore-arches |
12 |
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org> |
13 |
|
14 |
sys-fs/zfs/Manifest | 1 + |
15 |
.../files/0.8.2-ZPOOL_IMPORT_UDEV_TIMEOUT_MS.patch | 68 +++++++ |
16 |
sys-fs/zfs/zfs-0.8.2.ebuild | 223 +++++++++++++++++++++ |
17 |
3 files changed, 292 insertions(+) |
18 |
|
19 |
diff --git a/sys-fs/zfs/Manifest b/sys-fs/zfs/Manifest |
20 |
index daccededfad..1c908ae93b7 100644 |
21 |
--- a/sys-fs/zfs/Manifest |
22 |
+++ b/sys-fs/zfs/Manifest |
23 |
@@ -1,2 +1,3 @@ |
24 |
DIST zfs-0.7.13.tar.gz 6614047 BLAKE2B c59c46287715779eb04d69333b0a417fa9865eb0d61c642b043188c4c97d4eed369f76a48327326ed1d4dd608ff95d91d20d26c80ed0b120a8fcd5f83cea638f SHA512 457d8f110b68c9656194cd3738b216d5d807d680e5cfc6ed1f3cf5ebde67860476387c6b862ba3ba7f972d8945075963e6c325543ab84468e3eff5dbce68476e |
25 |
DIST zfs-0.8.1.tar.gz 8668360 BLAKE2B f18268656381c20af6bd18421636a1c56633c7eafaf91b1308d15508d5f4bdcfa5dfbb4e09d0302ac3de9d6a4f69718fe9c3d083ed5b3ab2a32c6fb7a1db624b SHA512 1fb3957f65dbe94edaffcedb5b2694390dc14e472c11f7e63184a9ea6a774e79a43d47a2d789b7ced233fc67c76583bf7d5c1bda0692bb07929673e2a57f4667 |
26 |
+DIST zfs-0.8.2.tar.gz 8738111 BLAKE2B 5c15f6664ca70f0deeb5b9e32f2bcff68f9821529e5203ff18612ce88473fee9af369354c442f3db7882d301cf17c805c9635b05bfd3460833ed8e5ff8004dd0 SHA512 1424b1a030b814f812b5da422100669db5b8c3ccae14c2fdd62a5e0df28e7255247fe5ca99c95a14f08c92cc1574c22dd132093e4a1dd81e38c95b10cc5e2496 |
27 |
|
28 |
diff --git a/sys-fs/zfs/files/0.8.2-ZPOOL_IMPORT_UDEV_TIMEOUT_MS.patch b/sys-fs/zfs/files/0.8.2-ZPOOL_IMPORT_UDEV_TIMEOUT_MS.patch |
29 |
new file mode 100644 |
30 |
index 00000000000..6c4054ddb66 |
31 |
--- /dev/null |
32 |
+++ b/sys-fs/zfs/files/0.8.2-ZPOOL_IMPORT_UDEV_TIMEOUT_MS.patch |
33 |
@@ -0,0 +1,68 @@ |
34 |
+From d7037d2a2fd57504070eba14634b8a7ea159de32 Mon Sep 17 00:00:00 2001 |
35 |
+From: Richard Yao <ryao@g.o> |
36 |
+Date: Thu, 1 Aug 2019 15:54:30 -0400 |
37 |
+Subject: [PATCH] Implement ZPOOL_IMPORT_UDEV_TIMEOUT_MS |
38 |
+ |
39 |
+Since 0.7.0, zpool import would unconditionally block on udev for 30 |
40 |
+seconds. This introduced a regression in initramfs environments that |
41 |
+lack udev (particularly mdev based environments), yet use a zfs userland |
42 |
+tools intended for the system that had been built against udev. Gentoo's |
43 |
+genkernel is the main example, although custom user initramfs |
44 |
+environments would be similarly impacted unless special builds of the |
45 |
+ZFS userland utilities were done for them. Such environments already |
46 |
+have their own mechanisms for blocking until device nodes are ready |
47 |
+(such as genkernel's scandelay parameter), so it is unnecessary for |
48 |
+zpool import to block on a non-existent udev until a timeout is reached |
49 |
+inside of them. |
50 |
+ |
51 |
+Rather than trying to intelligently determine whether udev is avaliable |
52 |
+on the system to avoid unnecessarily blocking in such environments, it |
53 |
+seems best to just allow the environment to override the timeout. I |
54 |
+propose that we add an environment variable called |
55 |
+ZPOOL_IMPORT_UDEV_TIMEOUT_MS. Setting it to 0 would restore the 0.6.x |
56 |
+behavior that was more desireable in mdev based initramfs environments. |
57 |
+This allows the system userland utilities to be reused when building |
58 |
+mdev-based initramfs archives. |
59 |
+ |
60 |
+Reviewed-by: Georgy Yakovlev <gyakovlev@g.o> |
61 |
+Signed-off-by: Richard Yao <ryao@g.o> |
62 |
+--- |
63 |
+ lib/libzutil/zutil_import.c | 10 +++++++++- |
64 |
+ 1 file changed, 9 insertions(+), 1 deletion(-) |
65 |
+ |
66 |
+diff --git a/lib/libzutil/zutil_import.c b/lib/libzutil/zutil_import.c |
67 |
+index e82744383dc..8c4d8c5cb5c 100644 |
68 |
+--- a/lib/libzutil/zutil_import.c |
69 |
++++ b/lib/libzutil/zutil_import.c |
70 |
+@@ -58,6 +58,7 @@ |
71 |
+ #endif |
72 |
+ #include <stddef.h> |
73 |
+ #include <stdlib.h> |
74 |
++#include <stdio.h> |
75 |
+ #include <string.h> |
76 |
+ #include <sys/stat.h> |
77 |
+ #include <unistd.h> |
78 |
+@@ -1653,15 +1654,22 @@ zpool_open_func(void *arg) |
79 |
+ char *devid = NULL; |
80 |
+ rdsk_node_t *slice; |
81 |
+ avl_index_t where; |
82 |
++ char *env; |
83 |
++ int timeout; |
84 |
+ int error; |
85 |
+ |
86 |
+ if (label_paths(rn->rn_hdl, rn->rn_config, &path, &devid)) |
87 |
+ return; |
88 |
+ |
89 |
++ env = getenv("ZPOOL_IMPORT_UDEV_TIMEOUT_MS"); |
90 |
++ |
91 |
++ if ((env == NULL) || sscanf(env, "%d", &timeout) != 1) |
92 |
++ timeout = DISK_LABEL_WAIT; |
93 |
++ |
94 |
+ /* |
95 |
+ * Allow devlinks to stabilize so all paths are available. |
96 |
+ */ |
97 |
+- zpool_label_disk_wait(rn->rn_name, DISK_LABEL_WAIT); |
98 |
++ zpool_label_disk_wait(rn->rn_name, timeout); |
99 |
+ |
100 |
+ if (path != NULL) { |
101 |
+ slice = zfs_alloc(hdl, sizeof (rdsk_node_t)); |
102 |
|
103 |
diff --git a/sys-fs/zfs/zfs-0.8.2.ebuild b/sys-fs/zfs/zfs-0.8.2.ebuild |
104 |
new file mode 100644 |
105 |
index 00000000000..dd0ca35654d |
106 |
--- /dev/null |
107 |
+++ b/sys-fs/zfs/zfs-0.8.2.ebuild |
108 |
@@ -0,0 +1,223 @@ |
109 |
+# Copyright 1999-2019 Gentoo Authors |
110 |
+# Distributed under the terms of the GNU General Public License v2 |
111 |
+ |
112 |
+EAPI=7 |
113 |
+ |
114 |
+DISTUTILS_OPTIONAL=1 |
115 |
+PYTHON_COMPAT=( python{2_7,3_{5,6,7}} ) |
116 |
+ |
117 |
+inherit bash-completion-r1 flag-o-matic linux-info linux-mod distutils-r1 systemd toolchain-funcs udev usr-ldscript |
118 |
+ |
119 |
+DESCRIPTION="Userland utilities for ZFS Linux kernel module" |
120 |
+HOMEPAGE="https://zfsonlinux.org/" |
121 |
+ |
122 |
+if [[ ${PV} == "9999" ]] ; then |
123 |
+ inherit autotools git-r3 |
124 |
+ EGIT_REPO_URI="https://github.com/zfsonlinux/zfs.git" |
125 |
+else |
126 |
+ SRC_URI="https://github.com/zfsonlinux/${PN}/releases/download/${P}/${P}.tar.gz" |
127 |
+ KEYWORDS="~amd64 ~arm64 ~ppc64" |
128 |
+fi |
129 |
+ |
130 |
+LICENSE="BSD-2 CDDL MIT" |
131 |
+SLOT="0" |
132 |
+IUSE="custom-cflags debug kernel-builtin libressl python +rootfs test-suite static-libs" |
133 |
+ |
134 |
+DEPEND=" |
135 |
+ ${PYTHON_DEPS} |
136 |
+ net-libs/libtirpc[static-libs?] |
137 |
+ sys-apps/util-linux[static-libs?] |
138 |
+ sys-libs/zlib[static-libs(+)?] |
139 |
+ virtual/awk |
140 |
+ virtual/libudev[static-libs?] |
141 |
+ libressl? ( dev-libs/libressl:0=[static-libs?] ) |
142 |
+ !libressl? ( dev-libs/openssl:0=[static-libs?] ) |
143 |
+ python? ( |
144 |
+ virtual/python-cffi[${PYTHON_USEDEP}] |
145 |
+ ) |
146 |
+" |
147 |
+ |
148 |
+BDEPEND="virtual/awk |
149 |
+ virtual/pkgconfig |
150 |
+ python? ( |
151 |
+ dev-python/setuptools[${PYTHON_USEDEP}] |
152 |
+ ) |
153 |
+" |
154 |
+ |
155 |
+RDEPEND="${DEPEND} |
156 |
+ !=sys-apps/grep-2.13* |
157 |
+ !kernel-builtin? ( ~sys-fs/zfs-kmod-${PV} ) |
158 |
+ !sys-fs/zfs-fuse |
159 |
+ !prefix? ( virtual/udev ) |
160 |
+ sys-fs/udev-init-scripts |
161 |
+ rootfs? ( |
162 |
+ app-arch/cpio |
163 |
+ app-misc/pax-utils |
164 |
+ !<sys-boot/grub-2.00-r2:2 |
165 |
+ !<sys-kernel/genkernel-3.5.1.1 |
166 |
+ !<sys-kernel/genkernel-next-67 |
167 |
+ !<sys-kernel/bliss-initramfs-7.1.0 |
168 |
+ !<sys-kernel/dracut-044-r1 |
169 |
+ ) |
170 |
+ test-suite? ( |
171 |
+ sys-apps/util-linux |
172 |
+ sys-devel/bc |
173 |
+ sys-block/parted |
174 |
+ sys-fs/lsscsi |
175 |
+ sys-fs/mdadm |
176 |
+ sys-process/procps |
177 |
+ virtual/modutils |
178 |
+ ) |
179 |
+" |
180 |
+ |
181 |
+REQUIRED_USE="${PYTHON_REQUIRED_USE}" |
182 |
+ |
183 |
+RESTRICT="test" |
184 |
+ |
185 |
+PATCHES=( |
186 |
+ "${FILESDIR}/bash-completion-sudo.patch" |
187 |
+ "${FILESDIR}/0.8.2-ZPOOL_IMPORT_UDEV_TIMEOUT_MS.patch" # https://github.com/zfsonlinux/zfs/pull/9109 |
188 |
+) |
189 |
+ |
190 |
+pkg_setup() { |
191 |
+ if use kernel_linux && use test-suite; then |
192 |
+ linux-info_pkg_setup |
193 |
+ |
194 |
+ if ! linux_config_exists; then |
195 |
+ ewarn "Cannot check the linux kernel configuration." |
196 |
+ else |
197 |
+ if use test-suite; then |
198 |
+ if linux_chkconfig_present BLK_DEV_LOOP; then |
199 |
+ eerror "The ZFS test suite requires loop device support enabled." |
200 |
+ eerror "Please enable it:" |
201 |
+ eerror " CONFIG_BLK_DEV_LOOP=y" |
202 |
+ eerror "in /usr/src/linux/.config or" |
203 |
+ eerror " Device Drivers --->" |
204 |
+ eerror " Block devices --->" |
205 |
+ eerror " [X] Loopback device support" |
206 |
+ fi |
207 |
+ fi |
208 |
+ fi |
209 |
+ fi |
210 |
+} |
211 |
+ |
212 |
+src_prepare() { |
213 |
+ default |
214 |
+ |
215 |
+ if [[ ${PV} == "9999" ]]; then |
216 |
+ eautoreconf |
217 |
+ else |
218 |
+ # Set revision number |
219 |
+ sed -i "s/\(Release:\)\(.*\)1/\1\2${PR}-gentoo/" META || die "Could not set Gentoo release" |
220 |
+ fi |
221 |
+ |
222 |
+ if use python; then |
223 |
+ pushd contrib/pyzfs >/dev/null || die |
224 |
+ distutils-r1_src_prepare |
225 |
+ popd >/dev/null || die |
226 |
+ fi |
227 |
+ |
228 |
+ # prevent errors showing up on zfs-mount stop, #647688 |
229 |
+ # openrc will unmount all filesystems anyway. |
230 |
+ sed -i "/^ZFS_UNMOUNT=/ s/yes/no/" etc/init.d/zfs.in || die |
231 |
+} |
232 |
+ |
233 |
+src_configure() { |
234 |
+ use custom-cflags || strip-flags |
235 |
+ |
236 |
+ local myconf=( |
237 |
+ --bindir="${EPREFIX}/bin" |
238 |
+ --enable-shared |
239 |
+ --enable-systemd |
240 |
+ --enable-sysvinit |
241 |
+ --localstatedir="${EPREFIX}/var" |
242 |
+ --sbindir="${EPREFIX}/sbin" |
243 |
+ --with-config=user |
244 |
+ --with-dracutdir="${EPREFIX}/usr/lib/dracut" |
245 |
+ --with-linux="${KV_DIR}" |
246 |
+ --with-linux-obj="${KV_OUT_DIR}" |
247 |
+ --with-udevdir="$(get_udevdir)" |
248 |
+ --with-systemdunitdir="$(systemd_get_systemunitdir)" |
249 |
+ --with-systemdpresetdir="${EPREFIX}/lib/systemd/system-preset" |
250 |
+ $(use_enable debug) |
251 |
+ $(use_enable python pyzfs) |
252 |
+ $(use_enable static-libs static) |
253 |
+ ) |
254 |
+ |
255 |
+ econf "${myconf[@]}" |
256 |
+} |
257 |
+ |
258 |
+src_compile() { |
259 |
+ default |
260 |
+ if use python; then |
261 |
+ pushd contrib/pyzfs >/dev/null || die |
262 |
+ distutils-r1_src_compile |
263 |
+ popd >/dev/null || die |
264 |
+ fi |
265 |
+} |
266 |
+ |
267 |
+src_install() { |
268 |
+ default |
269 |
+ |
270 |
+ gen_usr_ldscript -a uutil nvpair zpool zfs zfs_core |
271 |
+ |
272 |
+ use test-suite || rm -rf "${ED}/usr/share/zfs" |
273 |
+ |
274 |
+ if ! use static-libs; then |
275 |
+ find "${ED}/" -name '*.la' -delete || die |
276 |
+ fi |
277 |
+ |
278 |
+ dobashcomp contrib/bash_completion.d/zfs |
279 |
+ bashcomp_alias zfs zpool |
280 |
+ |
281 |
+ # strip executable bit from conf.d file |
282 |
+ fperms 0644 /etc/conf.d/zfs |
283 |
+ |
284 |
+ if use python; then |
285 |
+ pushd contrib/pyzfs >/dev/null || die |
286 |
+ distutils-r1_src_install |
287 |
+ popd >/dev/null || die |
288 |
+ fi |
289 |
+ |
290 |
+ # enforce best available python implementation |
291 |
+ python_setup |
292 |
+ python_fix_shebang "${ED}/bin" |
293 |
+} |
294 |
+ |
295 |
+pkg_postinst() { |
296 |
+ if use rootfs; then |
297 |
+ if ! has_version sys-kernel/genkernel && ! has_version sys-kernel/dracut; then |
298 |
+ elog "root on zfs requires initramfs to boot" |
299 |
+ elog "the following packages known to provide one and tested on regular basis:" |
300 |
+ elog " sys-kernel/dracut" |
301 |
+ elog " sys-kernel/genkernel" |
302 |
+ fi |
303 |
+ |
304 |
+ if has_version "<=sys-kernel/genkernel-3.5.3.3"; then |
305 |
+ einfo "genkernel version 3.5.3.3 and earlier does NOT support" |
306 |
+ einfo " unlocking pools with native zfs encryption enabled at boot" |
307 |
+ einfo " use dracut or >=genkernel-4 if you requre this functionality" |
308 |
+ fi |
309 |
+ fi |
310 |
+ |
311 |
+ if ! use kernel-builtin && [[ ${PV} = "9999" ]]; then |
312 |
+ einfo "Adding ${P} to the module database to ensure that the" |
313 |
+ einfo "kernel modules and userland utilities stay in sync." |
314 |
+ update_moduledb |
315 |
+ fi |
316 |
+ |
317 |
+ [[ -e "${EROOT}/etc/runlevels/boot/zfs-import" ]] || \ |
318 |
+ einfo "You should add zfs-import to the boot runlevel." |
319 |
+ [[ -e "${EROOT}/etc/runlevels/boot/zfs-mount" ]]|| \ |
320 |
+ einfo "You should add zfs-mount to the boot runlevel." |
321 |
+ [[ -e "${EROOT}/etc/runlevels/default/zfs-share" ]] || \ |
322 |
+ einfo "You should add zfs-share to the default runlevel." |
323 |
+ [[ -e "${EROOT}/etc/runlevels/default/zfs-zed" ]] || \ |
324 |
+ einfo "You should add zfs-zed to the default runlevel." |
325 |
+} |
326 |
+ |
327 |
+pkg_postrm() { |
328 |
+ if ! use kernel-builtin && [[ ${PV} == "9999" ]]; then |
329 |
+ remove_moduledb |
330 |
+ fi |
331 |
+} |