Initial commit
Some checks failed
gitea/pkg-linux-aarch64/pipeline/head There was a failure building this 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:
commit
b23a791250
40
.SRCINFO
Normal file
40
.SRCINFO
Normal 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
11
60-linux.hook
Normal 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
11
90-linux.hook
Normal 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
45
Jenkinsfile
vendored
Normal 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
228
PKGBUILD
Normal 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
|
66
generate_chromebook_its.sh
Executable file
66
generate_chromebook_its.sh
Executable 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
BIN
kernel.keyblock
Normal file
Binary file not shown.
BIN
kernel_data_key.vbprivk
Normal file
BIN
kernel_data_key.vbprivk
Normal file
Binary file not shown.
25
linux-aarch64-chromebook.install
Normal file
25
linux-aarch64-chromebook.install
Normal 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
10
linux-aarch64.install
Normal 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
14
linux.preset
Normal 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"
|
Loading…
Reference in New Issue
Block a user