forked from amazingfate/armbian-h88k-images
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaction.yml
180 lines (170 loc) · 10.1 KB
/
action.yml
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
name: 'Armbian/build'
description: 'Armbian Linux build framework'
inputs:
board:
required: true
flavor:
required: true
release-id:
required: false
github-token:
required: false
runs:
using: "composite"
steps:
- name: Get more space
uses: easimon/maximize-build-space@master
with:
root-reserve-mb: 25600
temp-reserve-mb: 4096
swap-size-mb: 1024
remove-dotnet: 'true'
remove-android: 'true'
remove-haskell: 'true'
remove-codeql: 'true'
remove-docker-images: 'true'
- name: Checkout
uses: actions/checkout@v3
with:
repository: armbian/build
ref: main
path: build
- name: Set env
shell: bash
run: |
if [ "${{ inputs.flavor }}" == "debian" ]; then
echo "release=sid" >> $GITHUB_ENV
echo "build-minimal=no" >> $GITHUB_ENV
echo "build-desktop=yes" >> $GITHUB_ENV
echo "desktop-environment=gnome" >> $GITHUB_ENV
echo "desktop-environment-config-name=config_base" >> $GITHUB_ENV
echo "expert=no" >> $GITHUB_ENV
elif [ "${{ inputs.flavor }}" == "ubuntu" ]; then
echo "release=noble" >> $GITHUB_ENV
echo "build-minimal=no" >> $GITHUB_ENV
echo "build-desktop=yes" >> $GITHUB_ENV
echo "desktop-environment=gnome" >> $GITHUB_ENV
echo "desktop-environment-config-name=config_base" >> $GITHUB_ENV
echo "expert=yes" >> $GITHUB_ENV
echo "desktop_appgroups_selected=\"browsers chat desktop_tools editors email internet multimedia office programming remote_desktop\"" >> $GITHUB_ENV
elif [ "${{ inputs.flavor }}" == "cli" ]; then
echo "release=noble" >> $GITHUB_ENV
echo "build-minimal=no" >> $GITHUB_ENV
echo "build-desktop=no" >> $GITHUB_ENV
echo "desktop-environment=gnome" >> $GITHUB_ENV
echo "desktop-environment-config-name=config_base" >> $GITHUB_ENV
echo "expert=yes" >> $GITHUB_ENV
echo "desktop_appgroups_selected=\"browsers chat desktop_tools editors email internet multimedia office programming remote_desktop\"" >> $GITHUB_ENV
fi
- name: Build
shell: bash
run: |
cd ./build
touch .ignore_changes
## 以下为针对rk3588-hinlink-h88k_V1_dts的修改
# 1.下载新的 V1_dts 文件
wget https://github.com/wudingjian/armbian-h88k-images/raw/master/rk3588-hinlink-h88k.dts -O /tmp/rk3588-hinlink-h88k.dts
# 使用 wget 命令从指定 URL 下载新的 rk3588-hinlink-h88k.dts 文件,并将其保存到 /tmp 目录下。
# 2.查找并替换所有的 rk3588-hinlink-h88k.dts 文件
find . -name 'rk3588-hinlink-h88k.dts' -exec cp /tmp/rk3588-hinlink-h88k.dts {} \;
# 使用 find 命令在当前目录及其子目录中查找名为 rk3588-hinlink-h88k.dts 的文件,并用下载的文件进行替换。
# 3.创建目录并下载 V1_dts 文件
mkdir -p arch/arm64/boot/dts/rockchip/
# 使用 mkdir 命令创建目标目录,如果目录不存在则创建。
# 4.下载新的 V1_dts 文件 至 arch/arm64/boot/dts/rockchip/ 目录
wget https://github.com/wudingjian/armbian-h88k-images/raw/master/rk3588-hinlink-h88k.dts -O arch/arm64/boot/dts/rockchip/rk3588-hinlink-h88k.dts
# 使用 wget 命令从指定 URL 下载新的 rk3588-hinlink-h88k.dts 文件,并将其保存到目标目录。
# 5.检查并修改 Makefile 文件 增加新 V1_dts 文件 编译请求 (定义路径和请求)
MAKEFILE_PATH="arch/arm64/boot/dts/rockchip/Makefile"
# 定义 Makefile 文件的路径。
DTS_ENTRY="dtb-\$(CONFIG_ARCH_ROCKCHIP) += rk3588-hinlink-h88k.dtb"
# 定义需要添加到 Makefile 文件中的条目。
# 6.如果 Makefile 文件存在且条目不存在,则添加条目
if [ -f "$MAKEFILE_PATH" ]; then # 检查 Makefile 文件是否存在。
if ! grep -q "$DTS_ENTRY" "$MAKEFILE_PATH"; then # 检查 Makefile 文件中是否已经包含了该条目。
echo "Adding $DTS_ENTRY to $MAKEFILE_PATH" # 如果条目不存在,输出提示信息。
echo "$DTS_ENTRY" >> "$MAKEFILE_PATH" # 将条目添加到 Makefile 文件末尾。
else
echo "$DTS_ENTRY already exists in $MAKEFILE_PATH" # 如果条目已经存在,输出提示信息。
fi
else
echo "$MAKEFILE_PATH does not exist. Creating file and adding $DTS_ENTRY" # 如果 Makefile 文件不存在,输出提示信息。
mkdir -p "$(dirname "$MAKEFILE_PATH")" # 创建 Makefile 文件所在的目录。
echo "$DTS_ENTRY" > "$MAKEFILE_PATH" # 创建 Makefile 文件并添加条目。
fi
# 7.生成补丁文件
mkdir -p patch/kernel/rk35xx-vendor-6.1 # 目录对应 /workflows/build.yml BRANCH: [vendor] 的设定
git diff --no-index --output=./patch/kernel/rk35xx-vendor-6.1/board-dts-add-hinlink-h88k.patch /dev/null arch/arm64/boot/dts/rockchip/rk3588-hinlink-h88k.dts || ls -l ./patch/kernel/rk35xx-vendor-6.1/board-dts-add-hinlink-h88k.patch
# 使用 git diff 生成补丁文件,将新的 dts 文件与空文件进行比较,输出补丁文件到指定路径。如果生成失败,则列出补丁文件。
# 目录对应 /workflows/build.yml BRANCH: [vendor] 的设定
# 8.增加显卡驱动交叉编译
# 8.1 panfork-mesa 是一个与 Mesa 3D 图形库相关的软件包集合。提供对 3D 图形 API 的实现,提供图形驱动程序,特别是与 ARM Mali GPU 相关的驱动程序。提供对图形渲染的支持,特别是对开源 GPU 驱动程序的支持。
mkdir -p config/desktop/jammy/appgroups/rockchip-multimedia/sources/apt/
# 创建目录以存放rockchip-multimedia的APT源文件。
wget https://github.com/wudingjian/armbian-h88k-images/raw/master/liujianfeng1994.gpg -O config/desktop/jammy/appgroups/rockchip-multimedia/sources/apt/rockchip-multimedia.gpg
# 下载 rockchip-multimedia 的 GPG 密钥文件。
wget https://github.com/wudingjian/armbian-h88k-images/raw/master/rockchip-multimedia.source -O config/desktop/jammy/appgroups/rockchip-multimedia/sources/apt/rockchip-multimedia.source
# 下载 rockchip-multimedia 的源列表文件。
wget https://github.com/wudingjian/armbian-h88k-images/raw/master/rockchip-multimedia.packages -O config/desktop/jammy/appgroups/rockchip-multimedia/packages
# 下载 rockchip-multimedia 的包列表文件。
# 8.2 rockchip-multimedia 是一个与 Rockchip 平台相关的多媒体软件包集合。提供音频和视频编解码器,支持多种格式如 H.264、H.265、VP8、VP9 等。提供多媒体处理工具,如视频缩放、旋转和其他图像处理功能。提供硬件加速支持,利用 Rockchip SoC 的多媒体处理单元(VPU 和 GPU)。
mkdir -p config/desktop/jammy/appgroups/panfork-mesa/sources/apt/
# 创建目录以存放panfork-mesa的APT源文件。
wget https://github.com/wudingjian/armbian-h88k-images/raw/master/liujianfeng1994.gpg -O config/desktop/jammy/appgroups/panfork-mesa/sources/apt/panfork-mesa.gpg
# 下载 panfork-mesa 的 GPG 密钥文件。
wget https://github.com/wudingjian/armbian-h88k-images/raw/master/panfork-mesa.source -O config/desktop/jammy/appgroups/panfork-mesa/sources/apt/panfork-mesa.source
# 下载 panfork-mesa 的源列表文件。
wget https://github.com/wudingjian/armbian-h88k-images/raw/master/panfork-mesa.packages -O config/desktop/jammy/appgroups/panfork-mesa/packages
# 下载 panfork-mesa 的包列表文件。
## 以上为针对rk3588-hinlink-h88k_V1_dts的修改
sed -i "s|() {|() {\ndf -h \&\& du -sh \${SRC}/* \&\& du -sh \${SRC}/cache/* \&\& rm -rf \${SRC}/cache/sources/aptcache/* \${SRC}/cache/sources/linux-kernel-worktree/* \${SRC}/cache/sources/rootfs/*\n|g" extensions/image-output-abl.sh
git status
docker pull ghcr.io/armbian/docker-armbian-build:armbian-ubuntu-jammy-latest
if [ "${{ inputs.flavor }}" == "cli" ]; then
./compile.sh \
BOARD=${{ inputs.board }} \
BRANCH=${{ inputs.branch }} \
RELEASE=${{ env.release }} \
BUILD_MINIMAL=${{ env.build-minimal }} \
BUILD_DESKTOP=${{ env.build-desktop }} \
KERNEL_CONFIGURE=no \
EXPERT=${{ env.expert }} \
BOARD_FIRMWARE_INSTALL="-full" \
SHARE_LOG=yes \
DEBUG=yes \
COMPRESS_OUTPUTIMAGE=sha,gpg,xz
else
./compile.sh \
BOARD=${{ inputs.board }} \
BRANCH=${{ inputs.branch }} \
RELEASE=${{ env.release }} \
BUILD_MINIMAL=${{ env.build-minimal }} \
BUILD_DESKTOP=${{ env.build-desktop }} \
KERNEL_CONFIGURE=no \
DESKTOP_ENVIRONMENT=${{ env.desktop-environment }} \
DESKTOP_ENVIRONMENT_CONFIG_NAME=${{ env.desktop-environment-config-name }} \
DESKTOP_APPGROUPS_SELECTED=${{ env.desktop_appgroups_selected }} \
EXPERT=${{ env.expert }} \
BOARD_FIRMWARE_INSTALL="-full" \
SHARE_LOG=yes \
DEBUG=yes \
KERNEL_GIT=shallow \
COMPRESS_OUTPUTIMAGE=sha,gpg,xz
fi
- name: Upload
if: inputs.release-id != '' && inputs.github-token != ''
uses: xresloader/upload-to-github-release@v1
env:
GITHUB_TOKEN: ${{ inputs.github-token }}
with:
release_id: ${{ inputs.release-id }}
file: "./build/output/images/*.img.xz;./build/output/images/*.img.xz.sha;./build/output/debs/linux-*.deb"
draft: false
overwrite: true
- name: Rollback release
if: failure() && inputs.release-id != '' && inputs.github-token != ''
uses: author/action-rollback@stable
env:
GITHUB_TOKEN: ${{ inputs.github-token }}
with:
release_id: ${{ inputs.release-id }}