summaryrefslogtreecommitdiff
path: root/PKGBUILD
blob: 46c5580daf26bb832d17930fffaa256b1e028a2c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# Maintainer: Jaron Kent-Dobias <jaron@kent-dobias.com>
# Contributor: Vasily Khoruzhick <anarsoul@gmail.com>
# Contributor: Jan Alexander Steffens (heftig) <heftig@archlinux.org>

pkgbase=linux-raspberrypi4
pkgver=6.12.9.rpi1
pkgrel=1
pkgdesc='Raspberry Pi Linux'
url='https://git.kent-dobias.com/system/linux'
arch=(aarch64)
license=(GPL2)
makedepends=(
  bc
  cpio
  gettext
  libelf
  pahole
  perl
  python
  tar
  xz

  dtc
  clang
  llvm
  lld
)
options=('!strip')
_srcname=linux-${pkgver%.*}
_srctag=v${pkgver%.*}-${pkgver##*.}
source=(
  $pkgbase::"git+file:///home/pants/dev/linux#tag=$_srctag"
  config  # the main kernel config file
)
validpgpkeys=(
  ABAF11C65A2970B130ABE3C479BE3E4300411886  # Linus Torvalds
  647F28654894E3BD457199BE38DBBDC86092693E  # Greg Kroah-Hartman
  A2FF3A36AAA56654109064AB19802F8B0D70FC30  # Jan Alexander Steffens (heftig)
  0E3A444DD0760E65901BF59679E824090BD31086  # Jaron Kent-Dobias
)
# https://www.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc
sha256sums=('cbbad469b1360ac9efb0224f154e46b23bb959002f1868742f2d94b463415449'
            '60a19a6d3c5a80ac4274e20f500ad3c95ec5013053a21a4eea55b6eecadb1e0f')
b2sums=('9a581682569c5dc5c33bf535bdf12f08c6551513e10dc5b67d96d16c59ac096b89bef7c192272193437fc2c17720770048fd4f6e3d692d430415fff323023af5'
        '15df06dee33ff464212fe9a23776139a85e37ff83c327db7ffd0b9421236b733bc248c2acbe8a779c45f41c40694244370cf78853bab5e268f62128e6e37eddc')

export KBUILD_BUILD_HOST=archlinux
export KBUILD_BUILD_USER=$pkgbase
export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"
export ARCH=arm64
export LLVM=1

prepare() {
  cd $pkgbase

  echo "Setting version..."
  echo "-$pkgrel" > localversion.10-pkgrel
  echo "${pkgbase#linux}" > localversion.20-pkgname

  echo "Setting config..."
  cp ../config .config
  make olddefconfig
  diff -u ../config .config || :

  make -s kernelrelease > version
  echo "Prepared $pkgbase version $(<version)"
}

build() {
  cd $pkgbase
  make all
# make htmldocs
}

_package() {
  pkgdesc="The $pkgdesc kernel and modules"
  depends=(
    coreutils
    initramfs
    kmod
  )
  optdepends=(
    'wireless-regdb: to set the correct wireless channels of your country'
    'linux-firmware: firmware images needed for some devices'
  )
  provides=(
    KSMBD-MODULE
    VIRTUALBOX-GUEST-MODULES
    WIREGUARD-MODULE
  )
  replaces=(
    virtualbox-guest-modules-arch
    wireguard-arch
  )

  cd $pkgbase
  local modulesdir="$pkgdir/usr/lib/modules/$(<version)"

  echo "Installing boot image..."
  install -Dm644 arch/arm64/boot/Image "${pkgdir}/boot/kernel8.img"

  # systemd expects to find the kernel here to allow hibernation
  # https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344
  install -Dm644 "$(make -s image_name)" "$modulesdir/vmlinuz"

  # Used by mkinitcpio to name the kernel
  echo "$pkgbase" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"

  echo "Installing modules..."
  ZSTD_CLEVEL=19 make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 \
    DEPMOD=/doesnt/exist modules_install  # Suppress depmod

  echo "Installing dtbs..."
  make INSTALL_DTBS_PATH="${pkgdir}/boot/dtbs" dtbs_install
  find "${pkgdir}/boot/dtbs/broadcom" -type f -print0 | xargs -0 mv -t "${pkgdir}/boot"

  # remove build link
  rm "$modulesdir"/build
}

pkgname=("$pkgbase")
for _p in "${pkgname[@]}"; do
  eval "package_$_p() {
    $(declare -f "_package${_p#$pkgbase}")
    _package${_p#$pkgbase}
  }"
done

# vim:set ts=8 sts=2 sw=2 et: