summaryrefslogtreecommitdiff
path: root/PKGBUILD
blob: 1663917ba1bea165d6b429cf6f9e825eaf4f508c (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.9.2.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=('6ef48c248d919d7dd4aede8a7079be5dfc3dfc4f9e8d97f9a70fe2666dca3dac'
            'bcf31414a6e29e3fc2bb527b5014a5bc78af380c16095dc687f00968fdcf8201')
b2sums=('d3e8f7e535e63d3cca3426ee44cb767e9617d638a93253b7fd7a6f30304c16dc2e43ebf3f5d18702f9cad499fa120fbc6d610e6c592e6468fc53d4c5a83a7612'
        '375e89d633ded08d64fa5dfbc4d468f1515a4ba58004ed874fb57b78cd35d5d1626a213d0bdc83bc8b7950659fb6a35f4139137ab7799d2b8306e3b67af1578f')

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: