commit:     20c8e69ec3b25a431ee1c0e8cf3d1f0274dbffec
Author:     Georgy Yakovlev <ya <AT> sysdump <DOT> net>
AuthorDate: Thu Mar  8 02:12:59 2018 +0000
Commit:     Matt Thode <prometheanfire <AT> gentoo <DOT> org>
CommitDate: Thu Mar  8 16:20:40 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=20c8e69e

sys-fs/zfs: fix dracut module path

zfs should use /usr/lib/dracut to install dracut modules.
dracut ebuild defines:
        local dracutlibdir="usr/lib/dracut"

with /usr/lib64 path on SYMLINK_LIB=no systems
dracut fails to pick up zfs modules
and generates an unbootable initramfs

Closes: https://bugs.gentoo.org/645176
Package-Manager: Portage-2.3.24, Repoman-2.3.6
Signed-off-by: Matthew Thode <prometheanfire <AT> gentoo.org>

 ...{zfs-0.7.9999.ebuild => zfs-0.6.5.11-r2.ebuild} | 17 ++++---
 .../zfs/{zfs-9999.ebuild => zfs-0.6.5.4-r4.ebuild} | 52 ++++++++++++++++------
 .../{zfs-0.7.9999.ebuild => zfs-0.7.5-r2.ebuild}   | 20 +++++----
 .../{zfs-0.7.9999.ebuild => zfs-0.7.6-r1.ebuild}   | 20 +++++----
 sys-fs/zfs/zfs-0.7.9999.ebuild                     |  2 +-
 sys-fs/zfs/zfs-9999.ebuild                         |  2 +-
 6 files changed, 75 insertions(+), 38 deletions(-)

diff --git a/sys-fs/zfs/zfs-0.7.9999.ebuild b/sys-fs/zfs/zfs-0.6.5.11-r2.ebuild
similarity index 94%
copy from sys-fs/zfs/zfs-0.7.9999.ebuild
copy to sys-fs/zfs/zfs-0.6.5.11-r2.ebuild
index da5f1597be5..1973747e440 100644
--- a/sys-fs/zfs/zfs-0.7.9999.ebuild
+++ b/sys-fs/zfs/zfs-0.6.5.11-r2.ebuild
@@ -4,14 +4,13 @@
 EAPI="5"
 PYTHON_COMPAT=( python{2_7,3_4,3_5} )
 
-if [[ ${PV} == *"9999" ]] ; then
+if [ ${PV} == "9999" ] ; then
+       inherit git-r3 linux-mod
        AUTOTOOLS_AUTORECONF="1"
        EGIT_REPO_URI="https://github.com/zfsonlinux/${PN}.git";
-       EGIT_BRANCH="zfs-0.7-release"
-       inherit git-r3 linux-mod
 else
        
SRC_URI="https://github.com/zfsonlinux/${PN}/releases/download/${P}/${P}.tar.gz";
-       KEYWORDS="~amd64 ~arm ~ppc ~ppc64"
+       KEYWORDS="~amd64"
 fi
 
 inherit autotools-utils bash-completion-r1 flag-o-matic linux-info python-r1 
systemd toolchain-funcs udev
@@ -34,7 +33,10 @@ DEPEND="${COMMON_DEPEND}
        virtual/pkgconfig
 "
 
+# Adding glibc >= 2.25 blocker for ZFS versions lower
+# than 0.7.0, due to bug 617628.
 RDEPEND="${COMMON_DEPEND}
+       !>=sys-libs/glibc-2.25
        !=sys-apps/grep-2.13*
        !kernel-builtin? ( =sys-fs/zfs-kmod-${PV}* )
        !sys-fs/zfs-fuse
@@ -53,6 +55,7 @@ RDEPEND="${COMMON_DEPEND}
                app-misc/pax-utils
                !<sys-boot/grub-2.00-r2:2
                )
+       sys-fs/udev-init-scripts
 "
 
 AT_M4DIR="config"
