Skip to content

Commit ea418b1

Browse files
committed
Add ayufan mainline kernel for rockpro64
1 parent b7fa825 commit ea418b1

File tree

4 files changed

+6998
-0
lines changed

4 files changed

+6998
-0
lines changed

core/linux-rockpro64/99-linux.hook

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[Trigger]
2+
Type = File
3+
Operation = Install
4+
Operation = Upgrade
5+
Target = boot/Image
6+
Target = usr/lib/initcpio/*
7+
8+
[Action]
9+
Description = Updating %PKGBASE% initcpios
10+
When = PostTransaction
11+
Exec = /usr/bin/mkinitcpio -p %PKGBASE%

core/linux-rockpro64/PKGBUILD

Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
# Rockpro 64
2+
# Maintainer: Kevin Mihelich <kevin@archlinuxarm.org>
3+
4+
buildarch=8
5+
6+
pkgbase=linux-rockpro64
7+
_commit=45828c4db72768c1d8cd742ebbe1ddc3088d2d85
8+
_srcname=linux-mainline-kernel-${_commit}
9+
_kernelname=${pkgbase#linux}
10+
_desc="Rockpro64"
11+
pkgver=4.18.0
12+
pkgrel=1
13+
arch=('aarch64')
14+
url="https://github.com/ayufan-rock64/linux-mainline-kernel"
15+
license=('GPL2')
16+
makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc' 'git' 'uboot-tools' 'vboot-utils' 'dtc')
17+
options=('!strip')
18+
source=("https://github.com/ayufan-rock64/linux-mainline-kernel/archive/${_commit}.tar.gz"
19+
'config'
20+
'linux.preset'
21+
'99-linux.hook')
22+
md5sums=('618e078367c6354ceb6639886d1af6da'
23+
'ed5f4e1e8b9d5bccc1f55585af9d0458'
24+
'8850ca6bb2e35ee62d25a5ba97097255'
25+
'1d4477026533efaa0358a40855d50a83')
26+
27+
prepare() {
28+
cd "${srcdir}/${_srcname}"
29+
30+
cat "${srcdir}/config" > ./.config
31+
32+
# add pkgrel to extraversion
33+
sed -ri "s|^(EXTRAVERSION =)(.*)|\1 \2-${pkgrel}|" Makefile
34+
35+
# don't run depmod on 'make install'. We'll do this ourselves in packaging
36+
sed -i '2iexit 0' scripts/depmod.sh
37+
}
38+
39+
build() {
40+
cd "${srcdir}/${_srcname}"
41+
42+
# get kernel version
43+
make prepare
44+
45+
# load configuration
46+
# Configure the kernel. Replace the line below with one of your choice.
47+
#make menuconfig # CLI menu for configuration
48+
#make nconfig # new CLI menu for configuration
49+
#make xconfig # X-based configuration
50+
#make oldconfig # using old config from previous kernel version
51+
# ... or manually edit .config
52+
53+
# Copy back our configuration (use with new kernel version)
54+
#cp ./.config ../${pkgbase}.config
55+
56+
####################
57+
# stop here
58+
# this is useful to configure the kernel
59+
#msg "Stopping build"
60+
#return 1
61+
####################
62+
63+
#yes "" | make config
64+
65+
# build!
66+
make ${MAKEFLAGS} Image Image.gz modules dtbs
67+
}
68+
69+
_package() {
70+
pkgdesc="The Linux Kernel and modules - ${_desc}"
71+
depends=('coreutils' 'linux-firmware' 'kmod' 'mkinitcpio>=0.7')
72+
optdepends=('crda: to set the correct wireless channels of your country')
73+
provides=('kernel26' "linux=${pkgver}")
74+
replaces=('linux-armv8')
75+
conflicts=('linux')
76+
backup=("etc/mkinitcpio.d/${pkgbase}.preset")
77+
install=${pkgname}.install
78+
79+
cd "${srcdir}/${_srcname}"
80+
81+
KARCH=arm64
82+
83+
# get kernel version
84+
_kernver="$(make kernelrelease)"
85+
_basekernel=${_kernver%%-*}
86+
_basekernel=${_basekernel%.*}
87+
88+
mkdir -p "${pkgdir}"/{lib/modules,lib/firmware}
89+
make INSTALL_MOD_PATH="${pkgdir}" modules_install
90+
make INSTALL_DTBS_PATH="${pkgdir}/boot/dtbs" dtbs_install
91+
cp arch/$KARCH/boot/Image{,.gz} "${pkgdir}/boot"
92+
93+
# set correct depmod command for install
94+
sed \
95+
-e "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/g" \
96+
-e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" \
97+
-i "${startdir}/${pkgname}.install"
98+
99+
# install mkinitcpio preset file for kernel
100+
install -D -m644 "${srcdir}/linux.preset" "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
101+
sed \
102+
-e "1s|'linux.*'|'${pkgbase}'|" \
103+
-e "s|ALL_kver=.*|ALL_kver=\"${_kernver}\"|" \
104+
-i "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
105+
106+
# install pacman hook for initramfs regeneration
107+
sed "s|%PKGBASE%|${pkgbase}|g" "${srcdir}/99-linux.hook" |
108+
install -D -m644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/99-${pkgbase}.hook"
109+
110+
# remove build and source links
111+
rm -f "${pkgdir}"/lib/modules/${_kernver}/{source,build}
112+
# remove the firmware
113+
rm -rf "${pkgdir}/lib/firmware"
114+
# make room for external modules
115+
ln -s "../extramodules-${_basekernel}${_kernelname:--ARCH}" "${pkgdir}/lib/modules/${_kernver}/extramodules"
116+
# add real version for building modules and running depmod from post_install/upgrade
117+
mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--ARCH}"
118+
echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--ARCH}/version"
119+
120+
# Now we call depmod...
121+
depmod -b "$pkgdir" -F System.map "$_kernver"
122+
123+
# move module tree /lib -> /usr/lib
124+
mkdir -p "${pkgdir}/usr"
125+
mv "$pkgdir/lib" "$pkgdir/usr"
126+
127+
# add vmlinux
128+
install -D -m644 vmlinux "${pkgdir}/usr/lib/modules/${_kernver}/build/vmlinux"
129+
}
130+
131+
_package-headers() {
132+
pkgdesc="Header files and scripts for building modules for linux kernel - ${_desc}"
133+
provides=("linux-headers=${pkgver}")
134+
replaces=('linux-armv8-headers')
135+
conflicts=('linux-headers')
136+
137+
install -dm755 "${pkgdir}/usr/lib/modules/${_kernver}"
138+
139+
cd "${srcdir}/${_srcname}"
140+
install -D -m644 Makefile \
141+
"${pkgdir}/usr/lib/modules/${_kernver}/build/Makefile"
142+
install -D -m644 kernel/Makefile \
143+
"${pkgdir}/usr/lib/modules/${_kernver}/build/kernel/Makefile"
144+
install -D -m644 .config \
145+
"${pkgdir}/usr/lib/modules/${_kernver}/build/.config"
146+
147+
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include"
148+
149+
for i in acpi asm-generic clocksource config crypto drm generated keys linux \
150+
math-emu media net pcmcia scsi soc sound trace uapi video xen; do
151+
cp -a include/${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/include/"
152+
done
153+
154+
# copy arch includes for external modules
155+
mkdir -p ${pkgdir}/usr/lib/modules/${_kernver}/build/arch/$KARCH
156+
cp -a arch/$KARCH/include ${pkgdir}/usr/lib/modules/${_kernver}/build/arch/$KARCH/
157+
158+
# copy files necessary for later builds, like nvidia and vmware
159+
cp Module.symvers "${pkgdir}/usr/lib/modules/${_kernver}/build"
160+
cp -a scripts "${pkgdir}/usr/lib/modules/${_kernver}/build"
161+
162+
# fix permissions on scripts dir
163+
chmod og-w -R "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts"
164+
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/.tmp_versions"
165+
166+
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel"
167+
168+
cp arch/${KARCH}/Makefile "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/"
169+
170+
cp arch/${KARCH}/kernel/asm-offsets.s "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel/"
171+
172+
# copy module linker script
173+
cp arch/$KARCH/kernel/module.lds "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel/"
174+
175+
# add dm headers
176+
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
177+
cp drivers/md/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
178+
179+
# add inotify.h
180+
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux"
181+
cp include/linux/inotify.h "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux/"
182+
183+
# add wireless headers
184+
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
185+
cp net/mac80211/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
186+
187+
# add dvb headers for external modules
188+
# in reference to:
189+
# http://bugs.archlinux.org/task/11194
190+
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include/config/dvb/"
191+
cp include/config/dvb/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/include/config/dvb/"
192+
193+
# add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
194+
# in reference to:
195+
# http://bugs.archlinux.org/task/13146
196+
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
197+
cp drivers/media/dvb-frontends/lgdt330x.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
198+
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
199+
cp drivers/media/i2c/msp3400-driver.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
200+
201+
# add dvb headers
202+
# in reference to:
203+
# http://bugs.archlinux.org/task/20402
204+
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb"
205+
cp drivers/media/usb/dvb-usb/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb/"
206+
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends"
207+
cp drivers/media/dvb-frontends/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
208+
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners"
209+
cp drivers/media/tuners/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners/"
210+
211+
# add xfs and shmem for aufs building
212+
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/fs/xfs"
213+
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/mm"
214+
215+
# copy in Kconfig files
216+
for i in $(find . -name "Kconfig*"); do
217+
mkdir -p "${pkgdir}"/usr/lib/modules/${_kernver}/build/`echo ${i} | sed 's|/Kconfig.*||'`
218+
cp ${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/${i}"
219+
done
220+
221+
chown -R root.root "${pkgdir}/usr/lib/modules/${_kernver}/build"
222+
find "${pkgdir}/usr/lib/modules/${_kernver}/build" -type d -exec chmod 755 {} \;
223+
224+
# strip scripts directory
225+
find "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts" -type f -perm -u+w 2>/dev/null | while read binary ; do
226+
case "$(file -bi "${binary}")" in
227+
*application/x-sharedlib*) # Libraries (.so)
228+
/usr/bin/strip ${STRIP_SHARED} "${binary}";;
229+
*application/x-archive*) # Libraries (.a)
230+
/usr/bin/strip ${STRIP_STATIC} "${binary}";;
231+
*application/x-executable*) # Binaries
232+
/usr/bin/strip ${STRIP_BINARIES} "${binary}";;
233+
esac
234+
done
235+
236+
# remove unneeded architectures
237+
rm -rf "${pkgdir}"/usr/lib/modules/${_kernver}/build/arch/{alpha,arc,arm,arm26,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}
238+
}
239+
240+
pkgname=("${pkgbase}" "${pkgbase}-headers")
241+
for _p in ${pkgname[@]}; do
242+
eval "package_${_p}() {
243+
_package${_p#${pkgbase}}
244+
}"
245+
done

0 commit comments

Comments
 (0)