sys-fs/zfs: Sync with Gentoo

It's from Gentoo commit 4724af84e9cc86c7d4457eb91f99dff720a681a4.

Signed-off-by: Flatcar Buildbot <buildbot@flatcar-linux.org>
This commit is contained in:
Flatcar Buildbot 2026-01-12 07:17:32 +00:00 committed by Krzesimir Nowak
parent f2cdee84d6
commit 3c5b8be92f
13 changed files with 97 additions and 1229 deletions

View File

@ -1,18 +1,14 @@
DIST zfs-2.1.16.tar.gz 35187215 BLAKE2B 8bb90903f3747589fff94a810584de54d7f598b0aa9d0b364cc679779d401a9a76f6914cbfbdd007e2066f02230ed4cac4f3735830ea70eb3bcc449af8229c5d SHA512 68e62015e44eeb997166418bf769afa3e96c037a9282dcfd08a8f01d935fa48076483158f628d70b0aed258427510996d4c4ee7d2644ff561163c76f776635d2
DIST zfs-2.1.16.tar.gz.asc 836 BLAKE2B b46614399ca63d9c88216c55bb2177cc0c28f4da2cb6be3ee361efca994309abff46fdf6ad6b0bad448c44e9e84ee40e2183d1b482e04844317f14744bab5c1f SHA512 d2d94a4e3ffe182e86fa3319cb9661688125f378ffa1e5768ee89033f796a1f52f877c382588fb1f434686e30bc4e65e3f08ceac0dd3dd7f8f751ba6182c3317
DIST zfs-2.2.7.tar.gz 33852602 BLAKE2B 31a066d5d543e3328d1afd065a8da4f9b4c52433d585cdbb41936900fd1453431585c6bc4b6e6d9a497a03e79969bae883e17cf4677099686feb3e32577d2777 SHA512 6493faa8e31d9c042c4e8f748d32cb9243212fdf4e0341c19568b47bcf302e60beb89940b80374610b71e1dca1ca5813f3efaddbf1a2453ceabb38381165b271
DIST zfs-2.2.7.tar.gz.asc 836 BLAKE2B e8fc5e04f5b37a22c741bda46b4573e0cebe85da051c73cf3c5fc267de3c313399b235fc346ca06f4c22d37d2500044a26adb3ea241a65fbcf8760d0ef880039 SHA512 8d22a64c920c2a983429688a340f4ae281decdd30e465591e6b40af9f3016b8f168f4e8ea460600c832a2f46b383ff307986649a645585fb25c34fdfda75ad6e
DIST zfs-2.2.8.tar.gz 33852494 BLAKE2B 9e338544488d00a57594d638138896635ea62b80341ad9289b9faad7b899012206fef22e5742e1f5681c58d61d264127ed1e2dfe5aa9b2e9aac2243421c60b11 SHA512 95c203a97032b8ae46cc84e0e6fd68d61e42fb6c6fde7102b04ac85291579c18b1d52b3e93e345a3bc5491bef8bf07b8e7edcbf69cb6222c5d8454a3c83adb11
DIST zfs-2.2.8.tar.gz.asc 224 BLAKE2B c3a06953c22d1b485fbd030c93ad0e744c50a91e51bbed5bef56090a1da57b02ec580499a419201f365c99ade53af5d6f545876e6d0da25ee7870fc86786288b SHA512 fcd6fe2412b5a2e83ad2609d56993ed4ad61e10c4f77f1e94a66403adf66ac90604fb567e7cde6420fe0b6a604abfd817a63e744f7c4fe8452b862c1d8cc4df3
DIST zfs-2.3.2.tar.gz 34344259 BLAKE2B 8a89c62cbbeaf410db4011821cdd9959abef1782be7427b81ac47565407384fa3a381bef041dae73e97c2b2cefca62933180851901b3b1b86974ed33ad178a61 SHA512 94311f2eca1488be83aa0cb802b4a4541bbbd061a3e8e5cbda62cabbb0c8f9a705372ad192cb77703b3d7642c43be7f604f3c363b243cf03a6aceae2d7e5db81
DIST zfs-2.3.2.tar.gz.asc 836 BLAKE2B e9f7f6e5966f395f3cf48cbb63c76872edf50970f053aaaf0f254035e9aa7728be036a5a4dc24cff32d37cdb61ffa4bc1af7e03c8bc1ac9abc9abcfea7f98b95 SHA512 50f1ce4d07febd08a5098bb42516d52ff3227b2b36463a07eca558bfc630628244cd910ea385aa44fb126cd0542d9048a501af8b391a56cafd7307b9db3083c4
DIST zfs-2.2.9.tar.gz 33864041 BLAKE2B abafd4da0c98cf93a2648150c859ffc6847aa2f5bfa59f3b6cc1619a2313a1600923c7a07c9e647c6c0f40eda21fb0985de81a436c44513a5bd99984a18329a5 SHA512 bed0f7794ff7898557a4854d8634a96f9be5368b0264558d980e70664fe1f02a35b05a96b5e92acd40e2b741373ca4a312e31ad4f69c4d639c817cce3988f382
DIST zfs-2.2.9.tar.gz.asc 858 BLAKE2B caf76646bb3cba75b65b9b93b63f698d172806d60480785938ca3112a67d3e6d9a9b123217df4c92ad682b695292d9e674c4cba819b94276d154aba11e8dcc7d SHA512 ff3a1789154382b06e778b1847519188d520d5037f8c78089309c1d532e8496f682ead1648991bb9eb58dbdedd0007fa7d3157a8887a525470c9220bab3eb4e2
DIST zfs-2.3.3.tar.gz 34360540 BLAKE2B 4861ddfc91b941448d13d43bb2a023273917064b29880f87d91dbe6424b3f1fc7b0409e13a514d5b3f18f70a383c5d1c462ec5d7b8a7c82b2b076ecd363cecdd SHA512 0a18615da052989c19e889758972f14173e790710a2615fc186212d02f9909f0bf62debc19d85ff5c58411d8ef82aa85aff20804c3fbe2446913cd293a18b80d
DIST zfs-2.3.3.tar.gz.asc 224 BLAKE2B 79cad3883b2ac9dd13b4898f48ef2b637a580e18c65d6f83b834489a35cb31da5ed58cc24afabf3331904e8df54a7f7a825826570470f312ff2370c7fc8f95fc SHA512 07aab3d14ba3f06df2992f08cc68bed3dbf57d59cb151e0a769eeea3dc74c82084be0242b80f5075b59bb036d9277dfd726361422b35e3ed01877317634911b7
DIST zfs-2.3.4.tar.gz 34386899 BLAKE2B e7619445a9138475e51e1578cb4e85032570830faba5aab44013a652596a07e49cf602acfe7fd0e5411199d11614d4686cc3f14fddf3062695ce3da922075efd SHA512 56b90960de6aa94b76f8efc3c84993454a8d544bd47e1270e02caa8d96569e866102e17ef1f16056722bf5f6624fad0bbe7f9ef0e94bc0c3fc16e61b681db815
DIST zfs-2.3.4.tar.gz.asc 858 BLAKE2B 2537afa40b48c07b8ad61a4f6973e40a78b5863afbb6b75674fb7a5950ba2dda22dfa93a180190332d234b0b2e2ce14ed61cb34bc0f56e609dad3cdb805ab5c2 SHA512 cc50fb915d4e8a7eb894bdf919940a8c68828e48a5e1f2a08b08a5e75c0eb8a9cd4feaa84742b65d6b2d85ee839ac2b7d565ed7958006ff079d751145463243b
DIST zfs-2.4.0-rc1.tar.gz 34294259 BLAKE2B 262a510a356c515692d03ce2f5bdb61bb051d04ac79cc7723a2944e9f99f5514e2749752901e202f6bb8edd560e3639b845e790d9b861271265fe04cbe0178ce SHA512 9e8a95d98c311ee6efc8a2aa3f6e97a1573f247bbdbf9f11e0f981f8b768b45337b229d3c17fe7bc40bb67d8f0cc0fc77ab4138c29d3ae3d86eaff54bad84700
DIST zfs-2.4.0-rc1.tar.gz.asc 858 BLAKE2B 5fb794647fe89bc0b4030c273d50a2a8fcefb7e53a088f16fcdfba8d90aa3a011eb6c779e83c9a2bde2c6247a10bdca4245832c89886af8f5a1e7732b8a0fc3a SHA512 0083069492028f188ae015f99939cdde9458e29fee1e3fc848049488ed534fa7f2c557ddb7f83b7155bb29f8b98530c13b64f177fb40a741c3251a68890fa9ce
DIST zfs-2.4.0-rc2.tar.gz 34315284 BLAKE2B 6c72d5e86e93d28fd5204ac4c38175d97b564b671cf71045c94f4b9b19ae36a439000fd55761220a0a17adf9fd9b6df6b367831442c079b0bff1e01a3299baab SHA512 7fa6caecc6818af17bdc104624eb7638a6c41bfca03a5b45ce996e7bbf8bfd1b06a54714ca7cb59ac70b061cb0eb11bc68868f786a502f427775f1bcfe1a5de0
DIST zfs-2.4.0-rc2.tar.gz.asc 858 BLAKE2B 1bdad0ca1fcccae5e74187a88b3352ab8834c15c0933ddedc5562866dc3657ea575db5f788243fe7decc2f58b5470193ae422dec377447e9ffe75c5773378cda SHA512 e0de554bb62b2ee840a3cac2022b91ed83d2572d0ea73d2b5941308e94abf8d2c4d0f50b1bcc309880e0b415963bb6511664fa31601f0290ce9bb9ed79671a65
DIST zfs-2.4.0-rc3.tar.gz 34322200 BLAKE2B f96baf36010422d75da0563363715cbebf21cc80cbd27681051fb8d38959bf176a52f36eb3d04c84613fa95b567011b3ae2e0f601dcdaee8536c63821fef0817 SHA512 7c82dba4e8318dfc62fe22d74ad46c96ce36fe217f5f94c7112450260d203826f0e282e03b316ae082bddf1e99f0c5ec815d624f774c4e8e77dd2464831994ca
DIST zfs-2.4.0-rc3.tar.gz.asc 858 BLAKE2B dde4cbec02020e59674bc0aed7da8a504a404f96b316f2c8d05b6d5659cdeed1ac08ba74477011f05c88ef307638c47422911bb53b73be4009552a5355e7a906 SHA512 4b0c095938462f3d0532aa413bd93ea75a2591052b244ac473ed86b8e46664bd83ddec69a4a7e6d62b625a565c558c4122fe0923e7cc6e1994b2f7fa8cb00caa
DIST zfs-2.3.5.tar.gz 34379136 BLAKE2B 4ae090c76e13f2d3d76e481b9950db1319534e47b357e4818bfc4db84cc0a5089de1e46319a36f02010ac27e3ab5cf74a56979b94864d38dcc41c86721841e54 SHA512 72d62e28dc868aba720755685d5e8020d3165d04d0ae55f33e97ed6c503637c476563d23ea6e991784ab1c2e6886d785e2f15f5a71d4d3f69700bbb26eda3dad
DIST zfs-2.3.5.tar.gz.asc 858 BLAKE2B 96edcd3eb5b1a9d33ed50b2526d6a69b5e3dd4d1450205ed7342352aa3ac7014fc813b703ae97a29380da16f452c5491ddf68c05621479b7559f8907cc3b90de SHA512 fc69ab416499ef03cc3721c9f0017e792fc857d045e7f5902a5bf41eb31bbe192e850c1d01482401f06a53926649a1798fc2f7f6fc058fe8c6727b8630c56cdd
DIST zfs-2.4.0.tar.gz 34476567 BLAKE2B f98d940925ba74222ad4976af767bc5c40bdd29bbc0c5eca6ba43a6109f35e773260e946ef01a556732caf44f968e89d296c925602e252af1ece9597753f24d5 SHA512 5f4460707cc24c55900a08d106e549ecc9eb42bc7b64e0fb613d85ba2054c3bc834fb10c34822ef14406dfcfc07b38b7ca668a02086eecb0f107d2ffce66a998
DIST zfs-2.4.0.tar.gz.asc 858 BLAKE2B 8f86f94db68e1bb3b14eec4a342c0315f547fd4df965d14662a8432e577fcea531a0a17ccebee050b9e3d5bf89a2758b25934f192f09ba564d0e30d88111e862 SHA512 2b6726db66fec218e9eef39f7c07753d1566894e0559a1d09d0da3e498d9073c1260c0062efbafad5de5eea4ec4b078f7546c530c2aeed91e8b6851fb2af9188

View File

@ -1,39 +0,0 @@
https://github.com/openzfs/zfs/issues/15241
https://github.com/openzfs/zfs/pull/15560
From e0a7ec29d91b79adfd81073f229241351ed0ae21 Mon Sep 17 00:00:00 2001
From: Ilkka Sovanto <github@ilkka.kapsi.fi>
Date: Wed, 22 Nov 2023 20:24:47 +0200
Subject: [PATCH] Fix zoneid when USER_NS is disabled
getzoneid() should return GLOBAL_ZONEID instead of 0 when USER_NS is disabled.
Signed-off-by: Ilkka Sovanto <github@ilkka.kapsi.fi>
--- a/lib/libspl/os/linux/zone.c
+++ b/lib/libspl/os/linux/zone.c
@@ -42,20 +42,20 @@ getzoneid(void)
int c = snprintf(path, sizeof (path), "/proc/self/ns/user");
/* This API doesn't have any error checking... */
if (c < 0 || c >= sizeof (path))
- return (0);
+ return (GLOBAL_ZONEID);
ssize_t r = readlink(path, buf, sizeof (buf) - 1);
if (r < 0)
- return (0);
+ return (GLOBAL_ZONEID);
cp = strchr(buf, '[');
if (cp == NULL)
- return (0);
+ return (GLOBAL_ZONEID);
cp++;
unsigned long n = strtoul(cp, NULL, 10);
if (n == ULONG_MAX && errno == ERANGE)
- return (0);
+ return (GLOBAL_ZONEID);
zoneid_t z = (zoneid_t)n;
return (z);

View File

@ -1,63 +0,0 @@
https://github.com/openzfs/zfs/pull/15925
From 68419c70dc7235a4954d6c0c09d60f9ebe694a3c Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Fri, 23 Feb 2024 05:12:09 +0000
Subject: [PATCH] Use <fcntl.h> instead of <sys/fcntl.h>
When building on musl, we get:
```
In file included from tests/zfs-tests/cmd/getversion.c:22:
/usr/include/sys/fcntl.h:1:2: error: #warning redirecting incorrect #include <sys/fcntl.h> to <fcntl.h> [-Werror=cpp]
1 | #warning redirecting incorrect #include <sys/fcntl.h> to <fcntl.h>
In file included from module/os/linux/zfs/vdev_file.c:36:
/usr/include/sys/fcntl.h:1:2: error: #warning redirecting incorrect #include <sys/fcntl.h> to <fcntl.h> [-Werror=cpp]
1 | #warning redirecting incorrect #include <sys/fcntl.h> to <fcntl.h>
```
Bug: https://bugs.gentoo.org/925235
Signed-off-by: Sam James <sam@gentoo.org>
---
module/os/linux/zfs/vdev_file.c | 2 +-
tests/zfs-tests/cmd/getversion.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/module/os/linux/zfs/vdev_file.c b/module/os/linux/zfs/vdev_file.c
index 5abc0426d1..68e3042a97 100644
--- a/module/os/linux/zfs/vdev_file.c
+++ b/module/os/linux/zfs/vdev_file.c
@@ -23,6 +23,7 @@
* Copyright (c) 2011, 2020 by Delphix. All rights reserved.
*/
+#include <fcntl.h>
#include <sys/zfs_context.h>
#include <sys/spa.h>
#include <sys/spa_impl.h>
@@ -33,7 +34,6 @@
#include <sys/fs/zfs.h>
#include <sys/fm/fs/zfs.h>
#include <sys/abd.h>
-#include <sys/fcntl.h>
#include <sys/vnode.h>
#include <sys/zfs_file.h>
#ifdef _KERNEL
diff --git a/tests/zfs-tests/cmd/getversion.c b/tests/zfs-tests/cmd/getversion.c
index 62c1c5b6ab..1e026b92d1 100644
--- a/tests/zfs-tests/cmd/getversion.c
+++ b/tests/zfs-tests/cmd/getversion.c
@@ -19,9 +19,9 @@
*/
#include <sys/ioctl.h>
-#include <sys/fcntl.h>
#include <linux/fs.h>
#include <err.h>
+#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
--
2.43.2

