Skip to content

Instantly share code, notes, and snippets.

@infowolfe
Created April 11, 2015 09:17
Show Gist options
  • Save infowolfe/e947465a543497867cd4 to your computer and use it in GitHub Desktop.
Save infowolfe/e947465a543497867cd4 to your computer and use it in GitHub Desktop.
#!/bin/bash
#set -x
#trap read debug
target=${1:-linux}
# setup env
eval $(emerge --info | grep TMPDIR)
local PORTAGE_TMPDIR="${PORTAGE_TMPDIR}/portage"
local spl=$(equery w sys-kernel/spl)
local splpn=$(basename ${spl} .ebuild)
if (equery w sys-kernel/spl | grep 9999 > /dev/null); then
local spltmp=${PORTAGE_TMPDIR}/sys-kernel/${splpn}/work/${splpn}
else
local spltmp=${PORTAGE_TMPDIR}/sys-kernel/${splpn}/work/spl-$(echo ${splpn} | sed -e 's~-r[0-9]~~')
fi
local zfskmod=$(equery w sys-fs/zfs-kmod)
local zkmpn=$(basename ${zfskmod} .ebuild)
local zfspn=$(basename $(equery w sys-fs/zfs))
if (equery w sys-fs/zfs-kmod | grep 9999 > /dev/null); then
local zfstmp=${PORTAGE_TMPDIR}/sys-fs/${zkmpn}/work/${zkmpn}
else
local zfstmp=${PORTAGE_TMPDIR}/sys-fs/${zkmpn}/work/zfs-$(echo ${zfspn} | sed -e 's~-r[0-9]~~' -e 's~-kmod~~')
fi
# perform slipstream and cleanup
usrsrc=/usr/src/${target}
env EXTRA_ECONF="--enable-linux-builtin" ebuild ${spl} clean configure
(cd ${spltmp} && ./copy-builtin ${usrsrc})
env EXTRA_ECONF="--with-spl=${usrsrc} --with-spl-obj=${target} --enable-linux-builtin" ebuild ${zfskmod} clean configure
(cd ${zfstmp} && ./copy-builtin ${usrsrc})
ebuild ${spl} clean
ebuild ${zfskmod} clean
pushd ${usrsrc}
make oldconfig
# do /etc/portage bits
mkdir -p /etc/portage/profile
grep 'sys-fs/zfs -kernel-builtin' /etc/portage/profile/package.use.mask > /dev/null 2>&1 || echo 'sys-fs/zfs -kernel-builtin' >> /etc/portage/profile/package.use.mask
grep 'sys-fs/zfs kernel-builtin' /etc/portage/package.use/sys-fs > /dev/null 2>&1 || echo 'sys-fs/zfs kernel-builtin' >> /etc/portage/package.use/sys-fs
emerge -1bqv sys-fs/zfs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment