]> git.zerfleddert.de Git - m1-debian/blame_incremental - m1n1_uboot_kernel.sh
disable freedreno to be able to compile mesa and add because it is used in pkgbuild...
[m1-debian] / m1n1_uboot_kernel.sh
... / ...
CommitLineData
1#!/usr/bin/env bash
2
3# SPDX-License-Identifier: MIT
4
5set -o errexit
6set -o nounset
7set -o pipefail
8set -o xtrace
9
10cd "$(dirname "$0")"
11
12export CARGO_HOME="$(pwd)/build/cargo"
13export RUSTUP_HOME="$(pwd)/build/rust"
14source "$(pwd)/build/cargo/env"
15
16unset LC_CTYPE
17unset LANG
18
19handle_crosscompile()
20{
21 if [ "`uname -m`" != 'aarch64' ]; then
22 export ARCH=arm64
23 export CROSS_COMPILE=aarch64-linux-gnu-
24 sudo apt install -y libc6-dev-arm64-cross
25 fi
26}
27
28build_linux()
29{
30(
31 handle_crosscompile
32 test -d linux || git clone https://github.com/AsahiLinux/linux
33 cd linux
34 git fetch -a -t
35 git reset --hard asahi-6.2-5;
36 cat ../../config.txt > .config
37 make LLVM=${CLANG_VERSION} rustavailable
38 make LLVM=${CLANG_VERSION} olddefconfig
39 make -j `nproc` LLVM=${CLANG_VERSION} V=0 bindeb-pkg > /dev/null
40)
41}
42
43build_m1n1()
44{
45(
46 test -d m1n1 || git clone --recursive https://github.com/AsahiLinux/m1n1
47 cd m1n1
48 git fetch -a -t
49 git reset --hard v1.2.5;
50 make -j `nproc`
51)
52}
53
54build_uboot()
55{
56(
57 handle_crosscompile
58 test -d u-boot || git clone https://github.com/AsahiLinux/u-boot
59 cd u-boot
60 git fetch -a -t
61 git reset --hard asahi-v2023.01-3;
62
63 make apple_m1_defconfig
64 make -j `nproc`
65)
66 cat m1n1/build/m1n1.bin `find linux/arch/arm64/boot/dts/apple/ -name \*.dtb` <(gzip -c u-boot/u-boot-nodtb.bin) > u-boot.bin
67}
68
69package_boot_bin()
70{
71(
72 export M1N1_VERSION=1.2.4-2
73 rm -rf m1n1_${M1N1_VERSION}_arm64
74 mkdir -p m1n1_${M1N1_VERSION}_arm64/DEBIAN m1n1_${M1N1_VERSION}_arm64/usr/lib/m1n1/
75 cp u-boot.bin m1n1_${M1N1_VERSION}_arm64/usr/lib/m1n1/boot.bin
76 cat <<EOF > m1n1_${M1N1_VERSION}_arm64/DEBIAN/control
77Package: m1n1
78Version: $M1N1_VERSION
79Section: base
80Priority: optional
81Architecture: arm64
82Maintainer: Thomas Glanzmann <thomas@glanzmann.de>
83Description: Apple silicon boot loader
84 Next to m1n1 this also contains the device trees and u-boot.
85EOF
86
87 cat > m1n1_${M1N1_VERSION}_arm64/DEBIAN/postinst <<EOF
88#!/bin/bash
89
90export PATH=/bin
91if [ -f /boot/efi/m1n1/boot.bin ]; then
92 cp /boot/efi/m1n1/boot.bin /boot/efi/m1n1/`date +%Y%m%d%H%M`.bin
93fi
94mkdir -p /boot/efi/m1n1/
95cp /usr/lib/m1n1/boot.bin /boot/efi/m1n1/
96EOF
97
98 chmod 755 m1n1_${M1N1_VERSION}_arm64/DEBIAN/postinst
99 dpkg-deb --build m1n1_${M1N1_VERSION}_arm64
100)
101}
102
103if type clang-15; then
104 export CLANG_VERSION=-15
105elif type clang-11; then
106 export CLANG_VERSION=-11
107fi
108
109mkdir -p build
110cd build
111
112build_linux
113build_m1n1
114build_uboot
115package_boot_bin
Impressum, Datenschutz