Initial commit
Some checks failed
gitea/pkg-linux-aarch64/pipeline/head There was a failure building this commit

Signed-off-by: Molly Sophia <mollysophia379@gmail.com>
This commit is contained in:
Molly Sophia 2023-12-25 04:22:18 +00:00
commit b23a791250
12 changed files with 12133 additions and 0 deletions

40
.SRCINFO Normal file
View File

@ -0,0 +1,40 @@
pkgbase = linux-aarch64
pkgver = 6.6.8
pkgrel = 1
url = http://www.kernel.org/
arch = aarch64
license = GPL2
makedepends = xmlto
makedepends = docbook-xsl
makedepends = kmod
makedepends = inetutils
makedepends = bc
makedepends = git
makedepends = uboot-tools
makedepends = vboot-utils
makedepends = dtc
options = !strip
source = http://www.kernel.org/pub/linux/kernel/v6.x/linux-6.6.8.tar.xz
source = http://www.kernel.org/pub/linux/kernel/v6.x/patch-6.6.8.xz
source = config
source = generate_chromebook_its.sh
source = kernel.keyblock
source = kernel_data_key.vbprivk
source = linux.preset
source = 60-linux.hook
source = 90-linux.hook
md5sums = a3deb764c4f8a77ff49735d6b3057409
md5sums = 6d6435da410653f442b1d2bdfafcf0ce
md5sums = d8ed5e67dbcce23b7253e7bcafa3894a
md5sums = 7c97cf141750ad810235b1ad06eb9f75
md5sums = 61c5ff73c136ed07a7aadbf58db3d96a
md5sums = 584777ae88bce2c5659960151b64c7d8
md5sums = 41cb5fef62715ead2dd109dbea8413d6
md5sums = 0a5f16bfec6ad982a2f6782724cca8ba
md5sums = 3dc88030a8f2f5a5f97266d99b149f77
pkgname = linux-aarch64
pkgname = linux-aarch64-headers
pkgname = linux-aarch64-chromebook

11
60-linux.hook Normal file
View File

@ -0,0 +1,11 @@
[Trigger]
Type = File
Operation = Install
Operation = Upgrade
Operation = Remove
Target = usr/lib/modules/%KERNVER%/*
[Action]
Description = Updating %PKGBASE% module dependencies...
When = PostTransaction
Exec = /usr/bin/depmod %KERNVER%

11
90-linux.hook Normal file
View File

@ -0,0 +1,11 @@
[Trigger]
Type = File
Operation = Install
Operation = Upgrade
Target = boot/Image
Target = usr/lib/initcpio/*
[Action]
Description = Updating %PKGBASE% initcpios...
When = PostTransaction
Exec = /usr/bin/mkinitcpio -p %PKGBASE%

45
Jenkinsfile vendored Normal file
View File

@ -0,0 +1,45 @@
pipeline {
agent {
label 'aarch64 && archlinux'
}
stages {
stage('Download Config') {
steps {
dir('jenkins-utils') {
git 'https://gitlab.classfun.cn:4443/renegade-project/jenkins-utils'
}
}
}
stage('Cleanup packages') {
steps {
sh 'rm -f *.pkg.tar.*'
}
}
stage('Build') {
steps {
sh 'sudo pacman -Syy'
sh 'makepkg --config jenkins-utils/makepkg-aarch64.conf --syncdeps --force --noconfirm'
}
}
stage('Signature packages') {
steps {
withCredentials([
file(credentialsId: 'gpg-file', variable: 'GPG_FILE'),
string(credentialsId: 'gpg-secret', variable: 'GPG_SECRET')
]) {
sh 'python3 jenkins-utils/sign-pkg.py -d . -k "$GPG_FILE" -p "$GPG_SECRET"'
}
}
}
stage('Upload packages') {
steps {
sh 'python3 jenkins-utils/upload-pkg.py -d . -a aarch64'
}
}
stage('Archive') {
steps {
archiveArtifacts artifacts: '*.pkg.tar.*', fingerprint: true
}
}
}
}

228
PKGBUILD Normal file
View File

@ -0,0 +1,228 @@
# AArch64 multi-platform
# Maintainer: Kevin Mihelich <kevin@archlinuxarm.org>
buildarch=8
pkgbase=linux-aarch64
_srcname=linux-6.6.8
_kernelname=${pkgbase#linux}
_desc="AArch64 multi-platform"
pkgver=6.6.8
pkgrel=1
arch=('aarch64')
url="http://www.kernel.org/"
license=('GPL2')
makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc' 'git' 'uboot-tools' 'vboot-utils' 'dtc')
options=('!strip')
source=("http://www.kernel.org/pub/linux/kernel/v6.x/${_srcname}.tar.xz"
"http://www.kernel.org/pub/linux/kernel/v6.x/patch-${pkgver}.xz"
'config'
'generate_chromebook_its.sh'
'kernel.keyblock'
'kernel_data_key.vbprivk'
'linux.preset'
'60-linux.hook'
'90-linux.hook')
md5sums=('a3deb764c4f8a77ff49735d6b3057409'
'6d6435da410653f442b1d2bdfafcf0ce'
'd8ed5e67dbcce23b7253e7bcafa3894a'
'7c97cf141750ad810235b1ad06eb9f75'
'61c5ff73c136ed07a7aadbf58db3d96a'
'584777ae88bce2c5659960151b64c7d8'
'41cb5fef62715ead2dd109dbea8413d6'
'0a5f16bfec6ad982a2f6782724cca8ba'
'3dc88030a8f2f5a5f97266d99b149f77')
prepare() {
cd $_srcname
echo "Setting version..."
# scripts/setlocalversion --save-scmversion
echo "-$pkgrel" > localversion.10-pkgrel
echo "${pkgbase#linux}" > localversion.20-pkgname
# add upstream patch
git apply --whitespace=nowarn ../patch-${pkgver}
cat "${srcdir}/config" > ./.config
}
build() {
cd ${_srcname}
# get kernel version
make prepare
make -s kernelrelease > version
# build!
unset LDFLAGS
make ${MAKEFLAGS} Image Image.gz modules
# Generate device tree blobs with symbols to support applying device tree overlays in U-Boot
make ${MAKEFLAGS} DTC_FLAGS="-@" dtbs
}
_package() {
pkgdesc="The Linux Kernel and modules - ${_desc}"
depends=('coreutils' 'linux-firmware' 'kmod' 'mkinitcpio>=0.7')
optdepends=('wireless-regdb: to set the correct wireless channels of your country')
provides=("linux=${pkgver}" "WIREGUARD-MODULE")
conflicts=('linux')
backup=("etc/mkinitcpio.d/${pkgbase}.preset")
install=${pkgname}.install
cd $_srcname
local kernver="$(<version)"
local modulesdir="$pkgdir/usr/lib/modules/$kernver"
echo "Installing boot image and dtbs..."
install -Dm644 arch/arm64/boot/Image{,.gz} -t "${pkgdir}/boot"
make INSTALL_DTBS_PATH="${pkgdir}/boot/dtbs" dtbs_install
echo "Installing modules..."
make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 modules_install
# remove build and source links
rm "$modulesdir"/build
# sed expression for following substitutions
local _subst="
s|%PKGBASE%|${pkgbase}|g
s|%KERNVER%|${kernver}|g
"
# install mkinitcpio preset file
sed "${_subst}" ../linux.preset |
install -Dm644 /dev/stdin "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
# install pacman hooks
sed "${_subst}" ../60-linux.hook |
install -Dm644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/60-${pkgbase}.hook"
sed "${_subst}" ../90-linux.hook |
install -Dm644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/90-${pkgbase}.hook"
}
_package-headers() {
pkgdesc="Header files and scripts for building modules for linux kernel - ${_desc}"
provides=("linux-headers=${pkgver}")
conflicts=('linux-headers')
cd $_srcname
local builddir="$pkgdir/usr/lib/modules/$(<version)/build"
echo "Installing build files..."
install -Dt "$builddir" -m644 .config Makefile Module.symvers System.map \
localversion.* version vmlinux
install -Dt "$builddir/kernel" -m644 kernel/Makefile
install -Dt "$builddir/arch/arm64" -m644 arch/arm64/Makefile
cp -t "$builddir" -a scripts
# add xfs and shmem for aufs building
mkdir -p "$builddir"/{fs/xfs,mm}
echo "Installing headers..."
cp -t "$builddir" -a include
cp -t "$builddir/arch/arm64" -a arch/arm64/include
install -Dt "$builddir/arch/arm64/kernel" -m644 arch/arm64/kernel/asm-offsets.s
mkdir -p "$builddir/arch/arm"
cp -t "$builddir/arch/arm" -a arch/arm/include
install -Dt "$builddir/drivers/md" -m644 drivers/md/*.h
install -Dt "$builddir/net/mac80211" -m644 net/mac80211/*.h
# https://bugs.archlinux.org/task/13146
install -Dt "$builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
# https://bugs.archlinux.org/task/20402
install -Dt "$builddir/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h
install -Dt "$builddir/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h
install -Dt "$builddir/drivers/media/tuners" -m644 drivers/media/tuners/*.h
# https://bugs.archlinux.org/task/71392
install -Dt "$builddir/drivers/iio/common/hid-sensors" -m644 drivers/iio/common/hid-sensors/*.h
echo "Installing KConfig files..."
find . -name 'Kconfig*' -exec install -Dm644 {} "$builddir/{}" \;
echo "Removing unneeded architectures..."
local arch
for arch in "$builddir"/arch/*/; do
[[ $arch = */arm64/ || $arch == */arm/ ]] && continue
echo "Removing $(basename "$arch")"
rm -r "$arch"
done
echo "Removing documentation..."
rm -r "$builddir/Documentation"
echo "Removing broken symlinks..."
find -L "$builddir" -type l -printf 'Removing %P\n' -delete
echo "Removing loose objects..."
find "$builddir" -type f -name '*.o' -printf 'Removing %P\n' -delete
echo "Stripping build tools..."
local file
while read -rd '' file; do
case "$(file -bi "$file")" in
application/x-sharedlib\;*) # Libraries (.so)
strip -v $STRIP_SHARED "$file" ;;
application/x-archive\;*) # Libraries (.a)
strip -v $STRIP_STATIC "$file" ;;
application/x-executable\;*) # Binaries
strip -v $STRIP_BINARIES "$file" ;;
application/x-pie-executable\;*) # Relocatable binaries
strip -v $STRIP_SHARED "$file" ;;
esac
done < <(find "$builddir" -type f -perm -u+x ! -name vmlinux -print0)
echo "Adding symlink..."
mkdir -p "$pkgdir/usr/src"
ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase"
}
_package-chromebook() {
pkgdesc="The Linux Kernel - ${_desc} - Chromebooks"
depends=('linux-aarch64')
conflicts=('linux-aarch64-rc-chromebook')
install=${pkgname}.install
cd ${_srcname}
mkdir -p "${pkgdir}/boot"
image=arch/arm64/boot/Image
chromeos_boards=(
'elm'
'gru'
'kukui'
'trogdor'
'asurada'
)
chromebook_dtbs=($(for b in ${chromeos_boards[@]}; do find arch/arm64/boot -name "*${b}*.dtb" | LC_COLLATE=C sort; done))
lz4 -20 -z -f -m ${image}
echo ${chromebook_dtbs[@]} | ../generate_chromebook_its.sh ${image}.lz4 arm64 lz4 > kernel.its
mkimage -D "-I dts -O dtb -p 2048" -f kernel.its vmlinux.uimg
dd if=/dev/zero of=bootloader.bin bs=512 count=1
echo "console=tty0 console=ttyS2,115200n8 earlyprintk=ttyS2,115200n8 console=ttyMSM0,115200n8 init=/sbin/init root=PARTUUID=%U/PARTNROFF=1 rootwait rw noinitrd" > cmdline
vbutil_kernel \
--pack vmlinux.kpart \
--version 1 \
--vmlinuz vmlinux.uimg \
--arch aarch64 \
--keyblock ../kernel.keyblock \
--signprivate ../kernel_data_key.vbprivk \
--config cmdline \
--bootloader bootloader.bin
cp vmlinux.kpart "${pkgdir}/boot"
}
pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-chromebook")
for _p in ${pkgname[@]}; do
eval "package_${_p}() {
_package${_p#${pkgbase}}
}"
done

11683
config Normal file

File diff suppressed because it is too large Load Diff

66
generate_chromebook_its.sh Executable file
View File

@ -0,0 +1,66 @@
#!/bin/bash
image=$1
arch=$2
compression=$3
read -a dtb_list
cat <<-ITS_HEADER_END
/dts-v1/;
/ {
description = "Chrome OS kernel image with one or more FDT blobs";
images {
kernel {
description = "kernel";
data = /incbin/("${image}");
type = "kernel_noload";
arch = "${arch}";
os = "linux";
compression = "${compression}";
load = <0>;
entry = <0>;
};
ITS_HEADER_END
for i in ${!dtb_list[@]}; do
dtb=${dtb_list[${i}]}
cat <<-FDT_END
fdt-$(expr ${i} + 1) {
description = "$(basename ${dtb})";
data = /incbin/("${dtb}");
type = "flat_dt";
arch = "${arch}";
compression = "none";
hash {
algo = "sha1";
};
};
FDT_END
done
cat <<-ITS_MIDDLE_END
};
configurations {
default = "conf-1";
ITS_MIDDLE_END
for i in "${!dtb_list[@]}"; do
compat_line=""
dtb_uncompressed=$(echo ${dtb_list[${i}]} | sed "s/\(\.dtb\).*/\1/g")
for compat in $(fdtget "${dtb_uncompressed}" / compatible); do
compat_line+="\"${compat}\","
done
cat <<-ITS_CONF_END
conf-$(expr ${i} + 1) {
kernel = "kernel";
fdt = "fdt-$(expr ${i} + 1)";
compatible = ${compat_line%,};
};
ITS_CONF_END
done
cat <<-ITS_FOOTER_END
};
};
ITS_FOOTER_END

