| # Copyright 1999-2015 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI="5" |
| |
| if [[ ${PV} == "9999" ]] ; then |
| AUTOTOOLS_AUTORECONF="1" |
| EGIT_REPO_URI="https://github.com/zfsonlinux/${PN}.git" |
| inherit git-r3 |
| else |
| SRC_URI="https://github.com/zfsonlinux/zfs/releases/download/zfs-${PV}/${P}.tar.gz |
| https://dev.gentoo.org/~ryao/dist/${P}-patches-p0.tar.xz" |
| KEYWORDS="~amd64 ~arm ~ppc ~ppc64" |
| fi |
| |
| inherit flag-o-matic linux-info linux-mod autotools-utils |
| |
| DESCRIPTION="The Solaris Porting Layer is a Linux kernel module which provides many of the Solaris kernel APIs" |
| HOMEPAGE="http://zfsonlinux.org/" |
| |
| LICENSE="GPL-2" |
| SLOT="0" |
| IUSE="custom-cflags debug" |
| RESTRICT="debug? ( strip ) test" |
| |
| COMMON_DEPEND="dev-lang/perl |
| virtual/awk" |
| |
| DEPEND="${COMMON_DEPEND}" |
| |
| RDEPEND="${COMMON_DEPEND} |
| !sys-devel/spl" |
| |
| AT_M4DIR="config" |
| AUTOTOOLS_IN_SOURCE_BUILD="1" |
| DOCS=( AUTHORS DISCLAIMER ) |
| |
| pkg_setup() { |
| linux-info_pkg_setup |
| CONFIG_CHECK=" |
| !DEBUG_LOCK_ALLOC |
| !GRKERNSEC_RANDSTRUCT |
| KALLSYMS |
| MODULES |
| !PAX_KERNEXEC_PLUGIN_METHOD_OR |
| ZLIB_DEFLATE |
| ZLIB_INFLATE |
| " |
| |
| use debug && CONFIG_CHECK="${CONFIG_CHECK} |
| FRAME_POINTER |
| DEBUG_INFO |
| !DEBUG_INFO_REDUCED |
| " |
| |
| kernel_is ge 2 6 32 || die "Linux 2.6.32 or newer required" |
| |
| [ ${PV} != "9999" ] && \ |
| { kernel_is le 4 4 || die "Linux 4.4 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}/${P}-patches" |
| fi |
| |
| # Workaround for hard coded path |
| sed -i "s|/sbin/lsmod|/bin/lsmod|" "${S}/scripts/check.sh" || \ |
| die "Cannot patch check.sh" |
| |
| # splat is unnecessary unless we are debugging |
| use debug || { sed -e 's/^subdir-m += splat$//' -i "${S}/module/Makefile.in" || die ; } |
| |
| # 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() { |
| use custom-cflags || strip-flags |
| filter-ldflags -Wl,* |
| |
| set_arch_to_kernel |
| local myeconfargs=( |
| --bindir="${EPREFIX}/bin" |
| --sbindir="${EPREFIX}/sbin" |
| --with-config=all |
| --with-linux="${KV_DIR}" |
| --with-linux-obj="${KV_OUT_DIR}" |
| $(use_enable debug) |
| ) |
| autotools-utils_src_configure |
| } |
| |
| src_install() { |
| autotools-utils_src_install INSTALL_MOD_PATH="${INSTALL_MOD_PATH:-$EROOT}" |
| } |
| |
| pkg_postinst() { |
| linux-mod_pkg_postinst |
| |
| # Remove old modules |
| if [ -d "${EROOT}lib/modules/${KV_FULL}/addon/spl" ] |
| then |
| ewarn "${PN} now installs modules in ${EROOT}lib/modules/${KV_FULL}/extra/spl" |
| ewarn "Old modules were detected in ${EROOT}lib/modules/${KV_FULL}/addon/spl" |
| ewarn "Automatically removing old modules to avoid problems." |
| rm -r "${EROOT}lib/modules/${KV_FULL}/addon/spl" || die "Cannot remove modules" |
| rmdir --ignore-fail-on-non-empty "${EROOT}lib/modules/${KV_FULL}/addon" |
| fi |
| } |