diff options
author | Sam James <sam@gentoo.org> | 2023-10-14 02:50:28 +0100 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2023-10-14 02:50:28 +0100 |
commit | be355d3b469c672f191172db11eee05ebd154edd (patch) | |
tree | 1cc67474383387c906453df3efba0dfe9ef062e1 /sys-fs/zfs-kmod | |
parent | sys-fs/zfs: add 2.2.0 (diff) | |
download | gentoo-be355d3b469c672f191172db11eee05ebd154edd.tar.gz gentoo-be355d3b469c672f191172db11eee05ebd154edd.tar.bz2 gentoo-be355d3b469c672f191172db11eee05ebd154edd.zip |
sys-fs/zfs-kmod: add 2.2.0
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'sys-fs/zfs-kmod')
-rw-r--r-- | sys-fs/zfs-kmod/Manifest | 2 | ||||
-rw-r--r-- | sys-fs/zfs-kmod/zfs-kmod-2.2.0.ebuild | 217 |
2 files changed, 219 insertions, 0 deletions
diff --git a/sys-fs/zfs-kmod/Manifest b/sys-fs/zfs-kmod/Manifest index c032b3e43f79..737c2dcab6a1 100644 --- a/sys-fs/zfs-kmod/Manifest +++ b/sys-fs/zfs-kmod/Manifest @@ -12,3 +12,5 @@ DIST zfs-2.2.0-rc4.tar.gz 33660298 BLAKE2B c8179cf7a8caaa07e6898d9169fa3f825d070 DIST zfs-2.2.0-rc4.tar.gz.asc 195 BLAKE2B 496f5163235f743e64da3862245a8dfabd95d06071183514ab11f7dd7792b32823b73864888d7a2fbf2dee16ca374772b07139287a1e66416dbd82e062b25ba9 SHA512 6a0ce528e0b15b4c1b8f02db9aaa9ce61bdf9a7c1c88336b91042802535618fd95aa4f59211bef0d1d79f833d8ae2030c4be8ee5a2244b13ec3f684aa1cdee4e DIST zfs-2.2.0-rc5.tar.gz 33674415 BLAKE2B 89187462b9f544779e331fe06a84763918bfedcccb3ecfe28cfef00f6ee30690e5a1983bc670a73f0b9db809f4aa23b59255b66907b5ca2c9e236b471b9a8a63 SHA512 68610a68526c79486b7cd8ca28abd0d8dd42814c37a82ea2be05b0044998ef36c5aaa3fc7598c1a8426b73116351a9b00c8ffdab3e5ae3aecc4954fb9378c422 DIST zfs-2.2.0-rc5.tar.gz.asc 195 BLAKE2B 59c204bb0eb2140a82cb4066e5bb2b66c1331aabf65c807869fbab89a177b0e09aa8b23bdbc46bb18785db554405a085841605885b3931119d1e3eb0335e257a SHA512 83101a1e350db4276296f9ed52a556ea36f4238c272ab565926ec69dca495c645a7b41164baee39768123c5982459d10b54819ba9d9ac6c37fe851952db29887 +DIST zfs-2.2.0.tar.gz 33826037 BLAKE2B 80d94cd5ef0bbeaa570853c10f480e3cd64cb852b53aced2e7d382d097130fcf8f94060126a04321f913bca5d9158813a74e97f1dd0f110359d911a33e4a0d77 SHA512 6a45419d2cd30a4f65c50410568972ba9a27f87e745d7a46c0757d7deb4377150f9bd752d54b4bda26badfc40922c34dc5d5bf50f76c84398811784243606829 +DIST zfs-2.2.0.tar.gz.asc 195 BLAKE2B c3e665380060b605c5f8ce120f8cc00457053b8adaf44307500a47ff5cd00be04306920820c7a8c1832eb770d5189fd747a52cf13d8bdd8fccbcb171b9b4afad SHA512 b52a11d3e27adf606c24fab46307153c9f81cd8ac504aa8995f7add3e25cd3c00fcb8e2faae3c1a70e29f5901117f961ded7fc26ae5701098a6bcf9710d216f7 diff --git a/sys-fs/zfs-kmod/zfs-kmod-2.2.0.ebuild b/sys-fs/zfs-kmod/zfs-kmod-2.2.0.ebuild new file mode 100644 index 000000000000..bf5b73c2dd69 --- /dev/null +++ b/sys-fs/zfs-kmod/zfs-kmod-2.2.0.ebuild @@ -0,0 +1,217 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools dist-kernel-utils flag-o-matic linux-mod-r1 multiprocessing + +DESCRIPTION="Linux ZFS kernel module for sys-fs/zfs" +HOMEPAGE="https://github.com/openzfs/zfs" + +MODULES_KERNEL_MAX=6.5 +MODULES_KERNEL_MIN=3.10 + +if [[ ${PV} == 9999 ]] ; then + EGIT_REPO_URI="https://github.com/openzfs/zfs.git" + inherit git-r3 + unset MODULES_KERNEL_MAX +else + VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/openzfs.asc + inherit verify-sig + + MY_PV=${PV/_rc/-rc} + SRC_URI="https://github.com/openzfs/zfs/releases/download/zfs-${MY_PV}/zfs-${MY_PV}.tar.gz" + SRC_URI+=" verify-sig? ( https://github.com/openzfs/zfs/releases/download/zfs-${MY_PV}/zfs-${MY_PV}.tar.gz.asc )" + S="${WORKDIR}/zfs-${MY_PV}" + + 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 ~ppc64 ~riscv ~sparc" + fi +fi + +LICENSE="CDDL MIT debug? ( GPL-2+ )" +SLOT="0/${PVR}" +IUSE="custom-cflags debug +rootfs" +RESTRICT="test" + +BDEPEND=" + app-alternatives/awk + dev-lang/perl +" + +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 + +# Used to suggest matching USE, but without suggesting to disable +PDEPEND="dist-kernel? ( ~sys-fs/zfs-${PV}[dist-kernel] )" + +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() { + 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 +} + +src_prepare() { + default + + # Run unconditionally (bug #792627) + eautoreconf + + if [[ ${PV} != 9999 ]] ; then + # Set module revision number + sed -Ei "s/(Release:.*)1/\1${PR}-gentoo/" META || die + fi +} + +src_configure() { + use custom-cflags || strip-flags + filter-ldflags -Wl,* + + local myconf=( + --bindir="${EPREFIX}"/bin + --sbindir="${EPREFIX}"/sbin + --with-config=kernel + --with-linux="${KV_DIR}" + --with-linux-obj="${KV_OUT_DIR}" + $(use_enable debug) + + # See gentoo.patch + GENTOO_MAKEARGS_EVAL="${MODULES_MAKEARGS[*]@Q}" + TEST_JOBS="$(makeopts_jobs)" + ) + + econf "${myconf[@]}" +} + +src_compile() { + emake "${MODULES_MAKEARGS[@]}" +} + +src_install() { + emake "${MODULES_MAKEARGS[@]}" DESTDIR="${ED}" install + modules_post_process + + dodoc AUTHORS COPYRIGHT META README.md +} + +_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() { + # 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 [[ -z ${ROOT} ]] && use dist-kernel ; then + dist-kernel_reinstall_initramfs "${KV_DIR}" "${KV_FULL}" + fi + + 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 +} |