linux-vfio/PKGBUILD

257 lines
8.8 KiB
Bash
Raw Normal View History

2017-04-05 19:33:52 +00:00
# Maintainer: Dan Ziemba <zman0900@gmail.com>
# Maintainer: Mark Weiman <markzz@archlinux.net>
2015-01-30 06:07:58 +00:00
pkgbase=linux-vfio
2017-09-29 23:11:59 +00:00
_srcname=linux-4.13
2017-10-27 23:55:50 +00:00
pkgver=4.13.9
2017-07-01 14:58:05 +00:00
pkgrel=1
2015-01-30 06:07:58 +00:00
arch=('i686' 'x86_64')
url="http://www.kernel.org/"
license=('GPL2')
2016-06-13 22:23:14 +00:00
makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc' 'libelf')
2015-01-30 06:07:58 +00:00
options=('!strip')
2015-04-13 19:18:51 +00:00
source=("https://www.kernel.org/pub/linux/kernel/v4.x/${_srcname}.tar.xz"
"https://www.kernel.org/pub/linux/kernel/v4.x/${_srcname}.tar.sign"
2016-08-20 19:45:15 +00:00
"https://www.kernel.org/pub/linux/kernel/v4.x/patch-${pkgver}.xz"
"https://www.kernel.org/pub/linux/kernel/v4.x/patch-${pkgver}.sign"
2015-01-30 06:07:58 +00:00
# the main kernel config files
'config' 'config.x86_64'
2016-11-20 17:54:15 +00:00
# pacman hook for initramfs regeneration
2017-06-23 03:51:45 +00:00
'90-linux.hook'
2015-01-30 06:07:58 +00:00
# standard config files for mkinitcpio ramdisk
'linux.preset'
2017-03-10 22:29:12 +00:00
# patches for pci passthrough
2017-02-10 16:08:50 +00:00
'add-acs-overrides.patch'
2017-10-27 23:55:50 +00:00
'i915-vga-arbiter.patch'
'revert-usb-memory-fix.patch')
2017-09-29 23:11:59 +00:00
sha256sums=('2db3d6066c3ad93eb25b973a3d2951e022a7e975ee2fa7cbe5bddf84d9a49a2c'
2016-06-13 22:23:14 +00:00
'SKIP'
2017-10-27 23:55:50 +00:00
'22156e82467c7911d226a0a887eba19103434efc104439a3b426a3fa551fb8f2'
2016-08-20 19:45:15 +00:00
'SKIP'
2017-10-27 23:55:50 +00:00
'9b1d9fcb55782e6149aca4dc2d3b250dd4cedf1bf4bd8c6f0968acab0e2e0ee4'
'9c6c4d27d59638d0569ea09a97138bfcfb219f17cdf1138be141380e6654f302'
2016-11-20 17:54:15 +00:00
'8f407ad5ff6eff106562ba001c36a281134ac9aa468a596aea660a4fe1fd60b5'
'99d0102c8065793096b8ea2ccc01c41fa3dcb96855f9f6f2c583b2372208c6f9'
2017-09-29 23:11:59 +00:00
'05467ff4108e13c8a1fed9e2cc5b4e7b50c83e97e39b82d5478ea89b4af475ea'
2017-10-27 23:55:50 +00:00
'19fd3b81b4b081ceb100c89fb6bab012a8d708da6ca8cee53d771abca4770236'
'20acfd8fc32fe7c53342d345aa969bc448a0d9022ebbfdf82a06e2d2e22ebfb9')
2015-01-30 06:07:58 +00:00
validpgpkeys=(
'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds
'647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman
)
_kernelname=${pkgbase#linux}
prepare() {
cd "${srcdir}/${_srcname}"
# add upstream patch
2016-08-20 19:45:15 +00:00
patch -p1 -i "${srcdir}/patch-${pkgver}"
2015-01-30 06:07:58 +00:00
# add latest fixes from stable queue, if needed
# http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git
2016-01-20 02:11:44 +00:00
2015-01-30 06:07:58 +00:00
if [ "${CARCH}" = "x86_64" ]; then
cat "${srcdir}/config.x86_64" > ./.config
else
cat "${srcdir}/config" > ./.config
fi
# patches for vga arbiter fix in intel systems
2015-11-04 04:09:53 +00:00
echo '==> Applying i915 VGA arbitration patch'
2017-02-10 16:08:50 +00:00
patch -p1 -i "${srcdir}/i915-vga-arbiter.patch"
2015-01-30 06:07:58 +00:00
# Overrides for missing acs capabilities
2015-11-04 04:09:53 +00:00
echo '==> Applying ACS override patch'
2017-02-10 16:08:50 +00:00
patch -p1 -i "${srcdir}/add-acs-overrides.patch"
2015-01-30 06:07:58 +00:00
2017-10-27 23:55:50 +00:00
patch -p1 -i "${srcdir}/revert-usb-memory-fix.patch"
2015-01-30 06:07:58 +00:00
if [ "${_kernelname}" != "" ]; then
sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config
sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" ./.config
fi
# set extraversion to pkgrel
sed -ri "s|^(EXTRAVERSION =).*|\1 -${pkgrel}|" Makefile
# don't run depmod on 'make install'. We'll do this ourselves in packaging
sed -i '2iexit 0' scripts/depmod.sh
# get kernel version
make prepare
# load configuration
# Configure the kernel. Replace the line below with one of your choice.
#make menuconfig # CLI menu for configuration
#make nconfig # new CLI menu for configuration
#make xconfig # X-based configuration
#make oldconfig # using old config from previous kernel version
# ... or manually edit .config
# rewrite configuration
yes "" | make config >/dev/null
}
build() {
cd "${srcdir}/${_srcname}"
make ${MAKEFLAGS} LOCALVERSION= bzImage modules
}
_common_package() {
2017-10-11 09:50:17 +00:00
cd "${srcdir}/${_srcname}"
KARCH=x86
# get kernel version
_kernver="$(make LOCALVERSION= kernelrelease)"
_basekernel=${_kernver%%-*}
_basekernel=${_basekernel%.*}
}
2015-01-30 06:07:58 +00:00
_package() {
2015-01-30 06:35:33 +00:00
pkgdesc="The Linux kernel and modules with patches to enable GPU passthrough with KVM"
2015-01-30 06:07:58 +00:00
[ "${pkgbase}" = "linux" ] && groups=('base')
depends=('coreutils' 'linux-firmware' 'kmod' 'mkinitcpio>=0.7')
optdepends=('crda: to set the correct wireless channels of your country')
backup=("etc/mkinitcpio.d/${pkgbase}.preset")
install=linux.install
2017-10-11 09:50:17 +00:00
mkdir -p "${pkgdir}"/{lib/modules,lib/firmware,boot}
2015-01-30 06:07:58 +00:00
make LOCALVERSION= INSTALL_MOD_PATH="${pkgdir}" modules_install
cp arch/$KARCH/boot/bzImage "${pkgdir}/boot/vmlinuz-${pkgbase}"
2015-01-30 06:07:58 +00:00
# set correct depmod command for install
2016-11-20 17:54:15 +00:00
sed -e "s|%PKGBASE%|${pkgbase}|g;s|%KERNVER%|${_kernver}|g" \
"${startdir}/${install}" > "${startdir}/${install}.pkg"
2015-01-30 06:07:58 +00:00
true && install=${install}.pkg
# install mkinitcpio preset file for kernel
2017-10-11 09:50:17 +00:00
sed "s|%PKGBASE%|${pkgbase}|g" ../linux.preset |
install -Dm644 /dev/stdin "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
2016-11-20 17:54:15 +00:00
# install pacman hook for initramfs regeneration
2017-10-11 09:50:17 +00:00
sed "s|%PKGBASE%|${pkgbase}|g" ../90-linux.hook |
install -Dm644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/90-${pkgbase}.hook"
2015-01-30 06:07:58 +00:00
# remove build and source links
2017-10-11 09:50:17 +00:00
rm "${pkgdir}"/lib/modules/${_kernver}/{source,build}
2015-01-30 06:07:58 +00:00
# remove the firmware
2017-10-11 09:50:17 +00:00
rm -r "${pkgdir}/lib/firmware"
2015-01-30 06:07:58 +00:00
# make room for external modules
ln -s "../extramodules-${_basekernel}${_kernelname:--ARCH}" "${pkgdir}/lib/modules/${_kernver}/extramodules"
2017-10-11 09:50:17 +00:00
2015-01-30 06:07:58 +00:00
# add real version for building modules and running depmod from post_install/upgrade
2017-10-11 09:50:17 +00:00
echo "${_kernver}" |
install -Dm644 /dev/stdin "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--ARCH}/version"
2015-01-30 06:07:58 +00:00
# Now we call depmod...
depmod -b "${pkgdir}" -F System.map "${_kernver}"
# move module tree /lib -> /usr/lib
2017-10-11 09:50:17 +00:00
mv -t "${pkgdir}/usr" "${pkgdir}/lib"
2015-01-30 06:07:58 +00:00
# add vmlinux
2017-10-11 09:50:17 +00:00
install -Dm644 vmlinux "${pkgdir}/usr/lib/modules/${_kernver}/build/vmlinux"
2015-01-30 06:07:58 +00:00
}
_package-headers() {
pkgdesc="Header files and scripts for building modules for ${pkgbase/linux/Linux} kernel"
2017-10-11 09:50:17 +00:00
local _builddir="${pkgdir}/usr/lib/modules/${_kernver}/build"
2015-01-30 06:07:58 +00:00
2017-10-11 09:50:17 +00:00
install -Dt "${_builddir}" -m644 Makefile .config Module.symvers
install -Dt "${_builddir}/kernel" -m644 kernel/Makefile
2015-01-30 06:07:58 +00:00
2017-10-11 09:50:17 +00:00
mkdir "${_builddir}/.tmp_versions"
2015-01-30 06:07:58 +00:00
2017-10-11 09:50:17 +00:00
cp -t "${_builddir}" -a include scripts
2015-01-30 06:07:58 +00:00
2017-10-11 09:50:17 +00:00
install -Dt "${_builddir}/arch/${KARCH}" -m644 arch/${KARCH}/Makefile
install -Dt "${_builddir}/arch/${KARCH}/kernel" -m644 arch/${KARCH}/kernel/asm-offsets.s
2015-01-30 06:07:58 +00:00
2017-10-11 09:50:17 +00:00
if [[ ${CARCH} = i686 ]]; then
install -t "${_builddir}/arch/${KARCH}" -m644 arch/${KARCH}/Makefile_32.cpu
2015-01-30 06:07:58 +00:00
fi
2017-10-11 09:50:17 +00:00
cp -t "${_builddir}/arch/${KARCH}" -a arch/${KARCH}/include
2015-01-30 06:07:58 +00:00
2017-10-11 09:50:17 +00:00
install -Dt "${_builddir}/drivers/md" -m644 drivers/md/*.h
install -Dt "${_builddir}/net/mac80211" -m644 net/mac80211/*.h
2015-01-30 06:07:58 +00:00
# http://bugs.archlinux.org/task/9912
2017-10-11 09:50:17 +00:00
install -Dt "${_builddir}/drivers/media/dvb-core" -m644 drivers/media/dvb-core/*.h
2015-01-30 06:07:58 +00:00
# http://bugs.archlinux.org/task/13146
2017-10-11 09:50:17 +00:00
install -Dt "${_builddir}/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/lgdt330x.h
install -Dt "${_builddir}/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
2015-01-30 06:07:58 +00:00
# http://bugs.archlinux.org/task/20402
2017-10-11 09:50:17 +00:00
install -Dt "${_builddir}/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h
install -Dt "${_builddir}/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h
install -Dt "${_builddir}/drivers/media/tuners" -m644 drivers/media/tuners/*.h
2015-01-30 06:07:58 +00:00
# add xfs and shmem for aufs building
2017-10-11 09:50:17 +00:00
mkdir -p "${_builddir}"/{fs/xfs,mm}
2015-01-30 06:07:58 +00:00
# copy in Kconfig files
2017-10-11 09:50:17 +00:00
find . -name Kconfig\* -exec install -Dm644 {} "${_builddir}/{}" \;
2015-01-30 06:07:58 +00:00
2016-06-01 03:45:13 +00:00
# add objtool for external module building and enabled VALIDATION_STACK option
2017-10-11 09:50:17 +00:00
if [[ -e tools/objtool/objtool ]]; then
install -Dt "${_builddir}/tools/objtool" tools/objtool/objtool
2016-06-01 03:45:13 +00:00
fi
2017-10-11 09:50:17 +00:00
# remove unneeded architectures
local _arch
for _arch in "${_builddir}"/arch/*/; do
if [[ ${_arch} != */${KARCH}/ ]]; then
rm -r "${_arch}"
fi
done
# remove files already in linux-docs package
rm -r "${_builddir}/Documentation"
# Fix permissions
chmod -R u=rwX,go=rX "${_builddir}"
2015-01-30 06:07:58 +00:00
# strip scripts directory
2017-10-11 09:50:17 +00:00
local _binary _strip
while read -rd '' _binary; do
case "$(file -bi "${_binary}")" in
*application/x-sharedlib*) _strip="${STRIP_SHARED}" ;; # Libraries (.so)
*application/x-archive*) _strip="${STRIP_STATIC}" ;; # Libraries (.a)
*application/x-executable*) _strip="${STRIP_BINARIES}" ;; # Binaries
*) continue ;;
2015-01-30 06:07:58 +00:00
esac
2017-10-11 09:50:17 +00:00
/usr/bin/strip ${_strip} "${_binary}"
done < <(find "${_builddir}/scripts" -type f -perm -u+w -print0 2>/dev/null)
2015-01-30 06:07:58 +00:00
}
_package-docs() {
pkgdesc="Kernel hackers manual - HTML documentation that comes with the ${pkgbase/linux/Linux} kernel"
2017-10-11 09:50:17 +00:00
local _builddir="${pkgdir}/usr/lib/modules/${_kernver}/build"
2015-01-30 06:07:58 +00:00
2017-10-11 09:50:17 +00:00
mkdir -p "${_builddir}"
cp -t "${_builddir}" -a Documentation
2015-01-30 06:07:58 +00:00
2017-10-11 09:50:17 +00:00
# Fix permissions
chmod -R u=rwX,go=rX "${_builddir}"
2015-01-30 06:07:58 +00:00
}
pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-docs")
for _p in ${pkgname[@]}; do
eval "package_${_p}() {
$(declare -f "_package${_p#${pkgbase}}")
_common_package
2015-01-30 06:07:58 +00:00
_package${_p#${pkgbase}}
}"
done
# vim:set ts=8 sts=2 sw=2 et: