PKGBUILDs/core/linux-raspberrypi/PKGBUILD

255 lines
9.8 KiB
Bash
Raw Normal View History

2012-08-18 04:26:56 +00:00
# Maintainer: Dave Higham <pepedog@archlinuxarm.org>
# Maintainer: Kevin Mihelich <kevin@archlinuxarm.org>
2015-01-24 04:38:37 +00:00
# Maintainer: Oleg Rakhmanov <oleg@archlinuxarm.org>
2015-02-06 01:44:29 +00:00
buildarch=20
2012-03-17 02:49:52 +00:00
2012-07-18 23:30:18 +00:00
pkgbase=linux-raspberrypi
2018-07-31 00:15:23 +00:00
_commit=ad1d85ad2a7dea6a17e6d3cc32adf6ce0ea844c0
2014-09-22 07:20:04 +00:00
_srcname=linux-${_commit}
_kernelname=${pkgbase#linux}
_desc="Raspberry Pi"
2018-07-31 00:15:23 +00:00
pkgver=4.14.59
pkgrel=1
2015-02-06 01:44:29 +00:00
arch=('armv6h' 'armv7h')
2012-03-17 02:49:52 +00:00
url="http://www.kernel.org/"
license=('GPL2')
2015-01-24 04:38:37 +00:00
makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc' 'git')
2012-03-17 02:49:52 +00:00
options=('!strip')
source=("https://github.com/raspberrypi/linux/archive/${_commit}.tar.gz"
2015-01-24 04:38:37 +00:00
'config.txt'
'cmdline.txt'
2017-02-21 03:14:27 +00:00
'config'
'linux.preset'
'99-linux.hook')
2018-07-31 00:15:23 +00:00
md5sums=('fead1df749802a9e9b4e2a77a83d879f'
2017-02-21 03:14:27 +00:00
'7c6b37a1353caccf6d3786bb4161c218'
2015-01-24 04:38:37 +00:00
'60bc3624123c183305677097bcd56212'
core/linux-raspberrypi to 4.14.56-2 (#1605) - The serial device bus was compiled as a module, but this disabled use of the serial device TTY port controller that actually interfaces with the serdev drivers[1], rendering them unusable. Examples include the serdev driver for broadcom bluetooth HCI. - Once built in to the kernel, enabling SERIAL_DEV_CTRL_TTYPORT to be built in, the userspace dependency on btattach is removed and the presence of the bluetooth controller can be indicated in the device tree, instead. This doesn't simply get rid of the dependency on btattach, but improves functionality, as the kernel does not restore the UART link to a higher baud rate after uploading the firmware to the bluetooth controller when notified of the controller over btattach but does so when notified through the device tree. hciattach does restore a higher set baud rate, but that is deprecated. - According to [2], the configuration settings USB_CONFIGFS_F_* are meant for the user to indicate what sort of gadget functionality is to be enabled, while settings USB_F_* are meant to be used in the makefile for compilation. - Enabled USB_CONFIGFS_F_UAC2 at the same time, since UAC1 does not play well when used with a high-speed composite device (UAC1 is not compatible with high-speed, while UAC2 is) - Kernel image size increased by 4008 bytes after these changes 1 - http://events17.linuxfoundation.org/sites/events/files/slides/serdev-elce-2017-2.pdf 2 - https://www.spinics.net/lists/linux-usb/msg142134.html
2018-07-30 23:25:35 +00:00
'f2474f1f0bfe23560d21b3e8655fbadd'
2017-02-21 03:14:27 +00:00
'552c43bf6c0225bc213b31ee942b7000'
'982f9184dfcfbe52110795cf73674334')
2012-03-17 02:49:52 +00:00
prepare() {
2013-11-22 01:51:15 +00:00
cd "${srcdir}/${_srcname}"
2012-03-17 02:49:52 +00:00
2017-02-21 03:14:27 +00:00
cat "${srcdir}/config" > ./.config
2012-03-17 02:49:52 +00:00
# add pkgrel to extraversion
sed -ri "s|^(EXTRAVERSION =)(.*)|\1 \2-${pkgrel}|" Makefile
2012-03-17 02:49:52 +00:00
# don't run depmod on 'make install'. We'll do this ourselves in packaging
sed -i '2iexit 0' scripts/depmod.sh
}
build() {
2013-11-22 01:51:15 +00:00
cd "${srcdir}/${_srcname}"
2012-03-17 02:49:52 +00:00
# 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
2012-03-17 02:49:52 +00:00
#make nconfig # new CLI menu for configuration
#make xconfig # X-based configuration
#make oldconfig # using old config from previous kernel version
#make bcmrpi_defconfig # using RPi defconfig
2012-03-17 02:49:52 +00:00
# ... or manually edit .config
# Copy back our configuration (use with new kernel version)
#cp ./.config ../${pkgver}.config
####################
# stop here
# this is useful to configure the kernel
#msg "Stopping build"
#return 1
####################
#yes "" | make config
2015-01-24 04:38:37 +00:00
make ${MAKEFLAGS} zImage modules dtbs
2012-03-17 02:49:52 +00:00
}
_package() {
pkgdesc="The Linux Kernel and modules - ${_desc}"
2018-02-11 19:55:43 +00:00
depends=('coreutils' 'linux-firmware' 'kmod' 'mkinitcpio>=0.7' 'firmware-raspberrypi')
2012-03-17 02:49:52 +00:00
optdepends=('crda: to set the correct wireless channels of your country')
2017-02-21 03:14:27 +00:00
provides=('kernel26' "linux=${pkgver}")
2012-03-17 02:49:52 +00:00
conflicts=('kernel26' 'linux')
install=${pkgname}.install
2015-01-24 04:38:37 +00:00
backup=('boot/config.txt' 'boot/cmdline.txt')
replaces=('linux-raspberrypi-latest')
2012-03-17 02:49:52 +00:00
2013-11-22 01:51:15 +00:00
cd "${srcdir}/${_srcname}"
2012-03-17 02:49:52 +00:00
KARCH=arm
# get kernel version
_kernver="$(make kernelrelease)"
2015-10-02 00:03:33 +00:00
mkdir -p "${pkgdir}"/{lib/modules,lib/firmware}
2012-03-17 02:49:52 +00:00
make INSTALL_MOD_PATH="${pkgdir}" modules_install
2015-10-02 00:03:33 +00:00
make INSTALL_DTBS_PATH="${pkgdir}/boot" dtbs_install
2015-01-24 04:38:37 +00:00
2017-10-29 19:51:12 +00:00
[[ $CARCH == "armv6h" ]] && cp arch/$KARCH/boot/zImage "${pkgdir}/boot/kernel.img" \
2017-02-21 03:14:27 +00:00
&& rm -f "${pkgdir}"/boot/bcm{2836,2709,2710}*.dtb
2017-10-29 19:51:12 +00:00
[[ $CARCH == "armv7h" ]] && cp arch/$KARCH/boot/zImage "${pkgdir}/boot/kernel7.img" \
2017-02-21 03:14:27 +00:00
&& rm -f "${pkgdir}"/boot/bcm{2835,2708}*.dtb
2016-11-26 15:58:37 +00:00
cp arch/$KARCH/boot/dts/overlays/README "${pkgdir}/boot/overlays"
2012-03-17 02:49:52 +00:00
# set correct depmod command for install
sed \
-e "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/g" \
-e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" \
-i "${startdir}/${pkgname}.install"
2017-02-21 03:14:27 +00:00
# install mkinitcpio preset file for kernel
install -D -m644 "${srcdir}/linux.preset" "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
sed \
-e "1s|'linux.*'|'${pkgbase}'|" \
-e "s|ALL_kver=.*|ALL_kver=\"${_kernver}\"|" \
-i "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
# install pacman hook for initramfs regeneration
sed "s|%PKGBASE%|${pkgbase}|g" "${srcdir}/99-linux.hook" |
install -D -m644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/99-${pkgbase}.hook"
2012-03-17 02:49:52 +00:00
# remove build and source links
rm -f "${pkgdir}"/lib/modules/${_kernver}/{source,build}
# remove the firmware
rm -rf "${pkgdir}/lib/firmware"
# make room for external modules
2017-02-21 03:14:27 +00:00
ln -s "../extramodules-${_basekernel}${_kernelname:--ARCH}" "${pkgdir}/lib/modules/${_kernver}/extramodules"
2012-03-17 02:49:52 +00:00
# add real version for building modules and running depmod from post_install/upgrade
2017-02-21 03:14:27 +00:00
mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--ARCH}"
echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--ARCH}/version"
# Now we call depmod...
depmod -b "$pkgdir" -F System.map "$_kernver"
# move module tree /lib -> /usr/lib
mkdir -p "${pkgdir}/usr"
mv "$pkgdir/lib" "$pkgdir/usr"
2015-01-24 04:38:37 +00:00
# install boot files
install -m644 ../config.txt ../cmdline.txt "${pkgdir}/boot"
2012-03-17 02:49:52 +00:00
}
_package-headers() {
pkgdesc="Header files and scripts for building modules for linux kernel - ${_desc}"
2015-01-24 04:38:37 +00:00
provides=("linux-headers=${pkgver}")
2014-05-10 10:35:37 +00:00
conflicts=('linux-headers')
2015-01-24 04:38:37 +00:00
replaces=('linux-raspberrypi-latest-headers')
2012-03-17 02:49:52 +00:00
install -dm755 "${pkgdir}/usr/lib/modules/${_kernver}"
2012-03-17 02:49:52 +00:00
2013-11-22 01:51:15 +00:00
cd "${srcdir}/${_srcname}"
2012-03-17 02:49:52 +00:00
install -D -m644 Makefile \
2014-05-10 10:35:37 +00:00
"${pkgdir}/usr/lib/modules/${_kernver}/build/Makefile"
2012-03-17 02:49:52 +00:00
install -D -m644 kernel/Makefile \
2014-05-10 10:35:37 +00:00
"${pkgdir}/usr/lib/modules/${_kernver}/build/kernel/Makefile"
2012-03-17 02:49:52 +00:00
install -D -m644 .config \
2014-05-10 10:35:37 +00:00
"${pkgdir}/usr/lib/modules/${_kernver}/build/.config"
2012-03-17 02:49:52 +00:00
2014-05-10 10:35:37 +00:00
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include"
2012-03-17 02:49:52 +00:00
2014-05-10 10:35:37 +00:00
for i in acpi asm-generic config crypto drm generated keys linux math-emu \
2017-02-21 03:14:27 +00:00
media net pcmcia scsi soc sound trace uapi video xen; do
2014-05-10 10:35:37 +00:00
cp -a include/${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/include/"
2012-03-17 02:49:52 +00:00
done
2014-05-10 10:35:37 +00:00
# copy arch includes for external modules
2014-05-16 14:12:19 +00:00
mkdir -p ${pkgdir}/usr/lib/modules/${_kernver}/build/arch/$KARCH
cp -a arch/$KARCH/include ${pkgdir}/usr/lib/modules/${_kernver}/build/arch/$KARCH/
2012-03-17 02:49:52 +00:00
# copy files necessary for later builds, like nvidia and vmware
2014-05-10 10:35:37 +00:00
cp Module.symvers "${pkgdir}/usr/lib/modules/${_kernver}/build"
cp -a scripts "${pkgdir}/usr/lib/modules/${_kernver}/build"
2012-03-17 02:49:52 +00:00
# fix permissions on scripts dir
2014-05-10 10:35:37 +00:00
chmod og-w -R "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts"
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/.tmp_versions"
2012-03-17 02:49:52 +00:00
2014-05-10 10:35:37 +00:00
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel"
2012-03-17 02:49:52 +00:00
2014-05-10 10:35:37 +00:00
cp arch/${KARCH}/Makefile "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/"
2012-03-17 02:49:52 +00:00
2014-05-10 10:35:37 +00:00
cp arch/${KARCH}/kernel/asm-offsets.s "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel/"
2012-03-17 02:49:52 +00:00
# add dm headers
2014-05-10 10:35:37 +00:00
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
cp drivers/md/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
2012-03-17 02:49:52 +00:00
# add inotify.h
2014-05-10 10:35:37 +00:00
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux"
cp include/linux/inotify.h "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux/"
2012-03-17 02:49:52 +00:00
# add wireless headers
2014-05-10 10:35:37 +00:00
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
cp net/mac80211/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
2012-03-17 02:49:52 +00:00
# add dvb headers for external modules
# in reference to:
# http://bugs.archlinux.org/task/9912
2014-05-10 10:35:37 +00:00
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-core"
cp drivers/media/dvb-core/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-core/"
2012-03-17 02:49:52 +00:00
# and...
# http://bugs.archlinux.org/task/11194
2014-05-10 10:35:37 +00:00
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include/config/dvb/"
cp include/config/dvb/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/include/config/dvb/"
2012-03-17 02:49:52 +00:00
# add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
# in reference to:
# http://bugs.archlinux.org/task/13146
2014-05-10 10:35:37 +00:00
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
cp drivers/media/dvb-frontends/lgdt330x.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
cp drivers/media/i2c/msp3400-driver.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
2012-03-17 02:49:52 +00:00
# add dvb headers
# in reference to:
# http://bugs.archlinux.org/task/20402
2014-05-10 10:35:37 +00:00
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb"
cp drivers/media/usb/dvb-usb/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb/"
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends"
cp drivers/media/dvb-frontends/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners"
cp drivers/media/tuners/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners/"
# add xfs and shmem for aufs building
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/fs/xfs"
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/mm"
2012-03-17 02:49:52 +00:00
# copy in Kconfig files
2014-05-10 10:35:37 +00:00
for i in $(find . -name "Kconfig*"); do
mkdir -p "${pkgdir}"/usr/lib/modules/${_kernver}/build/`echo ${i} | sed 's|/Kconfig.*||'`
cp ${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/${i}"
2012-03-17 02:49:52 +00:00
done
2014-05-10 10:35:37 +00:00
chown -R root.root "${pkgdir}/usr/lib/modules/${_kernver}/build"
find "${pkgdir}/usr/lib/modules/${_kernver}/build" -type d -exec chmod 755 {} \;
2012-03-17 02:49:52 +00:00
# strip scripts directory
2014-05-10 10:35:37 +00:00
find "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts" -type f -perm -u+w 2>/dev/null | while read binary ; do
2012-03-17 02:49:52 +00:00
case "$(file -bi "${binary}")" in
*application/x-sharedlib*) # Libraries (.so)
/usr/bin/strip ${STRIP_SHARED} "${binary}";;
*application/x-archive*) # Libraries (.a)
/usr/bin/strip ${STRIP_STATIC} "${binary}";;
*application/x-executable*) # Binaries
/usr/bin/strip ${STRIP_BINARIES} "${binary}";;
esac
done
# remove unneeded architectures
2014-05-10 10:35:37 +00:00
rm -rf "${pkgdir}"/usr/lib/modules/${_kernver}/build/arch/{alpha,arc,arm26,arm64,avr32,blackfin,c6x,cris,frv,h8300,hexagon,ia64,m32r,m68k,m68knommu,metag,mips,microblaze,mn10300,openrisc,parisc,powerpc,ppc,s390,score,sh,sh64,sparc,sparc64,tile,unicore32,um,v850,x86,xtensa}
2012-03-17 02:49:52 +00:00
}
pkgname=("${pkgbase}" "${pkgbase}-headers")
for _p in ${pkgname[@]}; do
eval "package_${_p}() {
_package${_p#${pkgbase}}
}"
done