diff options
author | Richard Yao <ryao@gentoo.org> | 2013-07-14 11:52:50 +0000 |
---|---|---|
committer | Richard Yao <ryao@gentoo.org> | 2013-07-14 11:52:50 +0000 |
commit | ac102a231e7edabc1e002f450da45e4f600cbc5d (patch) | |
tree | c75cfcc968592ec7e45b47ae63929b50eb2345ea /sys-fs/zfs | |
parent | Linux 3.10 support; asynchronous zvol initialization; miscellaneous fixes for... (diff) | |
download | gentoo-2-ac102a231e7edabc1e002f450da45e4f600cbc5d.tar.gz gentoo-2-ac102a231e7edabc1e002f450da45e4f600cbc5d.tar.bz2 gentoo-2-ac102a231e7edabc1e002f450da45e4f600cbc5d.zip |
Systemd support (bug #475872); Add python dependency to 9999 ebuild (bug #473788); Asynchronous zvol initialization; GCC 4.8 Compatibility Fix; Miscellaneous zdb fixes
(Portage version: 2.2.0_alpha187/cvs/Linux x86_64, signed Manifest commit with key 0xBEE84C64)
Diffstat (limited to 'sys-fs/zfs')
-rw-r--r-- | sys-fs/zfs/ChangeLog | 13 | ||||
-rw-r--r-- | sys-fs/zfs/files/zfs-0.6.1-avoid-zdb-abort.patch | 30 | ||||
-rw-r--r-- | sys-fs/zfs/files/zfs-0.6.1-fix-gcc-4.8-warning.patch | 42 | ||||
-rw-r--r-- | sys-fs/zfs/files/zfs-0.6.1-fix-zvol-initialization-r1.patch | 167 | ||||
-rw-r--r-- | sys-fs/zfs/files/zfs-init.sh.in | 29 | ||||
-rw-r--r-- | sys-fs/zfs/files/zfs.service.in | 16 | ||||
-rw-r--r-- | sys-fs/zfs/zfs-0.6.1-r2.ebuild | 154 | ||||
-rw-r--r-- | sys-fs/zfs/zfs-9999.ebuild | 41 |
8 files changed, 480 insertions, 12 deletions
diff --git a/sys-fs/zfs/ChangeLog b/sys-fs/zfs/ChangeLog index cab2e05fcc00..47bfedcaac7e 100644 --- a/sys-fs/zfs/ChangeLog +++ b/sys-fs/zfs/ChangeLog @@ -1,6 +1,17 @@ # ChangeLog for sys-fs/zfs # Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-fs/zfs/ChangeLog,v 1.65 2013/05/29 01:12:58 ryao Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-fs/zfs/ChangeLog,v 1.66 2013/07/14 11:52:50 ryao Exp $ + +*zfs-0.6.1-r2 (14 Jul 2013) + + 14 Jul 2013; Richard Yao <ryao@gentoo.org> + +files/zfs-0.6.1-avoid-zdb-abort.patch, + +files/zfs-0.6.1-fix-gcc-4.8-warning.patch, + +files/zfs-0.6.1-fix-zvol-initialization-r1.patch, +files/zfs-init.sh.in, + +files/zfs.service.in, +zfs-0.6.1-r2.ebuild, zfs-9999.ebuild: + Systemd support (bug #475872); Add python dependency to 9999 ebuild (bug + #473788); Asynchronous zvol initialization; GCC 4.8 Compatibility Fix; + Miscellaneous zdb fixes 29 May 2013; Richard Yao <ryao@gentoo.org> zfs-0.6.1-r1.ebuild: Add selinux USE flag diff --git a/sys-fs/zfs/files/zfs-0.6.1-avoid-zdb-abort.patch b/sys-fs/zfs/files/zfs-0.6.1-avoid-zdb-abort.patch new file mode 100644 index 000000000000..f73840feeed6 --- /dev/null +++ b/sys-fs/zfs/files/zfs-0.6.1-avoid-zdb-abort.patch @@ -0,0 +1,30 @@ +From 5d3dc3fb72518a4c191e3a014622b74365eb3a74 Mon Sep 17 00:00:00 2001 +From: Mike Leddy <mike.leddy@gmail.com> +Date: Thu, 4 Jul 2013 01:02:05 -0300 +Subject: [PATCH] Avoid abort() in vn_rdwr(): libzpool/kernel.c + +Make sure that buffer is aligned to 512 bytes on linux so that +pread call combined with O_DIRECT does not return EINVAL. + +Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> +Closes #1570 +--- + cmd/zdb/zdb.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cmd/zdb/zdb.c b/cmd/zdb/zdb.c +index 936974b..a2b6bfe 100644 +--- a/cmd/zdb/zdb.c ++++ b/cmd/zdb/zdb.c +@@ -2844,7 +2844,7 @@ + psize = size; + lsize = size; + +- pbuf = umem_alloc(SPA_MAXBLOCKSIZE, UMEM_NOFAIL); ++ pbuf = umem_alloc_aligned(SPA_MAXBLOCKSIZE, 512, UMEM_NOFAIL); + lbuf = umem_alloc(SPA_MAXBLOCKSIZE, UMEM_NOFAIL); + + BP_ZERO(bp); +-- +1.8.1.6 + diff --git a/sys-fs/zfs/files/zfs-0.6.1-fix-gcc-4.8-warning.patch b/sys-fs/zfs/files/zfs-0.6.1-fix-gcc-4.8-warning.patch new file mode 100644 index 000000000000..00ec1057efa1 --- /dev/null +++ b/sys-fs/zfs/files/zfs-0.6.1-fix-gcc-4.8-warning.patch @@ -0,0 +1,42 @@ +From 3db3ff4a787acf068b122562fb5be5aecec2611f Mon Sep 17 00:00:00 2001 +From: Richard Yao <ryao@gentoo.org> +Date: Tue, 2 Jul 2013 00:07:15 -0400 +Subject: [PATCH] Use MAXPATHLEN instead of sizeof in snprintf +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This silences a GCC 4.8.0 warning by fixing a programming error +caught by static analysis: + +../../cmd/ztest/ztest.c: In function ‘ztest_vdev_aux_add_remove’: +../../cmd/ztest/ztest.c:2584:33: error: argument to ‘sizeof’ + in ‘snprintf’ call is the same expression as the destination; + did you mean to provide an explicit length? + [-Werror=sizeof-pointer-memaccess] + (void) snprintf(path, sizeof (path), ztest_aux_template, + ^ + +Signed-off-by: Richard Yao <ryao@gentoo.org> +Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> +Closes #1480 +--- + cmd/ztest/ztest.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cmd/ztest/ztest.c b/cmd/ztest/ztest.c +index b38d7b1..93a5f1e 100644 +--- a/cmd/ztest/ztest.c ++++ b/cmd/ztest/ztest.c +@@ -2581,7 +2581,7 @@ enum ztest_object { + zs->zs_vdev_aux = 0; + for (;;) { + int c; +- (void) snprintf(path, sizeof (path), ztest_aux_template, ++ (void) snprintf(path, MAXPATHLEN, ztest_aux_template, + ztest_opts.zo_dir, ztest_opts.zo_pool, aux, + zs->zs_vdev_aux); + for (c = 0; c < sav->sav_count; c++) +-- +1.8.1.6 + diff --git a/sys-fs/zfs/files/zfs-0.6.1-fix-zvol-initialization-r1.patch b/sys-fs/zfs/files/zfs-0.6.1-fix-zvol-initialization-r1.patch new file mode 100644 index 000000000000..b1e7d3736db0 --- /dev/null +++ b/sys-fs/zfs/files/zfs-0.6.1-fix-zvol-initialization-r1.patch @@ -0,0 +1,167 @@ +diff --git a/module/zfs/spa.c b/module/zfs/spa.c +index e986e92..65f78b7 100644 +--- a/module/zfs/spa.c ++++ b/module/zfs/spa.c +@@ -64,6 +64,7 @@ + #include <sys/zfs_ioctl.h> + #include <sys/dsl_scan.h> + #include <sys/zfeature.h> ++#include <sys/zvol.h> + + #ifdef _KERNEL + #include <sys/bootprops.h> +@@ -2856,6 +2857,7 @@ spa_open_common(const char *pool, spa_t **spapp, void *tag, nvlist_t *nvpolicy, + spa_load_state_t state = SPA_LOAD_OPEN; + int error; + int locked = B_FALSE; ++ int firstopen = B_FALSE; + + *spapp = NULL; + +@@ -2879,6 +2881,8 @@ spa_open_common(const char *pool, spa_t **spapp, void *tag, nvlist_t *nvpolicy, + if (spa->spa_state == POOL_STATE_UNINITIALIZED) { + zpool_rewind_policy_t policy; + ++ firstopen = B_TRUE; ++ + zpool_get_rewind_policy(nvpolicy ? nvpolicy : spa->spa_config, + &policy); + if (policy.zrp_request & ZPOOL_DO_REWIND) +@@ -2953,6 +2957,11 @@ spa_open_common(const char *pool, spa_t **spapp, void *tag, nvlist_t *nvpolicy, + mutex_exit(&spa_namespace_lock); + } + ++#ifdef _KERNEL ++ if (firstopen) ++ zvol_create_minors(spa->spa_name); ++#endif ++ + *spapp = spa; + + return (0); +@@ -4010,6 +4019,10 @@ spa_import(const char *pool, nvlist_t *config, nvlist_t *props, uint64_t flags) + mutex_exit(&spa_namespace_lock); + spa_history_log_version(spa, LOG_POOL_IMPORT); + ++#ifdef _KERNEL ++ zvol_create_minors(pool); ++#endif ++ + return (0); + } + +diff --git a/module/zfs/zfs_ioctl.c b/module/zfs/zfs_ioctl.c +index 1226b2c..a9184a1 100644 +--- a/module/zfs/zfs_ioctl.c ++++ b/module/zfs/zfs_ioctl.c +@@ -1268,9 +1268,6 @@ zfs_ioc_pool_import(zfs_cmd_t *zc) + error = err; + } + +- if (error == 0) +- zvol_create_minors(zc->zc_name); +- + nvlist_free(config); + + if (props) +diff --git a/module/zfs/zvol.c b/module/zfs/zvol.c +index 43a7bb6..e35c91b 100644 +--- a/module/zfs/zvol.c ++++ b/module/zfs/zvol.c +@@ -1215,6 +1215,9 @@ zvol_alloc(dev_t dev, const char *name) + + zv = kmem_zalloc(sizeof (zvol_state_t), KM_SLEEP); + ++ spin_lock_init(&zv->zv_lock); ++ list_link_init(&zv->zv_next); ++ + zv->zv_queue = blk_init_queue(zvol_request, &zv->zv_lock); + if (zv->zv_queue == NULL) + goto out_kmem; +@@ -1248,9 +1251,6 @@ zvol_alloc(dev_t dev, const char *name) + sizeof (rl_t), offsetof(rl_t, r_node)); + zv->zv_znode.z_is_zvol = TRUE; + +- spin_lock_init(&zv->zv_lock); +- list_link_init(&zv->zv_next); +- + zv->zv_disk->major = zvol_major; + zv->zv_disk->first_minor = (dev & MINORMASK); + zv->zv_disk->fops = &zvol_ops; +@@ -1561,30 +1561,36 @@ zvol_init(void) + { + int error; + ++ list_create(&zvol_state_list, sizeof (zvol_state_t), ++ offsetof(zvol_state_t, zv_next)); ++ mutex_init(&zvol_state_lock, NULL, MUTEX_DEFAULT, NULL); ++ + zvol_taskq = taskq_create(ZVOL_DRIVER, zvol_threads, maxclsyspri, + zvol_threads, INT_MAX, TASKQ_PREPOPULATE); + if (zvol_taskq == NULL) { + printk(KERN_INFO "ZFS: taskq_create() failed\n"); +- return (-ENOMEM); ++ error = -ENOMEM; ++ goto out1; + } + + error = register_blkdev(zvol_major, ZVOL_DRIVER); + if (error) { + printk(KERN_INFO "ZFS: register_blkdev() failed %d\n", error); +- taskq_destroy(zvol_taskq); +- return (error); ++ goto out2; + } + + blk_register_region(MKDEV(zvol_major, 0), 1UL << MINORBITS, + THIS_MODULE, zvol_probe, NULL, NULL); + +- mutex_init(&zvol_state_lock, NULL, MUTEX_DEFAULT, NULL); +- list_create(&zvol_state_list, sizeof (zvol_state_t), +- offsetof(zvol_state_t, zv_next)); ++ return (0); + +- (void) zvol_create_minors(NULL); ++out2: ++ taskq_destroy(zvol_taskq); ++out1: ++ mutex_destroy(&zvol_state_lock); ++ list_destroy(&zvol_state_list); + +- return (0); ++ return (error); + } + + void +diff --git a/scripts/zconfig.sh b/scripts/zconfig.sh +index 141348c..281166c 100755 +--- a/scripts/zconfig.sh ++++ b/scripts/zconfig.sh +@@ -264,8 +264,9 @@ test_4() { + zconfig_zvol_device_stat 0 ${POOL_NAME} ${FULL_ZVOL_NAME} \ + ${FULL_SNAP_NAME} ${FULL_CLONE_NAME} || fail 9 + +- # Load the modules, wait 1 second for udev ++ # Load the modules, list the pools to ensure they are opened + ${ZFS_SH} zfs="spa_config_path=${TMP_CACHE}" || fail 10 ++ ${ZPOOL} list &>/dev/null + + # Verify the devices were created + zconfig_zvol_device_stat 10 ${POOL_NAME} ${FULL_ZVOL_NAME} \ +diff --git a/udev/rules.d/90-zfs.rules.in b/udev/rules.d/90-zfs.rules.in +index 52e1d63..a2715d2 100644 +--- a/udev/rules.d/90-zfs.rules.in ++++ b/udev/rules.d/90-zfs.rules.in +@@ -1,4 +1,4 @@ +-SUBSYSTEM!="block", GOTO="zfs_end" ++SUBSYSTEM!="block|misc", GOTO="zfs_end" + ACTION!="add|change", GOTO="zfs_end" + + ENV{ID_FS_TYPE}=="zfs", RUN+="/sbin/modprobe zfs" +@@ -7,4 +7,6 @@ ENV{ID_FS_TYPE}=="zfs_member", RUN+="/sbin/modprobe zfs" + KERNEL=="null", SYMLINK+="root" + SYMLINK=="null", SYMLINK+="root" + ++SUBSYSTEM=="misc", KERNEL=="zfs", RUN+="@sbindir@/zpool list" ++ + LABEL="zfs_end" diff --git a/sys-fs/zfs/files/zfs-init.sh.in b/sys-fs/zfs/files/zfs-init.sh.in new file mode 100644 index 000000000000..ed84585cd5f6 --- /dev/null +++ b/sys-fs/zfs/files/zfs-init.sh.in @@ -0,0 +1,29 @@ +#!/bin/sh + +ZFS="@sbindir@/zfs" +ZPOOL="@sbindir@/zpool" +ZPOOL_CACHE="@sysconfdir@/zfs/zpool.cache" + +if [ -f "${ZPOOL_CACHE}" ]; then + "${ZPOOL}" import -c "${ZPOOL_CACHE}" -aN 2>/dev/null + if [ "${?}" != "0" ]; then + echo "Failed to import not-yet imported pools." >&2 + fi +fi + +echo "Mounting ZFS filesystems" +"${ZFS}" mount -a +if [ "${?}" != "0" ]; then + echo "Failed to mount ZFS filesystems." >&2 + exit 1 +fi + +echo "Exporting ZFS filesystems" +"${ZFS}" share -a +if [ "${?}" != "0" ]; then + echo "Failed to export ZFS filesystems." >&2 + exit 1 +fi + +exit 0 + diff --git a/sys-fs/zfs/files/zfs.service.in b/sys-fs/zfs/files/zfs.service.in new file mode 100644 index 000000000000..4e510a8f4d21 --- /dev/null +++ b/sys-fs/zfs/files/zfs.service.in @@ -0,0 +1,16 @@ +[Unit] +Description=ZFS filesystems setup +Before=network.target +After=systemd-udev-settle.target local-fs.target + +[Service] +Type=oneshot +RemainAfterExit=true +ExecStartPre=/sbin/modprobe zfs +ExecStartPre=/usr/bin/test -c /dev/zfs +ExecStart=/usr/libexec/zfs-init.sh +ExecStop=@sbindir@/zfs umount -a + +[Install] +WantedBy=multi-user.target + diff --git a/sys-fs/zfs/zfs-0.6.1-r2.ebuild b/sys-fs/zfs/zfs-0.6.1-r2.ebuild new file mode 100644 index 000000000000..3aef5bcc5f8e --- /dev/null +++ b/sys-fs/zfs/zfs-0.6.1-r2.ebuild @@ -0,0 +1,154 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-fs/zfs/zfs-0.6.1-r2.ebuild,v 1.1 2013/07/14 11:52:50 ryao Exp $ + +EAPI="4" + +AT_M4DIR="config" +AUTOTOOLS_AUTORECONF="1" +AUTOTOOLS_IN_SOURCE_BUILD="1" + +if [ ${PV} == "9999" ] ; then + inherit git-2 linux-mod + EGIT_REPO_URI="git://github.com/zfsonlinux/${PN}.git" +else + inherit eutils versionator + MY_PV=$(replace_version_separator 3 '-') + SRC_URI="https://github.com/zfsonlinux/${PN}/archive/${PN}-${MY_PV}.tar.gz" + S="${WORKDIR}/${PN}-${PN}-${MY_PV}" + KEYWORDS="~amd64" +fi + +inherit bash-completion-r1 flag-o-matic toolchain-funcs autotools-utils udev + +DESCRIPTION="Userland utilities for ZFS Linux kernel module" +HOMEPAGE="http://zfsonlinux.org/" + +LICENSE="BSD-2 CDDL MIT" +SLOT="0" +IUSE="bash-completion custom-cflags kernel-builtin +rootfs selinux test-suite static-libs" +RESTRICT="test" + +COMMON_DEPEND=" + selinux? ( sys-libs/libselinux ) + sys-apps/util-linux[static-libs?] + sys-libs/zlib[static-libs(+)?] + virtual/awk +" +DEPEND="${COMMON_DEPEND} + virtual/pkgconfig +" + +RDEPEND="${COMMON_DEPEND} + !=sys-apps/grep-2.13* + !kernel-builtin? ( =sys-fs/zfs-kmod-${PV}* ) + !sys-fs/zfs-fuse + !prefix? ( virtual/udev ) + test-suite? ( + sys-apps/util-linux + sys-devel/bc + sys-block/parted + sys-fs/lsscsi + sys-fs/mdadm + sys-process/procps + virtual/modutils + ) + rootfs? ( + app-arch/cpio + app-misc/pax-utils + !<sys-boot/grub-2.00-r2:2 + ) +" + +pkg_setup() { + : +} + +src_prepare() { + if [ ${PV} != "9999" ] + then + # Fix OpenRC dependencies + epatch "${FILESDIR}/${P}-gentoo-openrc-dependencies.patch" + + # Make zvol initialization asynchronous + epatch "${FILESDIR}/${P}-fix-zvol-initialization-r1.patch" + + # Use MAXPATHLEN to silence GCC 4.8 warning + epatch "${FILESDIR}/${P}-fix-gcc-4.8-warning.patch" + + # Avoid zdb abort + epatch "${FILESDIR}/${P}-avoid-zdb-abort.patch" + 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 + + autotools-utils_src_prepare +} + +src_configure() { + use custom-cflags || strip-flags + local myeconfargs=( + --bindir="${EPREFIX}/bin" + --sbindir="${EPREFIX}/sbin" + --with-config=user + --with-linux="${KV_DIR}" + --with-linux-obj="${KV_OUT_DIR}" + --with-udevdir="$(udev_get_udevdir)" + $(use_with selinux) + ) + autotools-utils_src_configure + + # prepare systemd unit and helper script + cat "${FILESDIR}/zfs.service.in" | \ + sed -e "s:@sbindir@:${EPREFIX}/sbin:g" \ + -e "s:@sysconfdir@:${EPREFIX}/etc:g" \ + > "${T}/zfs.service" || die + cat "${FILESDIR}/zfs-init.sh.in" | \ + sed -e "s:@sbindir@:${EPREFIX}/sbin:g" \ + -e "s:@sysconfdir@:${EPREFIX}/etc:g" \ + > "${T}/zfs-init.sh" || die +} + +src_install() { + autotools-utils_src_install + gen_usr_ldscript -a uutil nvpair zpool zfs + rm -rf "${ED}usr/lib/dracut" + use test-suite || rm -rf "${ED}usr/share/zfs" + + use bash-completion && newbashcomp "${FILESDIR}/bash-completion" zfs + + exeinto /usr/libexec + doexe "${T}/zfs-init.sh" + systemd_dounit "${T}/zfs.service" +} + +pkg_postinst() { + + 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." + update_moduledb + fi + + [ -e "${EROOT}/etc/runlevels/boot/zfs" ] \ + || ewarn 'You should add zfs to the boot runlevel.' + + if [ -e "${EROOT}/etc/runlevels/shutdown/zfs-shutdown" ] + then + einfo "The zfs-shutdown script is obsolete. Removing it from runlevel." + rm "${EROOT}/etc/runlevels/shutdown/zfs-shutdown" + fi + +} + +pkg_postrm() { + if ! use kernel-builtin && [ ${PV} = "9999" ] + then + remove_moduledb + fi +} diff --git a/sys-fs/zfs/zfs-9999.ebuild b/sys-fs/zfs/zfs-9999.ebuild index 6711c511b9f5..8195b497c509 100644 --- a/sys-fs/zfs/zfs-9999.ebuild +++ b/sys-fs/zfs/zfs-9999.ebuild @@ -1,8 +1,11 @@ # Copyright 1999-2013 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-fs/zfs/zfs-9999.ebuild,v 1.44 2013/02/06 01:48:50 ryao Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-fs/zfs/zfs-9999.ebuild,v 1.45 2013/07/14 11:52:50 ryao Exp $ -EAPI="4" +EAPI="5" +PYTHON_COMPAT=( python{2_5,2_6,2_7} ) + +inherit python-single-r1 AT_M4DIR="config" AUTOTOOLS_AUTORECONF="1" @@ -26,10 +29,11 @@ HOMEPAGE="http://zfsonlinux.org/" LICENSE="BSD-2 CDDL MIT" SLOT="0" -IUSE="custom-cflags kernel-builtin +rootfs test-suite static-libs" +IUSE="bash-completion custom-cflags kernel-builtin +rootfs selinux test-suite static-libs" RESTRICT="test" COMMON_DEPEND=" + selinux? ( sys-libs/libselinux ) sys-apps/util-linux[static-libs?] sys-libs/zlib[static-libs(+)?] virtual/awk @@ -64,17 +68,18 @@ pkg_setup() { } src_prepare() { + if [ ${PV} != "9999" ] + then + # Fix OpenRC dependencies + epatch "${FILESDIR}/${P}-gentoo-openrc-dependencies.patch" + 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 [ ${PV} != "9999" ] - then - epatch "${FILESDIR}/${P}-fix-libzpool-function-relocations.patch" - fi - autotools-utils_src_prepare } @@ -87,18 +92,32 @@ src_configure() { --with-linux="${KV_DIR}" --with-linux-obj="${KV_OUT_DIR}" --with-udevdir="$(udev_get_udevdir)" + $(use_with selinux) ) autotools-utils_src_configure + + # prepare systemd unit and helper script + cat "${FILESDIR}/zfs.service.in" | \ + sed -e "s:@sbindir@:${EPREFIX}/sbin:g" \ + -e "s:@sysconfdir@:${EPREFIX}/etc:g" \ + > "${T}/zfs.service" || die + cat "${FILESDIR}/zfs-init.sh.in" | \ + sed -e "s:@sbindir@:${EPREFIX}/sbin:g" \ + -e "s:@sysconfdir@:${EPREFIX}/etc:g" \ + > "${T}/zfs-init.sh" || die } src_install() { autotools-utils_src_install gen_usr_ldscript -a uutil nvpair zpool zfs - rm -rf "${ED}usr/share/dracut" - use test-suite || rm -rf "${ED}usr/libexec" + rm -rf "${ED}usr/lib/dracut" + use test-suite || rm -rf "${ED}usr/share/zfs" - newbashcomp "${FILESDIR}/bash-completion" zfs + use bash-completion && newbashcomp "${FILESDIR}/bash-completion" zfs + exeinto /usr/libexec + doexe "${T}/zfs-init.sh" + systemd_dounit "${T}/zfs.service" } pkg_postinst() { |