View File

@ -0,0 +1,74 @@
From 41e55b476bcfc90f1ad81c02c5375367fdace9e9 Mon Sep 17 00:00:00 2001
From: siv0 <github@nomore.at>
Date: Tue, 31 Oct 2023 21:57:54 +0100
Subject: [PATCH] Fix nfs_truncate_shares without /etc/exports.d
Calling nfs_reset_shares on Linux prints a warning:
`failed to lock /etc/exports.d/zfs.exports.lock: No such file or
directory`
when /etc/exports.d does not exist. The directory gets created, when a
filesystem is actually exported through nfs_toggle_share and
nfs_init_share. The truncation of /etc/exports.d/zfs.exports happens
unconditionally when calling `zfs mount -a` (via zfs_do_mount and
share_mount in `cmd/zfs/zfs_main.c`).
Fixing the issue only in the Linux part, since the exports file on
freebsd is in `/etc/zfs/`, which seems present on 2 FreeBSD systems I
have access to (through `/etc/zfs/compatibility.d/`), while a Debian
box does not have the directory even if `/usr/sbin/exportfs` is
present through the `nfs-kernel-server` package.
The code for exports_available is copied from nfs_available above.
Fixes: ede037cda73675f42b1452187e8dd3438fafc220
("Make zfs-share service resilient to stale exports")
Reviewed-by: Brian Atkinson <batkinson@lanl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Closes #15369
Closes #15468
---
lib/libshare/os/linux/nfs.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/lib/libshare/os/linux/nfs.c b/lib/libshare/os/linux/nfs.c
index 004946b0cfe4..3dce818400fc 100644
--- a/lib/libshare/os/linux/nfs.c
+++ b/lib/libshare/os/linux/nfs.c
@@ -47,6 +47,7 @@
static boolean_t nfs_available(void);
+static boolean_t exports_available(void);
typedef int (*nfs_shareopt_callback_t)(const char *opt, const char *value,
void *cookie);
@@ -539,6 +540,8 @@ nfs_commit_shares(void)
static void
nfs_truncate_shares(void)
{
+ if (!exports_available())
+ return;
nfs_reset_shares(ZFS_EXPORTS_LOCK, ZFS_EXPORTS_FILE);
}
@@ -566,3 +569,18 @@ nfs_available(void)
return (avail == 1);
}
+
+static boolean_t
+exports_available(void)
+{
+ static int avail;
+
+ if (!avail) {
+ if (access(ZFS_EXPORTS_DIR, F_OK) != 0)
+ avail = -1;
+ else
+ avail = 1;
+ }
+
+ return (avail == 1);
+}

View File

