-
Notifications
You must be signed in to change notification settings - Fork 80
Expand file tree
/
Copy pathbuild.sh
More file actions
78 lines (63 loc) · 2.34 KB
/
build.sh
File metadata and controls
78 lines (63 loc) · 2.34 KB
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
#!/bin/bash
if [[ $1 == "clean" ]]; then
rm -rf out module/bin module/webroot
exit 0
fi
mkdir -p out module/bin module/webroot
# Build WebUI
cd webui
pnpm build || pnpm install && pnpm build
cd ..
# Read versions from version.properties
get_ver() {
[ -f version.properties ] && grep "^$1[[:space:]]*=" version.properties | cut -d'=' -f2 | xargs | sed 's/^"//;s/"$//'
}
download_assets() {
local repo="$1"
local tag="$2"
shift 2
local patterns=("$@")
local url="https://api.github.com/repos/$repo/releases"
if [[ "$tag" == "latest" ]]; then
url="$url/latest"
else
url="$url/tags/$tag"
fi
local release_json=$(curl -s "$url")
for pattern in "${patterns[@]}"; do
local regex="${pattern//\*/.*}"
local asset_data=$(echo "$release_json" | jq -r ".assets[] | select(.name | test(\"$regex\")) | .name + \"\t\" + .browser_download_url" | head -n 1)
if [[ -z "$asset_data" ]]; then
echo "Error: Could not find asset matching $pattern in $repo $tag"
continue
fi
local asset_name=$(echo "$asset_data" | cut -f1)
local download_url=$(echo "$asset_data" | cut -f2)
echo "Downloading $asset_name from $download_url"
curl -L "$download_url" -o "module/bin/$asset_name"
done
}
VERSION_KPATCH_NEXT=$(get_ver "kpatch-next")
VERSION_KPATCH_NEXT="${VERSION_KPATCH_NEXT:-latest}"
VERSION_MAGISKBOOT=$(get_ver "magiskboot")
VERSION_MAGISKBOOT="${VERSION_MAGISKBOOT:-latest}"
# Fetch KPatch-Next binaries
if [[ ! -f "module/bin/kpatch" || ! -f "module/bin/kpimg" || ! -f "module/bin/kptools" ]]; then
download_assets "KernelSU-Next/KPatch-Next" "$VERSION_KPATCH_NEXT" "kpatch-android" "kpimg-linux" "kptools-android"
mv module/bin/kpatch-android module/bin/kpatch
mv module/bin/kptools-android module/bin/kptools
mv module/bin/kpimg-linux module/bin/kpimg
fi
# Fetch magiskboot
if [[ ! -f "module/bin/magiskboot" ]]; then
download_assets "topjohnwu/Magisk" "$VERSION_MAGISKBOOT" "Magisk*.apk"
APK=$(ls module/bin/Magisk*.apk | head -n 1)
unzip -p "$APK" 'lib/arm64-v8a/libmagiskboot.so' > "module/bin/magiskboot"
rm "$APK"
fi
# zip module
commit_number=$(git rev-list --count HEAD)
commit_hash=$(git rev-parse --short HEAD)
cd module
zip -r ../out/KPatch-Next-${commit_number}-${commit_hash}.zip .
cd ..