| # 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 bash-completion-r1 flag-o-matic linux-info linux-mod toolchain-funcs autotools-utils |
| |
| if [ ${PV} == "9999" ] ; then |
| inherit git-2 |
| MY_PV=9999 |
| EGIT_REPO_URI="git://github.com/zfsonlinux/zfs.git" |
| else |
| inherit eutils versionator |
| MY_PV=$(replace_version_separator 3 '-') |
| SRC_URI="https://github.com/zfsonlinux/zfs/archive/zfs-${MY_PV}.tar.gz" |
| S="${WORKDIR}/zfs-zfs-${MY_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="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 |
| ZLIB_DEFLATE |
| ZLIB_INFLATE |
| " |
| |
| 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 9 || die "Linux 3.9 is the latest supported version."; } |
| |
| check_extra_config |
| } |
| |
| src_prepare() { |
| if [ ${PV} != "9999" ] |
| then |
| # Cast constant for 32-bit compatibility |
| epatch "${FILESDIR}/${P}-cast-const-for-32bit-compatibility.patch" |
| |
| # Handle missing name length check in Linux VFS |
| epatch "${FILESDIR}/${P}-vfs-name-length-compatibility.patch" |
| |
| # Fix NULL pointer exception on hardened kernels, bug #457176 |
| epatch "${FILESDIR}/${P}-improved-hardened-support.patch" |
| |
| # Fix barrier regression on Linux 2.6.37 and later |
| epatch "${FILESDIR}/${P}-flush-properly.patch" |
| |
| # Improve accuracy of autotools checks |
| epatch "${FILESDIR}/${P}-improved-autotools-checks.patch" |
| |
| # Linux 3.9 Support |
| epatch "${FILESDIR}/${P}-linux-3.9-compat.patch" |
| |
| # Do not second guess Linux's memory management |
| epatch "${FILESDIR}/${P}-zfs_arc_memory_throttle_disable.patch" |
| fi |
| |
| # Remove GPLv2-licensed ZPIOS unless we are debugging |
| use debug || sed -e 's/^subdir-m += zpios$//' -i "${S}/module/Makefile.in" |
| |
| autotools-utils_src_prepare |
| } |
| |
| src_configure() { |
| use custom-cflags || strip-flags |
| filter-ldflags -Wl,* |
| |
| set_arch_to_kernel |
| local myeconfargs=( |
| --bindir="${EPREFIX}/bin" |
| --sbindir="${EPREFIX}/sbin" |
| --with-config=kernel |
| --with-linux="${KV_DIR}" |
| --with-linux-obj="${KV_OUT_DIR}" |
| $(use_enable debug) |
| ) |
| autotools-utils_src_configure |
| } |
| |
| src_install() { |
| autotools-utils_src_install |
| dodoc AUTHORS COPYRIGHT DISCLAIMER README.markdown |
| |
| # Provide /usr/src/zfs symlink for lustre |
| dosym "$(basename $(echo "${ED}/usr/src/zfs-"*))/${KV_FULL}" /usr/src/zfs |
| } |
| |
| pkg_postinst() { |
| linux-mod_pkg_postinst |
| |
| 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 introduces 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 ..." |
| } |