@ -1,40 +0,0 @@
https://github.com/openzfs/zfs/pull/17294 (merged)
From 634c172ee89f5303493a75dc7ff55e0a355b503a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Luis=20Salvador=20Rufo?=
<salvador.joseluis@gmail.com>
Date: Fri, 2 May 2025 23:49:25 +0200
Subject: [PATCH] tests: fix `S_IFMT` undeclared at `statx.c`
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
`S_IFMT` is declared in `sys/stat.h`, but we cannot include this header
because it redeclares the `statx` function with different argument
types. Therefore, we define `S_IFMT` ourselves, in the same way as the
other definitions.
Reviewed-by: Rob Norris <robn@despairlabs.com>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Signed-off-by: José Luis Salvador Rufo <salvador.joseluis@gmail.com>
Closes #17293
Closes #17294
---
tests/zfs-tests/cmd/statx.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tests/zfs-tests/cmd/statx.c b/tests/zfs-tests/cmd/statx.c
index 89939f6efb40..1acc7e58c5ce 100644
--- a/tests/zfs-tests/cmd/statx.c
+++ b/tests/zfs-tests/cmd/statx.c
@@ -109,6 +109,9 @@ _statx(int fd, const char *path, int flags, unsigned int mask, void *stx)
#ifndef STATX_DIOALIGN
#define STATX_DIOALIGN (1<<13)
#endif
+#ifndef S_IFMT
+#define S_IFMT 0170000
+#endif
typedef struct {
int64_t tv_sec;

View File

@ -5,9 +5,10 @@ EAPI=8
DISTUTILS_OPTIONAL=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{10..12} )
PYTHON_COMPAT=( python3_{11..14} )
inherit autotools bash-completion-r1 dist-kernel-utils distutils-r1 flag-o-matic linux-info pam systemd udev usr-ldscript
inherit autotools bash-completion-r1 dist-kernel-utils distutils-r1 flag-o-matic linux-info
inherit pam systemd udev usr-ldscript
DESCRIPTION="Userland utilities for ZFS Linux kernel module"
HOMEPAGE="https://github.com/openzfs/zfs"
@ -25,7 +26,7 @@ else
S="${WORKDIR}/${MY_P}"
if [[ ${PV} != *_rc* ]]; then
KEYWORDS="amd64 arm64 ~loong ppc64 ~riscv ~sparc"
KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~sparc"
fi
fi
@ -106,8 +107,8 @@ RESTRICT="test"
PATCHES=(
"${FILESDIR}"/2.1.5-dracut-zfs-missing.patch
"${FILESDIR}"/2.2.2-no-USER_NS.patch
"${FILESDIR}"/2.2.3-musl.patch
"${FILESDIR}"/2.3.4-musl.patch
"${FILESDIR}"/2.2.9-nfs-truncate-shares.patch
)
pkg_pretend() {
@ -289,7 +290,7 @@ pkg_postinst() {
fi
if systemd_is_booted || has_version sys-apps/systemd; then
einfo "Please refer to ${EROOT}/$(systemd_get_systempresetdir)/50-zfs.preset"
einfo "Please refer to $(systemd_get_systempresetdir)/50-zfs.preset"
einfo "for default zfs systemd service configuration"
else
[[ -e "${EROOT}/etc/runlevels/boot/zfs-import" ]] || \

View File

@ -1,314 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# Maintainers should consider lurking in the ZFS IRC channels (there's several)
# and regularly checking ZFS GitHub issues and PRs. Look out for the 'zfs-*'
# stable backport PRs when they're opened and subscribe to them for any important
# cherry-picks that may be needed in advance.
DISTUTILS_OPTIONAL=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{10..13} )
inherit autotools bash-completion-r1 dist-kernel-utils distutils-r1 flag-o-matic linux-info pam systemd udev usr-ldscript
DESCRIPTION="Userland utilities for ZFS Linux kernel module"
HOMEPAGE="https://github.com/openzfs/zfs"
if [[ ${PV} == "9999" ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/openzfs/zfs.git"
else
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/openzfs.asc
inherit verify-sig
MY_P="${P/_rc/-rc}"
SRC_URI="https://github.com/openzfs/${PN}/releases/download/${MY_P}/${MY_P}.tar.gz"
SRC_URI+=" verify-sig? ( https://github.com/openzfs/${PN}/releases/download/${MY_P}/${MY_P}.tar.gz.asc )"
S="${WORKDIR}/${MY_P}"
if [[ ${PV} != *_rc* ]]; then
KEYWORDS="amd64 arm64 ~loong ppc64 ~riscv ~sparc"
fi
fi
LICENSE="BSD-2 CDDL MIT"
# just libzfs soname major for now.
# possible candidates: libuutil, libzpool, libnvpair. Those do not provide stable abi, but are considered.
# see libsoversion_check() below as well
SLOT="0/6"
IUSE="custom-cflags debug dist-kernel kernel-builtin minimal nls pam python +rootfs selinux test-suite unwind"
DEPEND="
dev-libs/openssl:=
net-libs/libtirpc:=
sys-apps/util-linux
virtual/zlib:=
virtual/libudev:=
!minimal? ( ${PYTHON_DEPS} )
pam? ( sys-libs/pam )
python? (
$(python_gen_cond_dep 'dev-python/cffi[${PYTHON_USEDEP}]' 'python*')
)
unwind? ( sys-libs/libunwind:= )
"
BDEPEND="
app-alternatives/awk
virtual/pkgconfig
nls? ( sys-devel/gettext )
python? (
${DISTUTILS_DEPS}
|| (
dev-python/packaging[${PYTHON_USEDEP}]
dev-python/distlib[${PYTHON_USEDEP}]
)
)
"
if [[ ${PV} != "9999" ]] ; then
BDEPEND+=" verify-sig? ( sec-keys/openpgp-keys-openzfs )"
fi
# awk is used for some scripts, completions, and the Dracut module
RDEPEND="
${DEPEND}
!kernel-builtin? ( ~sys-fs/zfs-kmod-${PV}:= )
!prefix? ( virtual/udev )
app-alternatives/awk
sys-fs/udev-init-scripts
dist-kernel? ( virtual/dist-kernel:= )
rootfs? (
app-alternatives/cpio
app-misc/pax-utils
)
selinux? ( sec-policy/selinux-zfs )
test-suite? (
app-shells/ksh
sys-apps/kmod[tools]
sys-apps/util-linux
app-alternatives/bc
sys-block/parted
sys-fs/lsscsi
sys-fs/mdadm
sys-process/procps
)
"
# PDEPEND in this form is needed to trick portage suggest
# enabling dist-kernel if only 1 package have it set, without suggesting to disable
PDEPEND="dist-kernel? ( ~sys-fs/zfs-kmod-${PV}[dist-kernel] )"
REQUIRED_USE="
!minimal? ( ${PYTHON_REQUIRED_USE} )
python? ( !minimal )
test-suite? ( !minimal )
"
RESTRICT="test"
PATCHES=(
"${FILESDIR}"/2.1.5-dracut-zfs-missing.patch
"${FILESDIR}"/2.3.2-musl_S_IFMT.patch
)
pkg_pretend() {
use rootfs || return 0
if has_version virtual/dist-kernel && ! use dist-kernel; then
ewarn "You have virtual/dist-kernel installed, but"
ewarn "USE=\"dist-kernel\" is not enabled for ${CATEGORY}/${PN}"
ewarn "It's recommended to globally enable dist-kernel USE flag"
ewarn "to auto-trigger initrd rebuilds with kernel updates"
fi
}
pkg_setup() {
if use kernel_linux; then
linux-info_pkg_setup
if ! linux_config_exists; then
ewarn "Cannot check the linux kernel configuration."
else
if use test-suite; then
if linux_chkconfig_present BLK_DEV_LOOP; then
eerror "The ZFS test suite requires loop device support enabled."
eerror "Please enable it:"
eerror " CONFIG_BLK_DEV_LOOP=y"
eerror "in /usr/src/linux/.config or"
eerror " Device Drivers --->"
eerror " Block devices --->"
eerror " [X] Loopback device support"
fi
fi
fi
fi
}
libsoversion_check() {
local bugurl libzfs_sover
bugurl="https://bugs.gentoo.org/enter_bug.cgi?form_name=enter_bug&product=Gentoo+Linux&component=Current+packages"
libzfs_sover="$(grep 'libzfs_la_LDFLAGS += -version-info' lib/libzfs/Makefile.am \
| grep -Eo '[0-9]+:[0-9]+:[0-9]+')"
libzfs_sover="${libzfs_sover%%:*}"
if [[ ${libzfs_sover} -ne $(ver_cut 2 ${SLOT}) ]]; then
echo
eerror "BUG BUG BUG BUG BUG BUG BUG BUG"
eerror "ebuild subslot does not match libzfs soversion!"
eerror "libzfs soversion: ${libzfs_sover}"
eerror "ebuild value: $(ver_cut 2 ${SLOT})"
eerror "This is a bug in the ebuild, please use the following URL to report it"
eerror "${bugurl}&short_desc=${CATEGORY}%2F${P}+update+subslot"
echo
# we want to abort for releases, but just print a warning for live ebuild
# to keep package installable
[[ ${PV} == "9999" ]] || die
fi
}
src_prepare() {
default
libsoversion_check
# Run unconditionally (bug #792627)
eautoreconf
if [[ ${PV} != "9999" ]]; then
# Set revision number
sed -i "s/\(Release:\)\(.*\)1/\1\2${PR}-gentoo/" META || die "Could not set Gentoo release"
fi
if use python; then
pushd contrib/pyzfs >/dev/null || die
distutils-r1_src_prepare
popd >/dev/null || die
fi
# Tries to use /etc/conf.d which we reserve for OpenRC
sed -i -e '/EnvironmentFile/d' etc/systemd/system/zfs*.in || die
# prevent errors showing up on zfs-mount stop, #647688
# openrc will unmount all filesystems anyway.
sed -i "/^ZFS_UNMOUNT=/ s/yes/no/" "etc/default/zfs.in" || die
}
src_configure() {
use custom-cflags || strip-flags
use minimal || python_setup
local myconf=(
--bindir="${EPREFIX}/bin"
--enable-shared
--enable-sysvinit
--localstatedir="${EPREFIX}/var"
--sbindir="${EPREFIX}/sbin"
--with-config=user
--with-dracutdir="${EPREFIX}/usr/lib/dracut"
--with-linux="${KV_DIR}"
--with-linux-obj="${KV_OUT_DIR}"
--with-udevdir="$(get_udevdir)"
--with-pamconfigsdir="${EPREFIX}/unwanted_files"
--with-pammoduledir="$(getpam_mod_dir)"
--with-systemdunitdir="$(systemd_get_systemunitdir)"
--with-systemdpresetdir="$(systemd_get_systempresetdir)"
--with-vendor=gentoo
# Building zfs-mount-generator.c on musl breaks as strndupa
# isn't available. But systemd doesn't support musl anyway, so
# just disable building it.
# UPDATE: it has been fixed since,
# https://github.com/openzfs/zfs/commit/1f19826c9ac85835cbde61a7439d9d1fefe43a4a
# but we still leave it as this for now.
$(use_enable !elibc_musl systemd)
$(use_enable debug)
$(use_enable nls)
$(use_enable pam)
$(use_enable python pyzfs)
$(use_with unwind libunwind)
--disable-static
$(usex minimal --without-python --with-python="${EPYTHON}")
)
econf "${myconf[@]}"
}
src_compile() {
default
if use python; then
pushd contrib/pyzfs >/dev/null || die
distutils-r1_src_compile
popd >/dev/null || die
fi
}
src_install() {
default
gen_usr_ldscript -a nvpair uutil zfsbootenv zfs zfs_core zpool
use pam && { rm -rv "${ED}/unwanted_files" || die ; }
use test-suite || { rm -r "${ED}"/usr/share/zfs/{test-runner,zfs-tests,runfiles,*sh} || die ; }
find "${ED}" -name '*.la' -delete || die
dobashcomp contrib/bash_completion.d/zfs
bashcomp_alias zfs zpool
# strip executable bit from conf.d file
fperms 0644 /etc/conf.d/zfs
if use python; then
pushd contrib/pyzfs >/dev/null || die
distutils-r1_src_install
popd >/dev/null || die
fi
# enforce best available python implementation
use minimal || python_fix_shebang "${ED}/bin"
}
pkg_postinst() {
udev_reload
# we always need userspace utils in sync with zfs-kmod
# so force initrd update for userspace as well, to avoid
# situation when zfs-kmod trigger initrd rebuild before
# userspace component is rebuilt
# KV_* variables are provided by linux-info.eclass
if [[ -z ${ROOT} ]] && use dist-kernel; then
dist-kernel_reinstall_initramfs "${KV_DIR}" "${KV_FULL}"
fi
if use rootfs; then
if ! has_version sys-kernel/genkernel && ! has_version sys-kernel/dracut; then
elog "Root on zfs requires an initramfs to boot"
elog "The following packages provide one and are tested on a regular basis:"
elog " sys-kernel/dracut ( preferred, module maintained by zfs developers )"
elog " sys-kernel/genkernel"
fi
fi
if systemd_is_booted || has_version sys-apps/systemd; then
einfo "Please refer to $(systemd_get_systempresetdir)/50-zfs.preset"
einfo "for default zfs systemd service configuration"
else
[[ -e "${EROOT}/etc/runlevels/boot/zfs-import" ]] || \
einfo "You should add zfs-import to the boot runlevel."
[[ -e "${EROOT}/etc/runlevels/boot/zfs-load-key" ]] || \
einfo "You should add zfs-load-key to the boot runlevel."
[[ -e "${EROOT}/etc/runlevels/boot/zfs-mount" ]]|| \
einfo "You should add zfs-mount to the boot runlevel."
[[ -e "${EROOT}/etc/runlevels/default/zfs-share" ]] || \
einfo "You should add zfs-share to the default runlevel."
[[ -e "${EROOT}/etc/runlevels/default/zfs-zed" ]] || \
einfo "You should add zfs-zed to the default runlevel."
fi
}
pkg_postrm() {
udev_reload
}

View File

@ -30,7 +30,7 @@ else
S="${WORKDIR}/${MY_P}"
if [[ ${PV} != *_rc* ]]; then
KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~sparc"
KEYWORDS="amd64 ~arm64 ~loong ~ppc64 ~riscv ~sparc"
fi
fi

View File

@ -10,7 +10,7 @@ EAPI=8
DISTUTILS_OPTIONAL=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{10..13} )
PYTHON_COMPAT=( python3_{11..14} )
inherit autotools bash-completion-r1 dist-kernel-utils distutils-r1 flag-o-matic linux-info pam systemd udev usr-ldscript

View File

@ -21,7 +21,7 @@ inherit linux-mod-r1 multiprocessing pam systemd udev usr-ldscript
DESCRIPTION="Linux kernel module and userland utilities for ZFS"
HOMEPAGE="https://github.com/openzfs/zfs"
MODULES_KERNEL_MAX=6.17
MODULES_KERNEL_MAX=6.18
MODULES_KERNEL_MIN=4.18
if [[ ${PV} == "9999" ]]; then
@ -50,7 +50,7 @@ LICENSE="BSD-2 CDDL MIT modules? ( debug? ( GPL-2+ ) )"
# just libzfs soname major for now.
# possible candidates: libuutil, libzpool, libnvpair. Those do not provide stable abi, but are considered.
# see libsoversion_check() below as well
SLOT="0/6"
SLOT="0/7"
IUSE="custom-cflags debug dist-kernel minimal nls pam python +rootfs selinux test-suite unwind"
DEPEND="

View File

@ -1,436 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# Maintainers should consider lurking in the ZFS IRC channels (there's several)
# and regularly checking ZFS GitHub issues and PRs. Look out for the 'zfs-*'
# stable backport PRs when they're opened and subscribe to them for any important
# cherry-picks that may be needed in advance.
DISTUTILS_OPTIONAL=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{10..14} )
MODULES_INITRAMFS_IUSE=+initramfs
MODULES_OPTIONAL_IUSE=+modules
inherit autotools bash-completion-r1 distutils-r1 flag-o-matic linux-info
inherit linux-mod-r1 multiprocessing pam systemd udev usr-ldscript
DESCRIPTION="Linux kernel module and userland utilities for ZFS"
HOMEPAGE="https://github.com/openzfs/zfs"
MODULES_KERNEL_MAX=6.17
MODULES_KERNEL_MIN=4.18
if [[ ${PV} == "9999" ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/openzfs/zfs.git"
else
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/openzfs.asc
inherit verify-sig
MY_P="${P/_rc/-rc}"
SRC_URI="https://github.com/openzfs/${PN}/releases/download/${MY_P}/${MY_P}.tar.gz"
SRC_URI+=" verify-sig? ( https://github.com/openzfs/${PN}/releases/download/${MY_P}/${MY_P}.tar.gz.asc )"
S="${WORKDIR}/${MY_P}"
ZFS_KERNEL_COMPAT="${MODULES_KERNEL_MAX}"
# Increments minor eg 5.14 -> 5.15, and still supports override.
ZFS_KERNEL_DEP="${ZFS_KERNEL_COMPAT_OVERRIDE:-${ZFS_KERNEL_COMPAT}}"
ZFS_KERNEL_DEP="${ZFS_KERNEL_DEP%%.*}.$(( ${ZFS_KERNEL_DEP##*.} + 1))"
if [[ ${PV} != *_rc* ]]; then
KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~sparc"
fi
fi
LICENSE="BSD-2 CDDL MIT modules? ( debug? ( GPL-2+ ) )"
# just libzfs soname major for now.
# possible candidates: libuutil, libzpool, libnvpair. Those do not provide stable abi, but are considered.
# see libsoversion_check() below as well
SLOT="0/6"
IUSE="custom-cflags debug dist-kernel minimal nls pam python +rootfs selinux test-suite unwind"
DEPEND="
dev-libs/openssl:=
net-libs/libtirpc:=
sys-apps/util-linux
virtual/zlib:=
virtual/libudev:=
!minimal? ( ${PYTHON_DEPS} )
pam? ( sys-libs/pam )
python? (
$(python_gen_cond_dep 'dev-python/cffi[${PYTHON_USEDEP}]' 'python*')
)
unwind? ( sys-libs/libunwind:= )
"
BDEPEND="
app-alternatives/awk
virtual/pkgconfig
modules? ( dev-lang/perl )
nls? ( sys-devel/gettext )
python? (
${DISTUTILS_DEPS}
|| (
dev-python/packaging[${PYTHON_USEDEP}]
dev-python/distlib[${PYTHON_USEDEP}]
)
)
"
if [[ ${PV} != "9999" ]] ; then
BDEPEND+=" verify-sig? ( sec-keys/openpgp-keys-openzfs )"
IUSE+=" +dist-kernel-cap"
RDEPEND="
dist-kernel-cap? ( dist-kernel? (
<virtual/dist-kernel-${ZFS_KERNEL_DEP}
) )
"
fi
# awk is used for some scripts, completions, and the Dracut module
RDEPEND="
${DEPEND}
!prefix? ( virtual/udev )
app-alternatives/awk
sys-fs/udev-init-scripts
dist-kernel? ( virtual/dist-kernel:= )
rootfs? (
app-alternatives/cpio
app-misc/pax-utils
)
selinux? ( sec-policy/selinux-zfs )
test-suite? (
app-shells/ksh
sys-apps/kmod[tools]
sys-apps/util-linux
app-alternatives/bc
sys-block/parted
sys-fs/lsscsi
sys-fs/mdadm
sys-process/procps
)
!<sys-fs/zfs-kmod-2.4.0_rc2-r1
"
REQUIRED_USE="
!minimal? ( ${PYTHON_REQUIRED_USE} )
python? ( !minimal )
test-suite? ( !minimal )
"
RESTRICT="test"
PATCHES=(
"${FILESDIR}"/${PN}-2.1.11-gentoo.patch
)
pkg_pretend() {
use rootfs || return 0
if has_version virtual/dist-kernel && ! use dist-kernel; then
ewarn "You have virtual/dist-kernel installed, but"
ewarn "USE=\"dist-kernel\" is not enabled for ${CATEGORY}/${PN}"
ewarn "It's recommended to globally enable dist-kernel USE flag"
ewarn "to auto-trigger initrd rebuilds with kernel updates"
fi
}
pkg_setup() {
if use kernel_linux; then
if use modules; then
local CONFIG_CHECK="
EFI_PARTITION
ZLIB_DEFLATE
ZLIB_INFLATE
!DEBUG_LOCK_ALLOC
!PAX_KERNEXEC_PLUGIN_METHOD_OR
"
use debug && CONFIG_CHECK+="
DEBUG_INFO
FRAME_POINTER
!DEBUG_INFO_REDUCED
"
use rootfs && CONFIG_CHECK+="
BLK_DEV_INITRD
DEVTMPFS
"
kernel_is -lt 5 && CONFIG_CHECK+=" IOSCHED_NOOP"
if [[ ${PV} != 9999 ]] ; then
local kv_major_max kv_minor_max zcompat
zcompat="${ZFS_KERNEL_COMPAT_OVERRIDE:-${ZFS_KERNEL_COMPAT}}"
kv_major_max="${zcompat%%.*}"
zcompat="${zcompat#*.}"
kv_minor_max="${zcompat%%.*}"
kernel_is -le "${kv_major_max}" "${kv_minor_max}" || die \
"Linux ${kv_major_max}.${kv_minor_max} is the latest supported version"
fi
linux-mod-r1_pkg_setup
else
linux-info_pkg_setup
fi
if ! linux_config_exists; then
ewarn "Cannot check the linux kernel configuration."
else
if use test-suite; then
if linux_chkconfig_present BLK_DEV_LOOP; then
eerror "The ZFS test suite requires loop device support enabled."
eerror "Please enable it:"
eerror " CONFIG_BLK_DEV_LOOP=y"
eerror "in /usr/src/linux/.config or"
eerror " Device Drivers --->"
eerror " Block devices --->"
eerror " [X] Loopback device support"
fi
fi
fi
fi
}
libsoversion_check() {
local bugurl libzfs_sover
bugurl="https://bugs.gentoo.org/enter_bug.cgi?form_name=enter_bug&product=Gentoo+Linux&component=Current+packages"
libzfs_sover="$(grep 'libzfs_la_LDFLAGS += -version-info' lib/libzfs/Makefile.am \
| grep -Eo '[0-9]+:[0-9]+:[0-9]+')"
libzfs_sover="${libzfs_sover%%:*}"
if [[ ${libzfs_sover} -ne $(ver_cut 2 ${SLOT}) ]]; then
echo
eerror "BUG BUG BUG BUG BUG BUG BUG BUG"
eerror "ebuild subslot does not match libzfs soversion!"
eerror "libzfs soversion: ${libzfs_sover}"
eerror "ebuild value: $(ver_cut 2 ${SLOT})"
eerror "This is a bug in the ebuild, please use the following URL to report it"
eerror "${bugurl}&short_desc=${CATEGORY}%2F${P}+update+subslot"
echo
# we want to abort for releases, but just print a warning for live ebuild
# to keep package installable
[[ ${PV} == "9999" ]] || die
fi
}
src_prepare() {
default
libsoversion_check
# Run unconditionally (bug #792627)
eautoreconf
if [[ ${PV} != "9999" ]]; then
# Set revision number
sed -i "s/\(Release:\)\(.*\)1/\1\2${PR}-gentoo/" META || die "Could not set Gentoo release"
fi
if use python; then
pushd contrib/pyzfs >/dev/null || die
distutils-r1_src_prepare
popd >/dev/null || die
fi
# Tries to use /etc/conf.d which we reserve for OpenRC
sed -i -e '/EnvironmentFile/d' etc/systemd/system/zfs*.in || die
# prevent errors showing up on zfs-mount stop, #647688
# openrc will unmount all filesystems anyway.
sed -i "/^ZFS_UNMOUNT=/ s/yes/no/" "etc/default/zfs.in" || die
}
src_configure() {
use custom-cflags || strip-flags
use minimal || python_setup
local myconf=(
--bindir="${EPREFIX}/bin"
--sbindir="${EPREFIX}/sbin"
--enable-shared
--enable-sysvinit
--localstatedir="${EPREFIX}/var"
--sbindir="${EPREFIX}/sbin"
--with-config="$(usex modules all user)"
--with-dracutdir="${EPREFIX}/usr/lib/dracut"
--with-linux="${KV_DIR}"
--with-linux-obj="${KV_OUT_DIR}"
--with-udevdir="$(get_udevdir)"
--with-pamconfigsdir="${EPREFIX}/unwanted_files"
--with-pammoduledir="$(getpam_mod_dir)"
--with-systemdunitdir="$(systemd_get_systemunitdir)"
--with-systemdpresetdir="$(systemd_get_systempresetdir)"
--with-vendor=gentoo
# Building zfs-mount-generator.c on musl breaks as strndupa
# isn't available. But systemd doesn't support musl anyway, so
# just disable building it.
# UPDATE: it has been fixed since,
# https://github.com/openzfs/zfs/commit/1f19826c9ac85835cbde61a7439d9d1fefe43a4a
# but we still leave it as this for now.
$(use_enable !elibc_musl systemd)
$(use_enable debug)
$(use_enable nls)
$(use_enable pam)
$(use_enable python pyzfs)
$(use_with unwind libunwind)
--disable-static
$(usex minimal --without-python --with-python="${EPYTHON}")
# See gentoo.patch
GENTOO_MAKEARGS_EVAL="${MODULES_MAKEARGS[*]@Q}"
TEST_JOBS="$(makeopts_jobs)"
)
econf "${myconf[@]}"
}
src_compile() {
if use modules; then
emake "${MODULES_MAKEARGS[@]}"
else
default
fi
if use python; then
pushd contrib/pyzfs >/dev/null || die
distutils-r1_src_compile
popd >/dev/null || die
fi
}
src_install() {
DOCS=( AUTHORS COPYRIGHT META README.md )
if use modules; then
emake "${MODULES_MAKEARGS[@]}" DESTDIR="${ED}" install
modules_post_process
einstalldocs
else
default
fi
# distutils-r1_src_install tries to run einstalldocs as well
# bug #965156
unset DOCS
gen_usr_ldscript -a nvpair uutil zfsbootenv zfs zfs_core zpool
use pam && { rm -rv "${ED}/unwanted_files" || die ; }
use test-suite || { rm -r "${ED}"/usr/share/zfs/{test-runner,zfs-tests,runfiles,*sh} || die ; }
find "${ED}" -name '*.la' -delete || die
dobashcomp contrib/bash_completion.d/zfs
bashcomp_alias zfs zpool
# strip executable bit from conf.d file
fperms 0644 /etc/conf.d/zfs
if use python; then
pushd contrib/pyzfs >/dev/null || die
distutils-r1_src_install
popd >/dev/null || die
fi
# enforce best available python implementation
use minimal || python_fix_shebang "${ED}/bin"
}
_old_layout_cleanup() {
# new files are just extra/{spl,zfs}.ko with no subdirs.
local olddir=(
avl/zavl
icp/icp
lua/zlua
nvpair/znvpair
spl/spl
unicode/zunicode
zcommon/zcommon
zfs/zfs
zstd/zzstd
)
# kernel/module/Kconfig contains possible compressed extentions.
local kext kextfiles
for kext in .ko{,.{gz,xz,zst}}; do
kextfiles+=( "${olddir[@]/%/${kext}}" )
done
local oldfile oldpath
for oldfile in "${kextfiles[@]}"; do
oldpath="${EROOT}/lib/modules/${KV_FULL}/extra/${oldfile}"
if [[ -f "${oldpath}" ]]; then
ewarn "Found obsolete zfs module ${oldfile} for current kernel ${KV_FULL}, removing."
rm -rv "${oldpath}" || die
# we do not remove non-empty directories just for safety in case there's something else.
# also it may fail if there are both compressed and uncompressed modules installed.
rmdir -v --ignore-fail-on-non-empty "${oldpath%/*.*}" || die
fi
done
}
pkg_postinst() {
udev_reload
if use modules; then
# Check for old module layout before doing anything else.
# only attempt layout cleanup if new .ko location is used.
local newko=( "${EROOT}/lib/modules/${KV_FULL}/extra"/{zfs,spl}.ko* )
# We check first array member, if glob above did not exand, it will be "zfs.ko*" and -f will return false.
# if glob expanded -f will do correct file precense check.
[[ -f ${newko[0]} ]] && _old_layout_cleanup
linux-mod-r1_pkg_postinst
if use x86 || use arm ; then
ewarn "32-bit kernels will likely require increasing vmalloc to"
ewarn "at least 256M and decreasing zfs_arc_max to some value less than that."
fi
if has_version sys-boot/grub ; then
ewarn "This version of OpenZFS includes support for new feature flags"
ewarn "that are incompatible with previous versions. GRUB2 support for"
ewarn "/boot with the new feature flags is not yet available."
ewarn "Do *NOT* upgrade root pools to use the new feature flags."
ewarn "Any new pools will be created with the new feature flags by default"
ewarn "and will not be compatible with older versions of OpenZFS. To"
ewarn "create a new pool that is backward compatible wih GRUB2, use "
ewarn
ewarn "zpool create -o compatibility=grub2 ..."
ewarn
ewarn "Refer to /usr/share/zfs/compatibility.d/grub2 for list of features."
fi
fi
if use rootfs; then
if ! has_version sys-kernel/genkernel && ! has_version sys-kernel/dracut; then
elog "Root on zfs requires an initramfs to boot"
elog "The following packages provide one and are tested on a regular basis:"
elog " sys-kernel/dracut ( preferred, module maintained by zfs developers )"
elog " sys-kernel/genkernel"
fi
fi
if systemd_is_booted || has_version sys-apps/systemd; then
einfo "Please refer to $(systemd_get_systempresetdir)/50-zfs.preset"
einfo "for default zfs systemd service configuration"
else
[[ -e "${EROOT}/etc/runlevels/boot/zfs-import" ]] || \
einfo "You should add zfs-import to the boot runlevel."
[[ -e "${EROOT}/etc/runlevels/boot/zfs-load-key" ]] || \
einfo "You should add zfs-load-key to the boot runlevel."
[[ -e "${EROOT}/etc/runlevels/boot/zfs-mount" ]]|| \
einfo "You should add zfs-mount to the boot runlevel."
[[ -e "${EROOT}/etc/runlevels/default/zfs-share" ]] || \
einfo "You should add zfs-share to the default runlevel."
[[ -e "${EROOT}/etc/runlevels/default/zfs-zed" ]] || \
einfo "You should add zfs-zed to the default runlevel."
fi
}
pkg_postrm() {
udev_reload
}

View File

@ -1,312 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# Maintainers should consider lurking in the ZFS IRC channels (there's several)
# and regularly checking ZFS GitHub issues and PRs. Look out for the 'zfs-*'
# stable backport PRs when they're opened and subscribe to them for any important
# cherry-picks that may be needed in advance.
DISTUTILS_OPTIONAL=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{11..13} )
inherit autotools bash-completion-r1 dist-kernel-utils distutils-r1 flag-o-matic \
linux-info pam systemd udev usr-ldscript
DESCRIPTION="Userland utilities for ZFS Linux kernel module"
HOMEPAGE="https://github.com/openzfs/zfs"
if [[ ${PV} == "9999" ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/openzfs/zfs.git"
else
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/openzfs.asc
inherit verify-sig
MY_P="${P/_rc/-rc}"
SRC_URI="https://github.com/openzfs/${PN}/releases/download/${MY_P}/${MY_P}.tar.gz"
SRC_URI+=" verify-sig? ( https://github.com/openzfs/${PN}/releases/download/${MY_P}/${MY_P}.tar.gz.asc )"
S="${WORKDIR}/${MY_P}"
if [[ ${PV} != *_rc* ]]; then
KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~sparc"
fi
fi
LICENSE="BSD-2 CDDL MIT"
# just libzfs soname major for now.
# possible candidates: libuutil, libzpool, libnvpair. Those do not provide stable abi, but are considered.
# see libsoversion_check() below as well
SLOT="0/6"
IUSE="custom-cflags debug dist-kernel kernel-builtin minimal nls pam python +rootfs selinux test-suite unwind"
DEPEND="
dev-libs/openssl:=
net-libs/libtirpc:=
sys-apps/util-linux
virtual/zlib:=
virtual/libudev:=
!minimal? ( ${PYTHON_DEPS} )
pam? ( sys-libs/pam )
python? (
$(python_gen_cond_dep 'dev-python/cffi[${PYTHON_USEDEP}]' 'python*')
)
unwind? ( sys-libs/libunwind:= )
"
BDEPEND="
app-alternatives/awk
virtual/pkgconfig
nls? ( sys-devel/gettext )
python? (
${DISTUTILS_DEPS}
|| (
dev-python/packaging[${PYTHON_USEDEP}]
dev-python/distlib[${PYTHON_USEDEP}]
)
)
"
if [[ ${PV} != "9999" ]] ; then
BDEPEND+=" verify-sig? ( sec-keys/openpgp-keys-openzfs )"
fi
# awk is used for some scripts, completions, and the Dracut module
RDEPEND="
${DEPEND}
!kernel-builtin? ( ~sys-fs/zfs-kmod-${PV}:= )
!prefix? ( virtual/udev )
app-alternatives/awk
sys-fs/udev-init-scripts
dist-kernel? ( virtual/dist-kernel:= )
rootfs? (
app-alternatives/cpio
app-misc/pax-utils
)
selinux? ( sec-policy/selinux-zfs )
test-suite? (
app-shells/ksh
sys-apps/kmod[tools]
sys-apps/util-linux
app-alternatives/bc
sys-block/parted
sys-fs/lsscsi
sys-fs/mdadm
sys-process/procps
)
"
# PDEPEND in this form is needed to trick portage suggest
# enabling dist-kernel if only 1 package have it set, without suggesting to disable
PDEPEND="dist-kernel? ( ~sys-fs/zfs-kmod-${PV}[dist-kernel] )"
REQUIRED_USE="
!minimal? ( ${PYTHON_REQUIRED_USE} )
python? ( !minimal )
test-suite? ( !minimal )
"
RESTRICT="test"
PATCHES=()
pkg_pretend() {
use rootfs || return 0
if has_version virtual/dist-kernel && ! use dist-kernel; then
ewarn "You have virtual/dist-kernel installed, but"
ewarn "USE=\"dist-kernel\" is not enabled for ${CATEGORY}/${PN}"
ewarn "It's recommended to globally enable dist-kernel USE flag"
ewarn "to auto-trigger initrd rebuilds with kernel updates"
fi
}
pkg_setup() {
if use kernel_linux; then
linux-info_pkg_setup
if ! linux_config_exists; then
ewarn "Cannot check the linux kernel configuration."
else
if use test-suite; then
if linux_chkconfig_present BLK_DEV_LOOP; then
eerror "The ZFS test suite requires loop device support enabled."
eerror "Please enable it:"
eerror " CONFIG_BLK_DEV_LOOP=y"
eerror "in /usr/src/linux/.config or"
eerror " Device Drivers --->"
eerror " Block devices --->"
eerror " [X] Loopback device support"
fi
fi
fi
fi
}
libsoversion_check() {
local bugurl libzfs_sover
bugurl="https://bugs.gentoo.org/enter_bug.cgi?form_name=enter_bug&product=Gentoo+Linux&component=Current+packages"
libzfs_sover="$(grep 'libzfs_la_LDFLAGS += -version-info' lib/libzfs/Makefile.am \
| grep -Eo '[0-9]+:[0-9]+:[0-9]+')"
libzfs_sover="${libzfs_sover%%:*}"
if [[ ${libzfs_sover} -ne $(ver_cut 2 ${SLOT}) ]]; then
echo
eerror "BUG BUG BUG BUG BUG BUG BUG BUG"
eerror "ebuild subslot does not match libzfs soversion!"
eerror "libzfs soversion: ${libzfs_sover}"
eerror "ebuild value: $(ver_cut 2 ${SLOT})"
eerror "This is a bug in the ebuild, please use the following URL to report it"
eerror "${bugurl}&short_desc=${CATEGORY}%2F${P}+update+subslot"
echo
# we want to abort for releases, but just print a warning for live ebuild
# to keep package installable
[[ ${PV} == "9999" ]] || die
fi
}
src_prepare() {
default
libsoversion_check
# Run unconditionally (bug #792627)
eautoreconf
if [[ ${PV} != "9999" ]]; then
# Set revision number
sed -i "s/\(Release:\)\(.*\)1/\1\2${PR}-gentoo/" META || die "Could not set Gentoo release"
fi
if use python; then
pushd contrib/pyzfs >/dev/null || die
distutils-r1_src_prepare
popd >/dev/null || die
fi
# Tries to use /etc/conf.d which we reserve for OpenRC
sed -i -e '/EnvironmentFile/d' etc/systemd/system/zfs*.in || die
# prevent errors showing up on zfs-mount stop, #647688
# openrc will unmount all filesystems anyway.
sed -i "/^ZFS_UNMOUNT=/ s/yes/no/" "etc/default/zfs.in" || die
}
src_configure() {
use custom-cflags || strip-flags
use minimal || python_setup
local myconf=(
--bindir="${EPREFIX}/bin"
--enable-shared
--enable-sysvinit
--localstatedir="${EPREFIX}/var"
--sbindir="${EPREFIX}/sbin"
--with-config=user
--with-dracutdir="${EPREFIX}/usr/lib/dracut"
--with-linux="${KV_DIR}"
--with-linux-obj="${KV_OUT_DIR}"
--with-udevdir="$(get_udevdir)"
--with-pamconfigsdir="${EPREFIX}/unwanted_files"
--with-pammoduledir="$(getpam_mod_dir)"
--with-systemdunitdir="$(systemd_get_systemunitdir)"
--with-systemdpresetdir="$(systemd_get_systempresetdir)"
--with-vendor=gentoo
# Building zfs-mount-generator.c on musl breaks as strndupa
# isn't available. But systemd doesn't support musl anyway, so
# just disable building it.
# UPDATE: it has been fixed since,
# https://github.com/openzfs/zfs/commit/1f19826c9ac85835cbde61a7439d9d1fefe43a4a
# but we still leave it as this for now.
$(use_enable !elibc_musl systemd)
$(use_enable debug)
$(use_enable nls)
$(use_enable pam)
$(use_enable python pyzfs)
$(use_with unwind libunwind)
--disable-static
$(usex minimal --without-python --with-python="${EPYTHON}")
)
econf "${myconf[@]}"
}
src_compile() {
default
if use python; then
pushd contrib/pyzfs >/dev/null || die
distutils-r1_src_compile
popd >/dev/null || die
fi
}
src_install() {
default
gen_usr_ldscript -a nvpair uutil zfsbootenv zfs zfs_core zpool
use pam && { rm -rv "${ED}/unwanted_files" || die ; }
use test-suite || { rm -r "${ED}"/usr/share/zfs/{test-runner,zfs-tests,runfiles,*sh} || die ; }
find "${ED}" -name '*.la' -delete || die
dobashcomp contrib/bash_completion.d/zfs
bashcomp_alias zfs zpool
# strip executable bit from conf.d file
fperms 0644 /etc/conf.d/zfs
if use python; then
pushd contrib/pyzfs >/dev/null || die
distutils-r1_src_install
popd >/dev/null || die
fi
# enforce best available python implementation
use minimal || python_fix_shebang "${ED}/bin"
}
pkg_postinst() {
udev_reload
# we always need userspace utils in sync with zfs-kmod
# so force initrd update for userspace as well, to avoid
# situation when zfs-kmod trigger initrd rebuild before
# userspace component is rebuilt
# KV_* variables are provided by linux-info.eclass
if [[ -z ${ROOT} ]] && use dist-kernel; then
dist-kernel_reinstall_initramfs "${KV_DIR}" "${KV_FULL}"
fi
if use rootfs; then
if ! has_version sys-kernel/genkernel && ! has_version sys-kernel/dracut; then
elog "Root on zfs requires an initramfs to boot"
elog "The following packages provide one and are tested on a regular basis:"
elog " sys-kernel/dracut ( preferred, module maintained by zfs developers )"
elog " sys-kernel/genkernel"
fi
fi
if systemd_is_booted || has_version sys-apps/systemd; then
einfo "Please refer to $(systemd_get_systempresetdir)/50-zfs.preset"
einfo "for default zfs systemd service configuration"
else
[[ -e "${EROOT}/etc/runlevels/boot/zfs-import" ]] || \
einfo "You should add zfs-import to the boot runlevel."
[[ -e "${EROOT}/etc/runlevels/boot/zfs-load-key" ]] || \
einfo "You should add zfs-load-key to the boot runlevel."
[[ -e "${EROOT}/etc/runlevels/boot/zfs-mount" ]]|| \
einfo "You should add zfs-mount to the boot runlevel."
[[ -e "${EROOT}/etc/runlevels/default/zfs-share" ]] || \
einfo "You should add zfs-share to the default runlevel."
[[ -e "${EROOT}/etc/runlevels/default/zfs-zed" ]] || \
einfo "You should add zfs-zed to the default runlevel."
fi
}
pkg_postrm() {
udev_reload
}

View File

@ -10,7 +10,7 @@ EAPI=8
DISTUTILS_OPTIONAL=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{10..14} )
PYTHON_COMPAT=( python3_{11..14} )
MODULES_INITRAMFS_IUSE=+initramfs
MODULES_OPTIONAL_IUSE=+modules
@ -21,7 +21,7 @@ inherit linux-mod-r1 multiprocessing pam systemd udev usr-ldscript
DESCRIPTION="Linux kernel module and userland utilities for ZFS"
HOMEPAGE="https://github.com/openzfs/zfs"
MODULES_KERNEL_MAX=6.17
MODULES_KERNEL_MAX=6.18
MODULES_KERNEL_MIN=4.18
if [[ ${PV} == "9999" ]]; then
@ -48,9 +48,9 @@ fi
LICENSE="BSD-2 CDDL MIT modules? ( debug? ( GPL-2+ ) )"
# just libzfs soname major for now.
# possible candidates: libuutil, libzpool, libnvpair. Those do not provide stable abi, but are considered.
# possible candidates are libzpool and libnvpair. Those do not provide stable abi, but are considered.
# see libsoversion_check() below as well
SLOT="0/6"
SLOT="0/7"
IUSE="custom-cflags debug dist-kernel minimal nls pam python +rootfs selinux test-suite unwind"
DEPEND="
@ -304,6 +304,7 @@ src_compile() {
src_install() {
DOCS=( AUTHORS COPYRIGHT META README.md )
if use modules; then
emake "${MODULES_MAKEARGS[@]}" DESTDIR="${ED}" install
modules_post_process
@ -315,7 +316,7 @@ src_install() {
# bug #965156
unset DOCS
gen_usr_ldscript -a nvpair uutil zfsbootenv zfs zfs_core zpool
gen_usr_ldscript -a nvpair zfsbootenv zfs zfs_core zpool
use pam && { rm -rv "${ED}/unwanted_files" || die ; }