Skip to content
PKGBUILD 6.2 KiB
Newer Older
Seblu's avatar
Seblu committed
# Maintainer: Sébastien Luttringer <seblu@seblu.net>
# Customized version of linux for seblu computers

Seblu's avatar
Seblu committed
pkgname=linux-seblu
Seblu's avatar
Seblu committed
pkgver=4.9_rc5
Seblu's avatar
Seblu committed
pkgrel=1
Seblu's avatar
Seblu committed
pkgdesc='The Linux Kernel cooked by Seblu'
Seblu's avatar
up  
Seblu committed
arch=('x86_64')
license=('GPL2')
url='http://www.kernel.org'
options=('!strip')
Seblu's avatar
Seblu committed
makedepends=('kmod' 'git' 'make' 'gcc' 'bc')
depends=('linux-firmware' 'kernel-install-hook')
Seblu's avatar
Seblu committed
install=linux-seblu.install
Seblu's avatar
Seblu committed
source=("git+https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git#tag=v${pkgver/_/-}"
        "config.$CARCH")
Seblu's avatar
Seblu committed
md5sums=('SKIP' 'SKIP')
Seblu's avatar
Seblu committed
prepare() {
  cd linux

  # apply patches
  for _f in "${source[@]}"; do
    if [[ "$_f" =~ \.patch$ ]]; then
      msg2 "Patching $_f"
Seblu's avatar
Seblu committed
      patch -p1 < "$srcdir/$_f"
Seblu's avatar
Seblu committed
  done

	# loading default config
  # use make localmodconfig to check .config is correct
  msg2 'Copying config'
  install "$srcdir/config.$CARCH" .config
	# force suffixe in config (must be the right!)
	msg2 'Setting kernel suffix'
Seblu's avatar
Seblu committed
	sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${pkgname#linux*}\"|g" .config
Seblu's avatar
Seblu committed

  # remove git informations
  # these info will be used by make kernelrelease and produce wrong information
  # because ownership has fakely be changed by fakeroot during packaging.
  rm -rf .git
Seblu's avatar
Seblu committed

  # define current build version
  echo "$(($pkgrel - 1 )) " > .version
Seblu's avatar
Seblu committed
}

build() {
Seblu's avatar
Seblu committed
  cd linux
Seblu's avatar
Seblu committed
  msg2 'Make prepare'
  make prepare
Seblu's avatar
Seblu committed
  msg2 'Make bzImage'
  make bzImage
Seblu's avatar
Seblu committed
  msg2 'Make modules'
  make modules
Seblu's avatar
Seblu committed
  cd linux
  # get real compiled kernel version
Seblu's avatar
Seblu committed
  kernrel=$(make kernelrelease)
Seblu's avatar
Seblu committed
  pkgdesc="$pkgdesc, version $kernrel"
Seblu's avatar
Seblu committed
  pkgname="linux-$kernrel"
Seblu's avatar
Seblu committed
  pkgver=$(make kernelversion|tr '-' '_')
Seblu's avatar
Seblu committed
  provides=("linux=$pkgver" "linux-headers=$pkgver")
Seblu's avatar
Seblu committed
  msg2 "Kernel release: $kernrel"
  msg2 "Package kernel version: $pkgver"
Seblu's avatar
Seblu committed

Seblu's avatar
Seblu committed
  msg2 'Install vmlinuz'
  install -D -m644 arch/x86/boot/bzImage "$pkgdir/usr/lib/kernel/vmlinuz-$kernrel"

Seblu's avatar
Seblu committed
  msg2 'Install modules'
Seblu's avatar
up  
Seblu committed
  # disable DEPMOD because it fail due to poor hack in scripts/depmod.sh
Seblu's avatar
Seblu committed
  make -s INSTALL_MOD_PATH="$pkgdir/usr" DEPMOD=/bin/true modules_install
Seblu's avatar
up  
Seblu committed

Seblu's avatar
Seblu committed
  msg2 'Install headers'
Seblu's avatar
Seblu committed
  install_sources
Seblu's avatar
Seblu committed
  msg2 'Remove firmwares'
Seblu's avatar
up  
Seblu committed
  rm -rf "$pkgdir/usr/lib/firmware"
Seblu's avatar
Seblu committed

Seblu's avatar
Seblu committed
  msg2 'Generate modules.dep and map files'
  # run depmod to keep track of these files and remove them with the package
  depmod -b "$pkgdir/usr" -F System.map "$kernrel"
Seblu's avatar
Seblu committed
install_sources() {
Seblu's avatar
Seblu committed
  local kernsrc="$pkgdir/usr/src/$pkgname"

  # create $kernsrc directory
  install -d -m 755 "$kernsrc"

Seblu's avatar
Seblu committed
  # remove previous build and source links
  rm -f "$pkgdir/usr/lib/modules/$kernrel"/{source,build}
Seblu's avatar
Seblu committed
  ln -rs  "$kernsrc" "$pkgdir/usr/lib/modules/$kernrel"/source
  ln -rs  "$kernsrc" "$pkgdir/usr/lib/modules/$kernrel"/build

  # Copy kernel config files
  cd "$srcdir"/linux
Seblu's avatar
Seblu committed
  install -D -m644 Makefile "$kernsrc/Makefile"
  install -D -m644 kernel/Makefile "$kernsrc/kernel/Makefile"
  install -D -m644 .config "$kernsrc/.config"
  for i in localversion*; do
Seblu's avatar
Seblu committed
    [[ -e "$i" ]] && install -m644 "$i" "$kernsrc/$i"
  done

  # create include directory
Seblu's avatar
Seblu committed
  install -d "$kernsrc/include"

  for i in acpi asm-generic config crypto drm generated linux math-emu \
    media net pcmcia scsi sound trace uapi video xen; do
Seblu's avatar
Seblu committed
    cp -a include/$i "$kernsrc/include/"
  done

  # remove unneeded architectures
Seblu's avatar
Seblu committed
  for i in "$kernsrc"/arch/*; do
    [[ "$i" != x86 ]] && rm -rf "$i"
  done

  # copy arch includes for external modules
Seblu's avatar
Seblu committed
  install -d "$kernsrc/arch/x86"
  cp -a arch/x86/include "$kernsrc/arch/x86/"

  # copy files necessary for later builds, like nvidia and vmware
Seblu's avatar
Seblu committed
  cp Module.symvers "$kernsrc"
  cp -a scripts "$kernsrc"

  # fix permissions on scripts dir
Seblu's avatar
Seblu committed
  chmod og-w -R "$kernsrc/scripts"
Seblu's avatar
Seblu committed
	# add x86 makefile
  install -d "$kernsrc/.tmp_versions"
  install -d "$kernsrc/arch/x86/kernel"
  cp arch/x86/Makefile "$kernsrc/arch/x86/"
  cp arch/x86/kernel/asm-offsets.s "$kernsrc/arch/x86/kernel/"

  # add docbook makefile
Seblu's avatar
Seblu committed
  install -D -m644 Documentation/DocBook/Makefile "$kernsrc/Documentation/DocBook/Makefile"

  # add dm headers
Seblu's avatar
Seblu committed
  install -d "$kernsrc/drivers/md"
  cp drivers/md/*.h  "$kernsrc/drivers/md"

  # add inotify.h
Seblu's avatar
Seblu committed
  install -d "$kernsrc/include/linux"
  cp include/linux/inotify.h "$kernsrc/include/linux/"

  # add wireless headers
Seblu's avatar
Seblu committed
  install -d "$kernsrc/net/mac80211/"
  cp net/mac80211/*.h "$kernsrc/net/mac80211/"

  # add dvb headers for external modules
  # in reference to:
  # http://bugs.archlinux.org/task/9912
Seblu's avatar
Seblu committed
  install -d "$kernsrc/drivers/media/dvb-core"
  cp drivers/media/dvb-core/*.h "$kernsrc/drivers/media/dvb-core/"

  # add dvb headers for external modules
  # in reference to:
  # http://bugs.archlinux.org/task/11194
Seblu's avatar
Seblu committed
  install -d "$kernsrc/include/config/dvb/"
  cp include/config/dvb/*.h "$kernsrc/include/config/dvb/"

  # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
  # in reference to:
  # http://bugs.archlinux.org/task/13146
  install -Dm644 drivers/media/dvb-frontends/lgdt330x.h \
Seblu's avatar
Seblu committed
    "$kernsrc/drivers/media/dvb-frontends/dvb-frontends/lgdt330x.h"
  install -Dm644 drivers/media/i2c/msp3400-driver.h \
Seblu's avatar
Seblu committed
    "$kernsrc/drivers/media/i2c/msp3400-driver.h"

  # add dvb headers
  # in reference to:
  # http://bugs.archlinux.org/task/20402
Seblu's avatar
Seblu committed
  install -d "$kernsrc/drivers/media/usb/dvb-usb"
  cp drivers/media/usb/dvb-usb/*.h "$kernsrc/drivers/media/usb/dvb-usb/"
  install -d "$kernsrc/drivers/media/dvb-frontends"
  cp drivers/media/dvb-frontends/*.h "$kernsrc/drivers/media/dvb-frontends/"
  install -d "$kernsrc/drivers/media/tuners"
  cp drivers/media/tuners/*.h "$kernsrc/drivers/media/tuners/"

  # copy in Kconfig files
  for i in $(find . -name "Kconfig*"); do
Seblu's avatar
Seblu committed
    install -d "$kernsrc"/$(echo $i | sed 's|/Kconfig.*||')
    cp "$i" "$kernsrc/$i"
Seblu's avatar
Seblu committed
  # fix permissions
  chown -R root:root "$kernsrc"
  find "$kernsrc" -type d -exec chmod 755 {} \;

  # strip scripts directory
Seblu's avatar
Seblu committed
  find "$kernsrc/scripts" -type f -perm -u+w 2>/dev/null | while read binary ; do
    case "$(file -bi "$binary")" in
      *application/x-sharedlib*) # Libraries (.so)
Seblu's avatar
Seblu committed
        strip $STRIP_SHARED "$binary";;
      *application/x-archive*) # Libraries (.a)
Seblu's avatar
Seblu committed
        strip $STRIP_STATIC "$binary";;
      *application/x-executable*) # Binaries
Seblu's avatar
Seblu committed
        strip $STRIP_BINARIES "$binary";;
Seblu's avatar
Seblu committed
  # check rights
Seblu's avatar
Seblu committed
  chown -R root.root "$kernsrc"
  chmod -R u=rwX,go=rX "$kernsrc"
# vim:set ts=2 sw=2 ft=sh et: