| # Copyright 1999-2015 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI="4" |
| |
| AT_M4DIR="config" |
| AUTOTOOLS_AUTORECONF="1" |
| AUTOTOOLS_IN_SOURCE_BUILD="1" |
| |
| inherit flag-o-matic linux-info linux-mod toolchain-funcs autotools-utils |
| |
| if [ ${PV} == "9999" ] ; then |
| inherit git-2 |
| EGIT_REPO_URI="https://github.com/zfsonlinux/zfs.git" |
| else |
| inherit eutils versionator |
| SRC_URI="https://github.com/zfsonlinux/zfs/archive/zfs-${PV}.tar.gz |
| https://dev.gentoo.org/~ryao/dist/zfs-${PV}-patches-${PR}.tar.xz" |
| S="${WORKDIR}/zfs-zfs-${PV}" |
| KEYWORDS="~amd64 ~arm ~ppc ~ppc64" |
| fi |
| |
| DESCRIPTION="Linux ZFS kernel module for sys-fs/zfs" |
| HOMEPAGE="http://zfsonlinux.org/" |
| |
| LICENSE="CDDL debug? ( GPL-2+ )" |
| SLOT="0" |
| IUSE="custom-cflags debug +rootfs" |
| RESTRICT="debug? ( strip ) test" |
| |
| DEPEND=" |
| =sys-kernel/spl-${PV}* |
| dev-lang/perl |
| virtual/awk |
| " |
| |
| RDEPEND="${DEPEND} |
| !sys-fs/zfs-fuse |
| " |
| |
| pkg_setup() { |
| linux-info_pkg_setup |
| CONFIG_CHECK="!DEBUG_LOCK_ALLOC |
| BLK_DEV_LOOP |
| EFI_PARTITION |
| IOSCHED_NOOP |
| MODULES |
| !PAX_KERNEXEC_PLUGIN_METHOD_OR |
| !PAX_RANDKSTACK |
| !PAX_USERCOPY_SLABS |
| ZLIB_DEFLATE |
| ZLIB_INFLATE |
| " |
| |
| use debug && CONFIG_CHECK="${CONFIG_CHECK} |
| FRAME_POINTER |
| DEBUG_INFO |
| !DEBUG_INFO_REDUCED |
| " |
| |
| use rootfs && \ |
| CONFIG_CHECK="${CONFIG_CHECK} |
| BLK_DEV_INITRD |
| DEVTMPFS |
| " |
| |
| kernel_is ge 2 6 26 || die "Linux 2.6.26 or newer required" |
| |
| [ ${PV} != "9999" ] && \ |
| { kernel_is le 3 17 || die "Linux 3.17 is the latest supported version."; } |
| |
| check_extra_config |
| } |
| |
| src_prepare() { |
| if [ ${PV} != "9999" ] |
| then |
| # Apply patch set |
| EPATCH_SUFFIX="patch" \ |
| EPATCH_FORCE="yes" \ |
| epatch "${WORKDIR}/zfs-${PV}-patches" |
| fi |
| |
| # Remove GPLv2-licensed ZPIOS unless we are debugging |
| use debug || sed -e 's/^subdir-m += zpios$//' -i "${S}/module/Makefile.in" |
| |
| # Set module revision number |
| [ ${PV} != "9999" ] && \ |
| { sed -i "s/\(Release:\)\(.*\)1/\1\2${PR}-gentoo/" "${S}/META" || die "Could not set Gentoo release"; } |
| |
| autotools-utils_src_prepare |
| } |
| |
| src_configure() { |
| local SPL_PATH="$(basename $(echo "${EROOT}usr/src/spl-"*))" |
| use custom-cflags || strip-flags |
| filter-ldflags -Wl,* |
| |
| set_arch_to_kernel |
| local myeconfargs=(${myeconfargs} |
| --bindir="${EPREFIX}/bin" |
| --sbindir="${EPREFIX}/sbin" |
| --with-config=kernel |
| --with-linux="${KV_DIR}" |
| --with-linux-obj="${KV_OUT_DIR}" |
| --with-spl="${EROOT}usr/src/${SPL_PATH}" |
| --with-spl-obj="${EROOT}usr/src/${SPL_PATH}/${KV_FULL}" |
| $(use_enable debug) |
| ) |
| |
| autotools-utils_src_configure |
| } |
| |
| src_install() { |
| autotools-utils_src_install INSTALL_MOD_PATH="${INSTALL_MOD_PATH:-$EROOT}" |
| dodoc AUTHORS COPYRIGHT DISCLAIMER README.markdown |
| } |
| |
| pkg_postinst() { |
| linux-mod_pkg_postinst |
| |
| # Remove old modules |
| if [ -d "${EROOT}lib/modules/${KV_FULL}/addon/zfs" ] |
| then |
| ewarn "${PN} now installs modules in ${EROOT}lib/modules/${KV_FULL}/extra/zfs" |
| ewarn "Old modules were detected in ${EROOT}lib/modules/${KV_FULL}/addon/zfs" |
| ewarn "Automatically removing old modules to avoid problems." |
| rm -r "${EROOT}lib/modules/${KV_FULL}/addon/zfs" || die "Cannot remove modules" |
| rmdir --ignore-fail-on-non-empty "${EROOT}lib/modules/${KV_FULL}/addon" |
| 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 |
| |
| ewarn "This version of ZFSOnLinux includes support for features flags." |
| ewarn "If you upgrade your pools to make use of feature flags, you will lose" |
| ewarn "the ability to import them using older versions of ZFSOnLinux." |
| ewarn "Any new pools will be created with feature flag support and will" |
| ewarn "not be compatible with older versions of ZFSOnLinux. To create a new" |
| ewarn "pool that is backward compatible, use zpool create -o version=28 ..." |
| } |