26512f90ea
- merge spl-userspace with zfs-userspace - merge spl with zfs The problem is that zfs is tightly coupled with spl version, which is tightly coupled with the kernel built against. It is otherwise impossible for us to provide multiple spl and zfs versions for each supported kernel.
219 lines
5.1 KiB
Bash
219 lines
5.1 KiB
Bash
# Copyright 2004-2012 Sabayon Linux
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
# $
|
|
|
|
AT_M4DIR="config"
|
|
AUTOTOOLS_AUTORECONF="1"
|
|
AUTOTOOLS_IN_SOURCE_BUILD="1"
|
|
|
|
inherit eutils flag-o-matic git-2 linux-mod autotools-utils
|
|
|
|
# export all the available functions here
|
|
EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_install src_test
|
|
|
|
# @ECLASS-VARIABLE: ZFS_GIT_REPO
|
|
# @DESCRIPTION:
|
|
# Identified the ZFS Git repo from where to pull
|
|
ZFS_GIT_REPO="${ZFS_GIT_REPO:-}"
|
|
|
|
# @ECLASS-VARIABLE: ZFS_GIT_BRANCH
|
|
# @DESCRIPTION:
|
|
# Identified the ZFS Git branch from where to pull
|
|
ZFS_GIT_BRANCH="${ZFS_GIT_BRANCH:-}"
|
|
|
|
# @ECLASS-VARIABLE: ZFS_GIT_COMMIT
|
|
# @DESCRIPTION:
|
|
# Identified the ZFS Git commit from where to pull
|
|
ZFS_GIT_COMMIT="${ZFS_GIT_COMMIT:-}"
|
|
|
|
# @ECLASS-VARIABLE: SPL_GIT_REPO
|
|
# @DESCRIPTION:
|
|
# Identified the SPL Git repo from where to pull
|
|
SPL_GIT_REPO="${SPL_GIT_REPO:-}"
|
|
|
|
# @ECLASS-VARIABLE: SPL_GIT_BRANCH
|
|
# @DESCRIPTION:
|
|
# Identified the SPL Git branch from where to pull
|
|
SPL_GIT_BRANCH="${SPL_GIT_BRANCH:-}"
|
|
|
|
# @ECLASS-VARIABLE: SPL_GIT_COMMIT
|
|
# @DESCRIPTION:
|
|
# Identified the SPL Git commit from where to pull
|
|
SPL_GIT_COMMIT="${SPL_GIT_COMMIT:-}"
|
|
|
|
SRC_URI=""
|
|
|
|
DESCRIPTION="The Solaris Porting Layer and ZFS Filesystem userspace utilities"
|
|
HOMEPAGE="http://zfsonlinux.org/"
|
|
|
|
LICENSE="|| ( GPL-2 GPL-3 ) CDDL"
|
|
SLOT="0"
|
|
KEYWORDS="~amd64 ~x86"
|
|
|
|
IUSE="custom-cflags debug dracut +rootfs test test-suite static-libs"
|
|
DEPEND+=" sys-apps/util-linux[static-libs?]
|
|
sys-libs/zlib[static-libs(+)?]"
|
|
RDEPEND+=" ${DEPEND}
|
|
!sys-fs/zfs-fuse
|
|
!prefix? ( sys-fs/udev )
|
|
test-suite? (
|
|
sys-apps/gawk
|
|
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
|
|
)"
|
|
DEPEND+=" test? ( sys-fs/mdadm )"
|
|
|
|
SPL_S="${S}/spl-src"
|
|
ZFS_S="${S}/zfs-src"
|
|
|
|
spl-zfs-userspace_pkg_setup() {
|
|
CONFIG_CHECK="
|
|
!DEBUG_LOCK_ALLOC
|
|
BLK_DEV_LOOP
|
|
EFI_PARTITION
|
|
MODULES
|
|
KALLSYMS
|
|
ZLIB_DEFLATE
|
|
ZLIB_INFLATE"
|
|
kernel_is ge 2 6 26 || die "Linux 2.6.26 or newer required"
|
|
check_extra_config
|
|
}
|
|
|
|
spl-zfs-userspace_src_unpack() {
|
|
# unpack spl
|
|
EGIT_REPO_URI="${SPL_GIT_REPO}" \
|
|
EGIT_BRANCH="${SPL_GIT_BRANCH}" \
|
|
EGIT_COMMIT="${SPL_GIT_COMMIT}" \
|
|
EGIT_SOURCEDIR="${SPL_S}" \
|
|
git-2_src_unpack
|
|
|
|
# unpack zfs
|
|
EGIT_REPO_URI="${ZFS_GIT_REPO}" \
|
|
EGIT_BRANCH="${ZFS_GIT_BRANCH}" \
|
|
EGIT_COMMIT="${ZFS_GIT_COMMIT}" \
|
|
EGIT_SOURCEDIR="${ZFS_S}" \
|
|
git-2_src_unpack
|
|
}
|
|
|
|
_zfs_src_prepare() {
|
|
# Workaround for hard coded path
|
|
sed -i "s|/sbin/lsmod|/bin/lsmod|" "${ZFS_S}"/scripts/common.sh.in || die
|
|
# Workaround rename
|
|
sed -i "s|/usr/bin/scsi-rescan|/usr/sbin/rescan-scsi-bus|" "${ZFS_S}"/scripts/common.sh.in || die
|
|
cd "${ZFS_S}" && ECONF_SOURCE="${ZFS_S}" autotools-utils_src_prepare
|
|
}
|
|
|
|
_spl_src_prepare() {
|
|
# Workaround for hard coded path
|
|
sed -i "s|/sbin/lsmod|/bin/lsmod|" "${SPL_S}"/scripts/check.sh || die
|
|
cd "${SPL_S}" && ECONF_SOURCE="${SPL_S}" autotools-utils_src_prepare
|
|
}
|
|
|
|
spl-zfs-userspace_src_prepare() {
|
|
_spl_src_prepare
|
|
_zfs_src_prepare
|
|
}
|
|
|
|
_zfs_src_configure() {
|
|
use custom-cflags || strip-flags
|
|
set_arch_to_kernel
|
|
|
|
local myeconfargs=(
|
|
--bindir="${EPREFIX}/bin"
|
|
--sbindir="${EPREFIX}/sbin"
|
|
--with-config=user
|
|
--with-linux="${KV_DIR}"
|
|
--with-linux-obj="${KV_OUT_DIR}"
|
|
--with-udevdir="${EPREFIX}/lib/udev"
|
|
$(use_enable debug)
|
|
--with-spl="${SPL_S}"
|
|
)
|
|
cd "${ZFS_S}" && ECONF_SOURCE="${ZFS_S}" autotools-utils_src_configure
|
|
}
|
|
|
|
_spl_src_configure() {
|
|
use custom-cflags || strip-flags
|
|
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)
|
|
--with-config=user
|
|
)
|
|
cd "${SPL_S}" && ECONF_SOURCE="${SPL_S}" autotools-utils_src_configure
|
|
}
|
|
|
|
spl-zfs-userspace_src_configure() {
|
|
_spl_src_configure
|
|
_zfs_src_configure
|
|
}
|
|
|
|
_zfs_src_compile() {
|
|
cd "${ZFS_S}" && ECONF_SOURCE="${ZFS_S}" autotools-utils_src_compile
|
|
}
|
|
|
|
_spl_src_compile() {
|
|
cd "${SPL_S}" && ECONF_SOURCE="${SPL_S}" autotools-utils_src_compile
|
|
}
|
|
|
|
spl-zfs-userspace_src_compile() {
|
|
_spl_src_compile
|
|
_zfs_src_compile
|
|
}
|
|
|
|
_zfs_src_install() {
|
|
cd "${ZFS_S}" && ECONF_SOURCE="${ZFS_S}" autotools-utils_src_install
|
|
gen_usr_ldscript -a uutil nvpair zpool zfs
|
|
use dracut || rm -rf "${ED}usr/share/dracut"
|
|
use test-suite || rm -rf "${ED}usr/libexec"
|
|
|
|
if use rootfs
|
|
then
|
|
doinitd "${FILESDIR}/zfs-shutdown"
|
|
exeinto /usr/share/zfs
|
|
doexe "${FILESDIR}/linuxrc"
|
|
fi
|
|
}
|
|
|
|
_spl_src_install() {
|
|
cd "${SPL_S}" && ECONF_SOURCE="${SPL_S}" autotools-utils_src_install
|
|
rm -rf "${ED}"/usr # make sure
|
|
}
|
|
|
|
spl-zfs-userspace_src_install() {
|
|
_spl_src_install
|
|
_zfs_src_install
|
|
}
|
|
|
|
spl-zfs-userspace_src_test() {
|
|
if [[ ! -e /proc/modules ]]
|
|
then
|
|
die "Missing /proc/modules"
|
|
elif [[ $UID -ne 0 ]]
|
|
then
|
|
ewarn "Cannot run make check tests with FEATURES=userpriv."
|
|
ewarn "Skipping make check tests."
|
|
elif grep -q '^spl ' /proc/modules
|
|
then
|
|
ewarn "Cannot run make check tests with module spl loaded."
|
|
ewarn "Skipping make check tests."
|
|
else
|
|
cd "${SPL_S}" && ECONF_SOURCE="${SPL_S}" autotools-utils_src_test
|
|
cd "${ZFS_S}" && ECONF_SOURCE="${ZFS_S}" autotools-utils_src_test
|
|
fi
|
|
}
|
|
|