summaryrefslogtreecommitdiff
path: root/sys-fs
diff options
context:
space:
mode:
Diffstat (limited to 'sys-fs')
-rw-r--r--sys-fs/btrfs-progs/btrfs-progs-6.17.1.ebuild2
-rw-r--r--sys-fs/xfsprogs/files/xfsprogs-6.17.0-ioctl.patch66
-rw-r--r--sys-fs/xfsprogs/xfsprogs-6.17.0-r1.ebuild114
-rw-r--r--sys-fs/xfsprogs/xfsprogs-6.17.0.ebuild2
-rw-r--r--sys-fs/zfs/Manifest2
-rw-r--r--sys-fs/zfs/zfs-2.4.0_rc5.ebuild437
-rw-r--r--sys-fs/zfs/zfs-9999.ebuild2
7 files changed, 622 insertions, 3 deletions
diff --git a/sys-fs/btrfs-progs/btrfs-progs-6.17.1.ebuild b/sys-fs/btrfs-progs/btrfs-progs-6.17.1.ebuild
index ad1b1253f165..527c906b2c0c 100644
--- a/sys-fs/btrfs-progs/btrfs-progs-6.17.1.ebuild
+++ b/sys-fs/btrfs-progs/btrfs-progs-6.17.1.ebuild
@@ -26,7 +26,7 @@ else
S="${WORKDIR}"/${PN}-${MY_PV}
if [[ ${PV} != *_rc* ]] ; then
- KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+ KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
fi
fi
diff --git a/sys-fs/xfsprogs/files/xfsprogs-6.17.0-ioctl.patch b/sys-fs/xfsprogs/files/xfsprogs-6.17.0-ioctl.patch
new file mode 100644
index 000000000000..70c7cdb6fec8
--- /dev/null
+++ b/sys-fs/xfsprogs/files/xfsprogs-6.17.0-ioctl.patch
@@ -0,0 +1,66 @@
+https://lore.kernel.org/linux-xfs/20251205143154.366055-2-aalbersh@kernel.org/
+https://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git/commit/?h=for-next&id=3147d1d643c8278f1b75dedf3a64037bece7da53
+
+From 3147d1d643c8278f1b75dedf3a64037bece7da53 Mon Sep 17 00:00:00 2001
+From: Arkadiusz Miśkiewicz <arekm@maven.pl>
+Date: Fri, 5 Dec 2025 15:31:48 +0100
+Subject: libfrog: fix incorrect FS_IOC_FSSETXATTR argument to ioctl()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+xfsprogs 6.17.0 has broken project quota due to incorrect argument
+passed to FS_IOC_FSSETXATTR ioctl(). Instead of passing struct fsxattr,
+struct file_attr was passed.
+
+# LC_ALL=C /usr/sbin/xfs_quota -x -c "project -s -p /home/xxx 389701" /home
+Setting up project 389701 (path /home/xxx)...
+xfs_quota: cannot set project on /home/xxx: Invalid argument
+Processed 1 (/etc/projects and cmdline) paths for project 389701 with
+recursion depth infinite (-1).
+
+ioctl(5, FS_IOC_FSSETXATTR, {fsx_xflags=FS_XFLAG_PROJINHERIT|FS_XFLAG_HASATTR, fsx_extsize=0, fsx_projid=0, fsx_cowextsize=389701}) = -1 EINVAL (Invalid argument)
+
+There seems to be a double mistake which hides the original ioctl()
+argument bug on old kernel with xfsprogs built against it. The size of
+fa_xflags was also wrong in xfsprogs's linux.h header. This way when
+xfsprogs is compiled on newer kernel but used with older kernel this bug
+uncovers.
+
+Reviewed-by: Darrick J. Wong <djwong@kernel.org>
+Reviewed-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Arkadiusz Miśkiewicz <arekm@maven.pl>
+Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
+---
+ include/linux.h | 2 +-
+ libfrog/file_attr.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/include/linux.h b/include/linux.h
+index cea468d2b9..3ea9016272 100644
+--- a/include/linux.h
++++ b/include/linux.h
+@@ -214,7 +214,7 @@ struct fsxattr {
+ * fsxattr
+ */
+ struct file_attr {
+- __u32 fa_xflags;
++ __u64 fa_xflags;
+ __u32 fa_extsize;
+ __u32 fa_nextents;
+ __u32 fa_projid;
+diff --git a/libfrog/file_attr.c b/libfrog/file_attr.c
+index c2cbcb4e14..6801c54588 100644
+--- a/libfrog/file_attr.c
++++ b/libfrog/file_attr.c
+@@ -114,7 +114,7 @@ xfrog_file_setattr(
+
+ file_attr_to_fsxattr(fa, &fsxa);
+
+- error = ioctl(fd, FS_IOC_FSSETXATTR, fa);
++ error = ioctl(fd, FS_IOC_FSSETXATTR, &fsxa);
+ close(fd);
+
+ return error;
+--
+cgit 1.2.3-korg
diff --git a/sys-fs/xfsprogs/xfsprogs-6.17.0-r1.ebuild b/sys-fs/xfsprogs/xfsprogs-6.17.0-r1.ebuild
new file mode 100644
index 000000000000..6df2f7dc0283
--- /dev/null
+++ b/sys-fs/xfsprogs/xfsprogs-6.17.0-r1.ebuild
@@ -0,0 +1,114 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic systemd udev
+
+DESCRIPTION="XFS filesystem utilities"
+HOMEPAGE="https://xfs.wiki.kernel.org/ https://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git/"
+SRC_URI="https://www.kernel.org/pub/linux/utils/fs/xfs/${PN}/${P}.tar.xz"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+IUSE="icu libedit nls selinux static-libs"
+
+RDEPEND="
+ dev-libs/inih
+ dev-libs/userspace-rcu:=
+ >=sys-apps/util-linux-2.17.2
+ icu? ( dev-libs/icu:= )
+ libedit? ( dev-libs/libedit )
+"
+DEPEND="
+ ${RDEPEND}
+ >=sys-kernel/linux-headers-6.11
+"
+BDEPEND="nls? ( sys-devel/gettext )"
+RDEPEND+=" selinux? ( sec-policy/selinux-xfs )"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-6.17.0-ioctl.patch
+)
+
+src_prepare() {
+ default
+
+ # Fix doc dir
+ sed -i \
+ -e "/^PKG_DOC_DIR/s:@pkg_name@:${PF}:" \
+ include/builddefs.in || die
+
+ # Don't install compressed docs
+ sed 's@\(CHANGES\)\.gz[[:space:]]@\1 @' -i doc/Makefile || die
+}
+
+src_configure() {
+ # include/builddefs.in will add FCFLAGS to CFLAGS which will
+ # unnecessarily clutter CFLAGS (and fortran isn't used)
+ unset FCFLAGS
+
+ # If set in user env, this breaks configure
+ unset PLATFORM
+
+ export DEBUG=-DNDEBUG
+
+ # Package is honoring CFLAGS; No need to use OPTIMIZER anymore.
+ # However, we have to provide an empty value to avoid default
+ # flags.
+ export OPTIMIZER=" "
+
+ # Avoid automagic on libdevmapper (bug #709694)
+ export ac_cv_search_dm_task_create=no
+
+ # bug 903611
+ use elibc_musl && append-flags -D_LARGEFILE64_SOURCE
+
+ # Upstream does NOT support --disable-static anymore,
+ # https://www.spinics.net/lists/linux-xfs/msg30185.html
+ # https://www.spinics.net/lists/linux-xfs/msg30272.html
+ local myconf=(
+ --enable-static
+ # Doesn't do anything beyond adding -flto (bug #930947).
+ --disable-lto
+ # The default value causes double 'lib'
+ --localstatedir="${EPREFIX}/var"
+ --with-crond-dir="${EPREFIX}/etc/cron.d"
+ --with-systemd-unit-dir="$(systemd_get_systemunitdir)"
+ --with-udev-rule-dir="$(get_udevdir)/rules.d"
+ $(use_enable icu libicu)
+ $(use_enable nls gettext)
+ $(use_enable libedit editline)
+ )
+
+ econf "${myconf[@]}"
+}
+
+src_compile() {
+ emake V=1
+}
+
+src_install() {
+ # XXX: There's a missing dep in the install-dev target, so split it
+ emake DIST_ROOT="${ED}" HAVE_ZIPPED_MANPAGES=false install
+ emake DIST_ROOT="${ED}" HAVE_ZIPPED_MANPAGES=false install-dev
+
+ # Not actually used but --localstatedir causes this empty dir
+ # to be installed.
+ rmdir "${ED}"/var/lib/xfsprogs "${ED}"/var/lib || die
+
+ if ! use static-libs; then
+ rm "${ED}/usr/$(get_libdir)/libhandle.a" || die
+ fi
+
+ find "${ED}" -name '*.la' -delete || die
+}
+
+pkg_postrm() {
+ udev_reload
+}
+
+pkg_postinst() {
+ udev_reload
+}
diff --git a/sys-fs/xfsprogs/xfsprogs-6.17.0.ebuild b/sys-fs/xfsprogs/xfsprogs-6.17.0.ebuild
index 90bd2eb5c33c..8dbfbab1309d 100644
--- a/sys-fs/xfsprogs/xfsprogs-6.17.0.ebuild
+++ b/sys-fs/xfsprogs/xfsprogs-6.17.0.ebuild
@@ -11,7 +11,7 @@ SRC_URI="https://www.kernel.org/pub/linux/utils/fs/xfs/${PN}/${P}.tar.xz"
LICENSE="LGPL-2.1"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ~ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="icu libedit nls selinux static-libs"
RDEPEND="
diff --git a/sys-fs/zfs/Manifest b/sys-fs/zfs/Manifest
index ca158a0fef1a..581f2ed5b021 100644
--- a/sys-fs/zfs/Manifest
+++ b/sys-fs/zfs/Manifest
@@ -18,3 +18,5 @@ DIST zfs-2.4.0-rc3.tar.gz 34322200 BLAKE2B f96baf36010422d75da0563363715cbebf21c
DIST zfs-2.4.0-rc3.tar.gz.asc 858 BLAKE2B dde4cbec02020e59674bc0aed7da8a504a404f96b316f2c8d05b6d5659cdeed1ac08ba74477011f05c88ef307638c47422911bb53b73be4009552a5355e7a906 SHA512 4b0c095938462f3d0532aa413bd93ea75a2591052b244ac473ed86b8e46664bd83ddec69a4a7e6d62b625a565c558c4122fe0923e7cc6e1994b2f7fa8cb00caa
DIST zfs-2.4.0-rc4.tar.gz 34324435 BLAKE2B 83ce226f1ce5811ba8f2a3f022470d5d2f38c0a71eaf41a791de131593e048e314daa90dd7c6b61f3f2fce5b11bfd2ed935a371f6065f34666fb9de2b5fc7918 SHA512 cf2a32404bfcacc1e9ad9edb29f155e0f8a09195a365cdf1dfd93090262a7eddf60543cbebb82b6c5ae49cc50a32f44ae848e3924e08c8d894242bfcef3cc436
DIST zfs-2.4.0-rc4.tar.gz.asc 858 BLAKE2B eac23c8715662b8aedbe2187a2385ff25fb0039b3b3fe8dd182df67f22abfcb71c387363bfe6430790e5e53fd91f4dd145d34aa35547098b6bf679bd71ab268c SHA512 aaaf0db96020db1096c982fc0fedc674f05a2e007566c95093f346426ed34d66a790114dd8ab3c7838fd631bd4c7707a52d79f67ee5f7e30a4027bc7cd4420d8
+DIST zfs-2.4.0-rc5.tar.gz 34325997 BLAKE2B b0e13dabb4cea6a6a1beef3de3ed3fe35c487677013035c54452ed950bdd94cfce588a7ce6b23431233f2ee293b3797c90f5a4523631499fe56cd01914735cc3 SHA512 ad59f9f226b9e8210abbb40ef3d4e9c2fa513b2f28efd8e1d470d255ae8e4d25d76f1d7141e3fe96173827237f061dba1cc724e9ef7fec14773cb0a37811207b
+DIST zfs-2.4.0-rc5.tar.gz.asc 858 BLAKE2B 7a5e98d9ff62972864d62fe415341172659ef5e4cc788378719223938f4bf58efc87bb795f8799653863b037c65f127313da32a266dde304049a007d01d70692 SHA512 433a5632871bc6a63d437c41f7b6ae287b661fde0e5d02f18593a1a6d9349a7fb38ae53ba6228bfad36d90903f71d4cad5a767717a0b38b9c3ecf0c34f947a5d
diff --git a/sys-fs/zfs/zfs-2.4.0_rc5.ebuild b/sys-fs/zfs/zfs-2.4.0_rc5.ebuild
new file mode 100644
index 000000000000..4a4ca52e939c
--- /dev/null
+++ b/sys-fs/zfs/zfs-2.4.0_rc5.ebuild
@@ -0,0 +1,437 @@
+# 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..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.18
+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/7"
+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
+}
diff --git a/sys-fs/zfs/zfs-9999.ebuild b/sys-fs/zfs/zfs-9999.ebuild
index d274446eafbc..19e77752faa2 100644
--- a/sys-fs/zfs/zfs-9999.ebuild
+++ b/sys-fs/zfs/zfs-9999.ebuild
@@ -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