From 9aec04d36b155141108f4838987a79fc5a1ed7e1 Mon Sep 17 00:00:00 2001 From: Zach Dykstra Date: Wed, 23 Aug 2023 14:28:12 -0500 Subject: [PATCH] New package: zfs-lts-2.1.13. --- srcpkgs/libzfs-lts | 1 + srcpkgs/zfs-lts-devel | 1 + srcpkgs/zfs-lts-pam | 1 + srcpkgs/zfs-lts/files/zed/run | 4 + ...1-only-build-the-module-in-dkms.conf.patch | 44 +++++++++ .../patches/0002-fix-dracut-root.patch | 56 +++++++++++ srcpkgs/zfs-lts/template | 95 +++++++++++++++++++ srcpkgs/zfs-lts/update | 3 + srcpkgs/zfs/template | 10 +- srcpkgs/zfs/update | 2 +- 10 files changed, 215 insertions(+), 2 deletions(-) create mode 120000 srcpkgs/libzfs-lts create mode 120000 srcpkgs/zfs-lts-devel create mode 120000 srcpkgs/zfs-lts-pam create mode 100755 srcpkgs/zfs-lts/files/zed/run create mode 100644 srcpkgs/zfs-lts/patches/0001-only-build-the-module-in-dkms.conf.patch create mode 100644 srcpkgs/zfs-lts/patches/0002-fix-dracut-root.patch create mode 100644 srcpkgs/zfs-lts/template create mode 100644 srcpkgs/zfs-lts/update diff --git a/srcpkgs/libzfs-lts b/srcpkgs/libzfs-lts new file mode 120000 index 00000000000..083c9d5fe6b --- /dev/null +++ b/srcpkgs/libzfs-lts @@ -0,0 +1 @@ +zfs-lts \ No newline at end of file diff --git a/srcpkgs/zfs-lts-devel b/srcpkgs/zfs-lts-devel new file mode 120000 index 00000000000..083c9d5fe6b --- /dev/null +++ b/srcpkgs/zfs-lts-devel @@ -0,0 +1 @@ +zfs-lts \ No newline at end of file diff --git a/srcpkgs/zfs-lts-pam b/srcpkgs/zfs-lts-pam new file mode 120000 index 00000000000..083c9d5fe6b --- /dev/null +++ b/srcpkgs/zfs-lts-pam @@ -0,0 +1 @@ +zfs-lts \ No newline at end of file diff --git a/srcpkgs/zfs-lts/files/zed/run b/srcpkgs/zfs-lts/files/zed/run new file mode 100755 index 00000000000..63deda22b50 --- /dev/null +++ b/srcpkgs/zfs-lts/files/zed/run @@ -0,0 +1,4 @@ +#!/bin/sh +exec 2>&1 +[ -r conf ] && . conf +exec zed -F $OPTS diff --git a/srcpkgs/zfs-lts/patches/0001-only-build-the-module-in-dkms.conf.patch b/srcpkgs/zfs-lts/patches/0001-only-build-the-module-in-dkms.conf.patch new file mode 100644 index 00000000000..944618bb86c --- /dev/null +++ b/srcpkgs/zfs-lts/patches/0001-only-build-the-module-in-dkms.conf.patch @@ -0,0 +1,44 @@ +# Patch adapted from +# +# https://aur.archlinux.org/cgit/aur.git/tree/0001-only-build-the-module-in-dkms.conf.patch?h=zfs-dkms +# +# rebased for zfs-2.1.5. +# +# Avoids recompiling ZFS userland utilities with DKMS rebuilds +From b4a2c0b184c9c9599421b15a430fb88deb5dbd17 Mon Sep 17 00:00:00 2001 +From: Eli Schwartz +Date: Sun, 28 Oct 2018 15:01:58 -0400 +Subject: [PATCH] only build the module in dkms.conf + +--- + scripts/dkms.mkconf | 19 ++----------------- + 1 file changed, 2 insertions(+), 17 deletions(-) + +diff --git a/scripts/dkms.mkconf b/scripts/dkms.mkconf +--- a/scripts/dkms.mkconf ++++ b/scripts/dkms.mkconf +@@ -28,14 +28,7 @@ + PRE_BUILD="configure + --prefix=/usr + --with-config=kernel +- --with-linux=\$( +- if [ -e "\${kernel_source_dir/%build/source}" ] +- then +- echo "\${kernel_source_dir/%build/source}" +- else +- echo "\${kernel_source_dir}" +- fi +- ) ++ --with-linux="\${kernel_source_dir}" + --with-linux-obj="\${kernel_source_dir}" + \$( + [[ -n \"\${ICP_ROOT}\" ]] && \\ +@@ -68,7 +61,7 @@ + -t \${dkms_tree} + " + AUTOINSTALL="yes" +-MAKE[0]="make" ++MAKE[0]="make -C module/" + STRIP[0]="\$( + [[ -r \${PACKAGE_CONFIG} ]] \\ + && source \${PACKAGE_CONFIG} \\ diff --git a/srcpkgs/zfs-lts/patches/0002-fix-dracut-root.patch b/srcpkgs/zfs-lts/patches/0002-fix-dracut-root.patch new file mode 100644 index 00000000000..384f08355f7 --- /dev/null +++ b/srcpkgs/zfs-lts/patches/0002-fix-dracut-root.patch @@ -0,0 +1,56 @@ +From eefe83eaa68f7cb4a49c580dd940d3688e42c849 Mon Sep 17 00:00:00 2001 +From: Toyam Cox +Date: Thu, 30 Jun 2022 13:47:58 -0400 +Subject: [PATCH] dracut: fix boot on non-zfs-root systems + +Simply prevent overwriting root until it needs to be overwritten. + +Dracut could change this value before this module is called, but won't +change the kernel command line. + +Reviewed-by: Andrew J. Hesford +Signed-off-by: Toyam Cox +Closes #13592 +--- + contrib/dracut/90zfs/zfs-lib.sh.in | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/contrib/dracut/90zfs/zfs-lib.sh.in b/contrib/dracut/90zfs/zfs-lib.sh.in +index e44673c2d75..3a43e514d6f 100755 +--- a/contrib/dracut/90zfs/zfs-lib.sh.in ++++ b/contrib/dracut/90zfs/zfs-lib.sh.in +@@ -88,11 +88,11 @@ decode_root_args() { + return + fi + +- root=$(getarg root=) ++ xroot=$(getarg root=) + rootfstype=$(getarg rootfstype=) + + # shellcheck disable=SC2249 +- case "$root" in ++ case "$xroot" in + ""|zfs|zfs:|zfs:AUTO) + root=zfs:AUTO + rootfstype=zfs +@@ -100,7 +100,7 @@ decode_root_args() { + ;; + + ZFS=*|zfs:*) +- root="${root#zfs:}" ++ root="${xroot#zfs:}" + root="${root#ZFS=}" + root=$(echo "$root" | tr '+' ' ') + rootfstype=zfs +@@ -109,9 +109,9 @@ decode_root_args() { + esac + + if [ "$rootfstype" = "zfs" ]; then +- case "$root" in ++ case "$xroot" in + "") root=zfs:AUTO ;; +- *) root=$(echo "$root" | tr '+' ' ') ;; ++ *) root=$(echo "$xroot" | tr '+' ' ') ;; + esac + return 0 + fi diff --git a/srcpkgs/zfs-lts/template b/srcpkgs/zfs-lts/template new file mode 100644 index 00000000000..c9968e60792 --- /dev/null +++ b/srcpkgs/zfs-lts/template @@ -0,0 +1,95 @@ +# Template file for 'zfs-lts' +pkgname=zfs-lts +version=2.1.13 +revision=1 +build_style=gnu-configure +configure_args="--with-config=user --with-mounthelperdir=/usr/bin + --with-udevdir=/usr/lib/udev --with-udevruledir=/usr/lib/udev/rules.d + --with-dracutdir=/usr/lib/dracut --with-tirpc" +hostmakedepends="dracut libtool pkg-config python3 automake" +makedepends="pam-devel zlib-devel libuuid-devel libblkid-devel libtirpc-devel attr-devel" +depends="dkms>=2.2.0.3_9 perl python3 xbps-triggers>=0.121_1 + libzfs-lts>=${version}_${revision}" +conf_files="/etc/zfs/zed.d/zed.rc" +short_desc="Z File System -- userland, pyzfs, and kernel modules (using DKMS)" +maintainer="Toyam Cox " +license="CDDL-1.0" +homepage="https://openzfs.github.io/openzfs-docs/" +distfiles="https://github.com/openzfs/zfs/releases/download/zfs-${version}/zfs-${version}.tar.gz" +checksum=06b24cbb3cbc1554e2edf2fcd71d1f8bec4febf4412aeac17070877c44302abd +# dkms must be before initramfs-regenerate to build modules before images +triggers="dkms initramfs-regenerate" +dkms_modules="zfs ${version}" + +provides="zfs-${version}_${revision}" +replaces="spl<=0.7.13_1 zfs>=0" # Because SPL was merged into zfs in 0.8.0 + +pre_configure() { + export CFLAGS+=" -I${XBPS_CROSS_BASE}/usr/include/tirpc/" + autoreconf -fi +} + +post_install() { + vlicense COPYRIGHT + vlicense LICENSE + vlicense NOTICE + + vsv zed + + make dist-gzip + vmkdir usr/src/ + tar xf ${pkgname/%-lts}-${version}.tar.gz -C ${DESTDIR}/usr/src/ + scripts/dkms.mkconf -v ${version} -f ${DESTDIR}/usr/src/${pkgname/%-lts}-${version}/dkms.conf -n zfs + + # Remove init and service control pieces not used in Void + rm -rf ${DESTDIR}/usr/lib/systemd + rm -rf ${DESTDIR}/etc/init.d + rm -rf ${DESTDIR}/etc/default + rm -f ${DESTDIR}/etc/zfs/zfs-functions + + # Remove pam config framework file not used in Void + rm -f ${DESTDIR}/usr/share/pam-configs/zfs_key + + # zfs-mount-generator is a systemd helper, no need for its man page + rm -f ${DESTDIR}/usr/share/man/man8/zfs-mount-generator.8 + + # Contains ELF binaries. Remove it until upstream has a way to move this + # into /usr/libexec or similiar. + rm -rf ${DESTDIR}/usr/share/zfs/zfs-tests +} + +libzfs-lts_package() { + short_desc="Z File System - libraries" + provides="libzfs-${version}_${revision}" + replaces="libzfs>=0" + pkg_install() { + vmove "usr/lib/*.so.*" + } +} + +zfs-lts-devel_package() { + depends="libzfs>=${version}_${revision}" + short_desc="Z File System -- development files" + provides="zfs-devel-${version}_${revision}" + replaces="zfs-devel>=0" + pkg_install() { + vmove usr/include + vmove "usr/lib/*.a" + vmove "usr/lib/*.so" + vmove usr/lib/pkgconfig + } +} + +zfs-lts-pam_package() { + depends="${sourcepkg}>=${version}_${revision}" + short_desc="Z File System -- PAM integration" + provides="zfs-pam-${version}_${revision}" + replaces="zfs-pam>=0" + pkg_install() { + vmove usr/lib/security/pam_zfs_key.so + } +} + +# REMARKS: +# Did not split out pyzfs, because it's distributed with zfs, and no reason to +# send separately. diff --git a/srcpkgs/zfs-lts/update b/srcpkgs/zfs-lts/update new file mode 100644 index 00000000000..1078f48114d --- /dev/null +++ b/srcpkgs/zfs-lts/update @@ -0,0 +1,3 @@ +pkgname=zfs +ignore="*.*.99" +pattern="${pkgname}-\K2\.1\.[0-9.]+(?=\.tar\.gz)" diff --git a/srcpkgs/zfs/template b/srcpkgs/zfs/template index 828cdf7a344..da8fa305a86 100644 --- a/srcpkgs/zfs/template +++ b/srcpkgs/zfs/template @@ -21,7 +21,9 @@ checksum=42035fd059faa25a09cd511b24a57b8ad1285cb69127f2a0043b98562c5ec690 triggers="dkms initramfs-regenerate" dkms_modules="zfs ${version}" -replaces="spl<=0.7.13_1" # Because SPL was merged into zfs in 0.8.0 +provides="zfs-${version}_${revision}" + +replaces="spl<=0.7.13_1 zfs-lts>=0" # Because SPL was merged into zfs in 0.8.0 pre_configure() { export CFLAGS+=" -I${XBPS_CROSS_BASE}/usr/include/tirpc/" @@ -64,6 +66,8 @@ post_install() { libzfs_package() { short_desc="Z File System - libraries" + provides="libzfs-${version}_${revision}" + replaces="libzfs-lts>=0" pkg_install() { vmove "usr/lib/*.so.*" } @@ -72,6 +76,8 @@ libzfs_package() { zfs-devel_package() { depends="libzfs>=${version}_${revision}" short_desc="Z File System -- development files" + provides="zfs-devel-${version}_${revision}" + replaces="zfs-devel-lts>=0" pkg_install() { vmove usr/include vmove "usr/lib/*.a" @@ -83,6 +89,8 @@ zfs-devel_package() { zfs-pam_package() { depends="${sourcepkg}>=${version}_${revision}" short_desc="Z File System -- PAM integration" + provides="zfs-pam-${version}_${revision}" + replaces="zfs-pam-lts>=0" pkg_install() { vmove usr/lib/security/pam_zfs_key.so } diff --git a/srcpkgs/zfs/update b/srcpkgs/zfs/update index 5c99eb844ab..f0d7b887211 100644 --- a/srcpkgs/zfs/update +++ b/srcpkgs/zfs/update @@ -1 +1 @@ -ignore="2.1.99" +ignore="*.*.99"