@@ -97,7 +100,7 @@ src_configure() {
                --bindir="${EPREFIX}/bin"
                --sbindir="${EPREFIX}/sbin"
                --with-config=user
-               --with-dracutdir="/usr/$(get_libdir)/dracut"
+               --with-dracutdir="${EPREFIX}/usr/lib/dracut"
                --with-linux="${KV_DIR}"
                --with-linux-obj="${KV_OUT_DIR}"
                --with-udevdir="$(get_udevdir)"
@@ -131,7 +134,7 @@ src_install() {
 }
 
 pkg_postinst() {
-       if ! use kernel-builtin && [[ ${PV} = *"9999" ]]
+       if ! use kernel-builtin && [ ${PV} = "9999" ]
        then
                einfo "Adding ${P} to the module database to ensure that the"
                einfo "kernel modules and userland utilities stay in sync."
@@ -191,7 +194,7 @@ pkg_postinst() {
 }
 
 pkg_postrm() {
-       if ! use kernel-builtin && [[ ${PV} = *"9999" ]]
+       if ! use kernel-builtin && [ ${PV} = "9999" ]
        then
                remove_moduledb
        fi

diff --git a/sys-fs/zfs/zfs-9999.ebuild b/sys-fs/zfs/zfs-0.6.5.4-r4.ebuild
similarity index 81%
copy from sys-fs/zfs/zfs-9999.ebuild
copy to sys-fs/zfs/zfs-0.6.5.4-r4.ebuild
index 7b8d2f94a45..afdedfdc2c2 100644
--- a/sys-fs/zfs/zfs-9999.ebuild
+++ b/sys-fs/zfs/zfs-0.6.5.4-r4.ebuild
@@ -4,12 +4,17 @@
 EAPI="5"
 PYTHON_COMPAT=( python{2_7,3_4,3_5} )
 
+AT_M4DIR="config"
+AUTOTOOLS_AUTORECONF="1"
+AUTOTOOLS_IN_SOURCE_BUILD="1"
+
 if [ ${PV} == "9999" ] ; then
        inherit git-r3 linux-mod
        AUTOTOOLS_AUTORECONF="1"
        EGIT_REPO_URI="https://github.com/zfsonlinux/${PN}.git";
 else
-       
SRC_URI="https://github.com/zfsonlinux/${PN}/releases/download/${P}/${P}.tar.gz";
+       
SRC_URI="https://github.com/zfsonlinux/${PN}/releases/download/${P}/${P}.tar.gz
+               https://dev.gentoo.org/~ryao/dist/${P}-patches-p2.tar.xz";
        KEYWORDS="~amd64 ~arm ~ppc ~ppc64"
 fi
 
@@ -33,9 +38,15 @@ DEPEND="${COMMON_DEPEND}
        virtual/pkgconfig
 "
 
+# Adding glibc >= 2.25 blocker for ZFS versions lower
+# than 0.7.0, due to bug 617628.
 RDEPEND="${COMMON_DEPEND}
+       !>=sys-libs/glibc-2.25
        !=sys-apps/grep-2.13*
-       !kernel-builtin? ( =sys-fs/zfs-kmod-${PV}* )
+       !kernel-builtin? (
+               =sys-fs/zfs-kmod-${PV}*
+               !<sys-fs/zfs-kmod-0.6.5.3-r1
+               )
        !sys-fs/zfs-fuse
        !prefix? ( virtual/udev )
        test-suite? (
@@ -52,6 +63,7 @@ RDEPEND="${COMMON_DEPEND}
                app-misc/pax-utils
                !<sys-boot/grub-2.00-r2:2
                )
+       !>=sys-fs/udev-init-scripts-28
 "
 
 AT_M4DIR="config"
@@ -81,18 +93,20 @@ pkg_setup() {
 }
 
 src_prepare() {
+       if [ ${PV} != "9999" ]
+       then
+               # Apply patch set
+               EPATCH_SUFFIX="patch" \
+               EPATCH_FORCE="yes" \
+               epatch "${WORKDIR}/${P}-patches"
+       fi
+
        # Update paths
        sed -e "s|/sbin/lsmod|/bin/lsmod|" \
                -e "s|/usr/bin/scsi-rescan|/usr/sbin/rescan-scsi-bus|" \
                -e "s|/sbin/parted|/usr/sbin/parted|" \
                -i scripts/common.sh.in
 
-       if use kernel-builtin
-       then
-               einfo "kernel-builtin enabled, removing module loading from"
-               einfo "systemd units."
-               sed -i -e '/modprobe\ zfs/d' etc/systemd/system/*.service.in || 
die
-       fi
        autotools-utils_src_prepare
 }
 
@@ -102,7 +116,7 @@ src_configure() {
                --bindir="${EPREFIX}/bin"
                --sbindir="${EPREFIX}/sbin"
                --with-config=user
-               --with-dracutdir="/usr/$(get_libdir)/dracut"
+               --with-dracutdir="${EPREFIX}/usr/lib/dracut"
                --with-linux="${KV_DIR}"
                --with-linux-obj="${KV_OUT_DIR}"
                --with-udevdir="$(get_udevdir)"
@@ -120,10 +134,6 @@ src_configure() {
                sed -e "s:@sbindir@:${EPREFIX}/sbin:g" \
                        -e "s:@sysconfdir@:${EPREFIX}/etc:g" \
                > "${T}/zfs-init.sh" || die
-       if use kernel-builtin
-       then
-               sed -i -e '/modprobe\ zfs/d' "${T}/zfs.service" || die
-       fi
 }
 
 src_install() {
@@ -197,6 +207,22 @@ pkg_postinst() {
                rm "${EROOT}etc/runlevels/shutdown/zfs-shutdown"
        fi
 
+       einfo "sys-kernel/spl-0.6.5.3-r1, sys-fs/zfs-kmod-0.6.5.3-r1 and "
+       einfo "sys-fs/zfs-0.6.5.3-r1 have introduced a partial stable "
+       einfo "/dev/zfs API developed by ClusterHQ. This means that situations "
+       einfo "arising from the kernel modules and userland tools being "
+       einfo "mismatched on future updates will not cause problems."
+       einfo
+       einfo "In specific, this should solve the failure to mount filesystems 
when "
+       einfo "old modules are cached in an old initramfs provided that those "
+       einfo "modules support this API"
+       if use rootfs
+       then
+               einfo
+               ewarn "The older modules will *NOT* work with the new userland 
code."
+               ewarn "It is very important that you update your initramfs 
after this "
+               ewarn "update."
+       fi
 }
 
 pkg_postrm() {

diff --git a/sys-fs/zfs/zfs-0.7.9999.ebuild b/sys-fs/zfs/zfs-0.7.5-r2.ebuild
similarity index 92%
copy from sys-fs/zfs/zfs-0.7.9999.ebuild
copy to sys-fs/zfs/zfs-0.7.5-r2.ebuild
index da5f1597be5..118fe97e22a 100644
--- a/sys-fs/zfs/zfs-0.7.9999.ebuild
+++ b/sys-fs/zfs/zfs-0.7.5-r2.ebuild
@@ -4,14 +4,13 @@
 EAPI="5"
 PYTHON_COMPAT=( python{2_7,3_4,3_5} )
 
-if [[ ${PV} == *"9999" ]] ; then
-       AUTOTOOLS_AUTORECONF="1"
-       EGIT_REPO_URI="https://github.com/zfsonlinux/${PN}.git";
-       EGIT_BRANCH="zfs-0.7-release"
+if [ ${PV} == "9999" ] ; then
        inherit git-r3 linux-mod
+       AUTOTOOLS_AUTORECONF="1"
+       EGIT_REPO_URI="git://github.com/zfsonlinux/${PN}.git"
 else
        
SRC_URI="https://github.com/zfsonlinux/${PN}/releases/download/${P}/${P}.tar.gz";
-       KEYWORDS="~amd64 ~arm ~ppc ~ppc64"
+       KEYWORDS="~amd64"
 fi
 
 inherit autotools-utils bash-completion-r1 flag-o-matic linux-info python-r1 
systemd toolchain-funcs udev
@@ -52,7 +51,12 @@ RDEPEND="${COMMON_DEPEND}
                app-arch/cpio
                app-misc/pax-utils
                !<sys-boot/grub-2.00-r2:2
+               !<sys-kernel/genkernel-3.5.1.1
+               !<sys-kernel/genkernel-next-67
+               !<sys-kernel/bliss-initramfs-7.1.0
+               !<sys-kernel/dracut-044-r1
                )
+       sys-fs/udev-init-scripts
 "
 
 AT_M4DIR="config"
@@ -97,7 +101,7 @@ src_configure() {
                --bindir="${EPREFIX}/bin"
                --sbindir="${EPREFIX}/sbin"
                --with-config=user
-               --with-dracutdir="/usr/$(get_libdir)/dracut"
+               --with-dracutdir="${EPREFIX}/usr/lib/dracut"
                --with-linux="${KV_DIR}"
                --with-linux-obj="${KV_OUT_DIR}"
                --with-udevdir="$(get_udevdir)"
@@ -131,7 +135,7 @@ src_install() {
 }
 
 pkg_postinst() {
-       if ! use kernel-builtin && [[ ${PV} = *"9999" ]]
+       if ! use kernel-builtin && [ ${PV} = "9999" ]
        then
                einfo "Adding ${P} to the module database to ensure that the"
                einfo "kernel modules and userland utilities stay in sync."
@@ -191,7 +195,7 @@ pkg_postinst() {
 }
 
 pkg_postrm() {
-       if ! use kernel-builtin && [[ ${PV} = *"9999" ]]
+       if ! use kernel-builtin && [ ${PV} = "9999" ]
        then
                remove_moduledb
        fi

diff --git a/sys-fs/zfs/zfs-0.7.9999.ebuild b/sys-fs/zfs/zfs-0.7.6-r1.ebuild
similarity index 92%
copy from sys-fs/zfs/zfs-0.7.9999.ebuild
copy to sys-fs/zfs/zfs-0.7.6-r1.ebuild
index da5f1597be5..118fe97e22a 100644
--- a/sys-fs/zfs/zfs-0.7.9999.ebuild
+++ b/sys-fs/zfs/zfs-0.7.6-r1.ebuild
@@ -4,14 +4,13 @@
 EAPI="5"
 PYTHON_COMPAT=( python{2_7,3_4,3_5} )
 
-if [[ ${PV} == *"9999" ]] ; then
-       AUTOTOOLS_AUTORECONF="1"
-       EGIT_REPO_URI="https://github.com/zfsonlinux/${PN}.git";
-       EGIT_BRANCH="zfs-0.7-release"
+if [ ${PV} == "9999" ] ; then
        inherit git-r3 linux-mod
+       AUTOTOOLS_AUTORECONF="1"
+       EGIT_REPO_URI="git://github.com/zfsonlinux/${PN}.git"
 else
        
SRC_URI="https://github.com/zfsonlinux/${PN}/releases/download/${P}/${P}.tar.gz";
-       KEYWORDS="~amd64 ~arm ~ppc ~ppc64"
+       KEYWORDS="~amd64"
 fi
 
 inherit autotools-utils bash-completion-r1 flag-o-matic linux-info python-r1 
systemd toolchain-funcs udev
@@ -52,7 +51,12 @@ RDEPEND="${COMMON_DEPEND}
                app-arch/cpio
                app-misc/pax-utils
                !<sys-boot/grub-2.00-r2:2
+               !<sys-kernel/genkernel-3.5.1.1
+               !<sys-kernel/genkernel-next-67
+               !<sys-kernel/bliss-initramfs-7.1.0
+               !<sys-kernel/dracut-044-r1
                )
+       sys-fs/udev-init-scripts
 "
 
 AT_M4DIR="config"
@@ -97,7 +101,7 @@ src_configure() {
                --bindir="${EPREFIX}/bin"
                --sbindir="${EPREFIX}/sbin"
                --with-config=user
-               --with-dracutdir="/usr/$(get_libdir)/dracut"
+               --with-dracutdir="${EPREFIX}/usr/lib/dracut"
                --with-linux="${KV_DIR}"
                --with-linux-obj="${KV_OUT_DIR}"
                --with-udevdir="$(get_udevdir)"
@@ -131,7 +135,7 @@ src_install() {
 }
 
 pkg_postinst() {
-       if ! use kernel-builtin && [[ ${PV} = *"9999" ]]
+       if ! use kernel-builtin && [ ${PV} = "9999" ]
        then
                einfo "Adding ${P} to the module database to ensure that the"
                einfo "kernel modules and userland utilities stay in sync."
@@ -191,7 +195,7 @@ pkg_postinst() {
 }
 
 pkg_postrm() {
-       if ! use kernel-builtin && [[ ${PV} = *"9999" ]]
+       if ! use kernel-builtin && [ ${PV} = "9999" ]
        then
                remove_moduledb
        fi

diff --git a/sys-fs/zfs/zfs-0.7.9999.ebuild b/sys-fs/zfs/zfs-0.7.9999.ebuild
index da5f1597be5..9a83e14a4af 100644
--- a/sys-fs/zfs/zfs-0.7.9999.ebuild
+++ b/sys-fs/zfs/zfs-0.7.9999.ebuild
@@ -97,7 +97,7 @@ src_configure() {
                --bindir="${EPREFIX}/bin"
                --sbindir="${EPREFIX}/sbin"
                --with-config=user
-               --with-dracutdir="/usr/$(get_libdir)/dracut"
+               --with-dracutdir="${EPREFIX}/usr/lib/dracut"
                --with-linux="${KV_DIR}"
                --with-linux-obj="${KV_OUT_DIR}"
                --with-udevdir="$(get_udevdir)"

diff --git a/sys-fs/zfs/zfs-9999.ebuild b/sys-fs/zfs/zfs-9999.ebuild
index 7b8d2f94a45..4599d9acad3 100644
--- a/sys-fs/zfs/zfs-9999.ebuild
+++ b/sys-fs/zfs/zfs-9999.ebuild
@@ -102,7 +102,7 @@ src_configure() {
                --bindir="${EPREFIX}/bin"
                --sbindir="${EPREFIX}/sbin"
                --with-config=user
-               --with-dracutdir="/usr/$(get_libdir)/dracut"
+               --with-dracutdir="${EPREFIX}/usr/lib/dracut"
                --with-linux="${KV_DIR}"
                --with-linux-obj="${KV_OUT_DIR}"
                --with-udevdir="$(get_udevdir)"

Reply via email to