BIN
kernel.keyblock Normal file

Binary file not shown.

BIN
kernel_data_key.vbprivk Normal file

Binary file not shown.

View File

@ -0,0 +1,25 @@
flash_kernel() {
major=$(mountpoint -d / | cut -f 1 -d ':')
minor=$(mountpoint -d / | cut -f 2 -d ':')
device=$(cat /proc/partitions | awk {'if ($1 == "'${major}'" && $2 == "'${minor}'") print $4 '})
device="/dev/${device/%2/1}"
echo "A new kernel version needs to be flashed onto ${device}."
echo "Do you want to do this now? [y|N]"
read -r shouldwe
if [[ $shouldwe =~ ^([yY][eE][sS]|[yY])$ ]]; then
dd if=/boot/vmlinux.kpart of=${device}
sync
else
echo "You can do this later by running:"
echo "# dd if=/boot/vmlinux.kpart of=${device}"
fi
}
post_install () {
flash_kernel
}
post_upgrade() {
flash_kernel
}

10
linux-aarch64.install Normal file
View File

@ -0,0 +1,10 @@
post_upgrade() {
if findmnt --fstab -uno SOURCE /boot &>/dev/null && ! mountpoint -q /boot; then
echo "WARNING: /boot appears to be a separate partition but is not mounted."
fi
}
post_remove() {
rm -f boot/initramfs-linux.img
rm -f boot/initramfs-linux-fallback.img
}

14
linux.preset Normal file
View File

@ -0,0 +1,14 @@
# mkinitcpio preset file for the '%PKGBASE%' package
ALL_config="/etc/mkinitcpio.conf"
ALL_kver="%KERNVER%"
PRESETS=('default' 'fallback')
#default_config="/etc/mkinitcpio.conf"
default_image="/boot/initramfs-linux.img"
#default_options=""
#fallback_config="/etc/mkinitcpio.conf"
fallback_image="/boot/initramfs-linux-fallback.img"
fallback_options="-S autodetect"