Skip to content

Commit 999dedf

Browse files
committed
Merge remote-tracking branch 'source/main' into source
2 parents e6f687c + 9908c9a commit 999dedf

File tree

3 files changed

+165
-77
lines changed

3 files changed

+165
-77
lines changed

scripts/build.sh

Lines changed: 157 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,9 @@ DOWNLOAD_DIR=../download
3434
DOWNLOAD_CONF_NAME=download.list
3535
OUTPUT_DIR=../output
3636
MOUNT_DIR="$WORK_DIR"/system
37-
CLEAN_DOWNLOAD_WSA=0
38-
CLEAN_DOWNLOAD_MAGISK=0
39-
CLEAN_DOWNLOAD_GAPPS=0
40-
REMOVE_AMAZON="keep"
41-
COMPRESS_OUTPUT="no"
42-
OFFLINE=0
4337
umount_clean(){
44-
echo "Cleanup Work Directory"
4538
if [ -d "$MOUNT_DIR" ]; then
39+
echo "Cleanup Work Directory"
4640
if [ -d "$MOUNT_DIR/vendor" ]; then
4741
sudo umount "$MOUNT_DIR"/vendor
4842
fi
@@ -53,19 +47,21 @@ umount_clean(){
5347
sudo umount "$MOUNT_DIR"/system_ext
5448
fi
5549
sudo umount "$MOUNT_DIR"
50+
sudo rm -rf "${WORK_DIR:?}"
51+
else
52+
rm -rf "${WORK_DIR:?}"
5653
fi
57-
sudo rm -rf "${WORK_DIR:?}"
5854
}
5955
clean_download(){
6056
if [ -d "$DOWNLOAD_DIR" ]; then
6157
echo "Cleanup Download Directory"
62-
if [ "$CLEAN_DOWNLOAD_WSA" = "1" ]; then
58+
if [ "$CLEAN_DOWNLOAD_WSA" ]; then
6359
rm -f "${WSA_ZIP_PATH:?}"
6460
fi
65-
if [ "$CLEAN_DOWNLOAD_MAGISK" = "1" ]; then
61+
if [ "$CLEAN_DOWNLOAD_MAGISK" ]; then
6662
rm -f "${MAGISK_PATH:?}"
6763
fi
68-
if [ "$CLEAN_DOWNLOAD_GAPPS" = "1" ]; then
64+
if [ "$CLEAN_DOWNLOAD_GAPPS" ]; then
6965
rm -f "${GAPPS_PATH:?}"
7066
fi
7167
fi
@@ -84,24 +80,42 @@ function Gen_Rand_Str {
8480
echo $(date +%s%N|md5sum|base64|head -c "$1")
8581
}
8682

83+
84+
default(){
85+
ARCH=x64
86+
RELEASE_TYPE=retail
87+
MAGISK_VER=stable
88+
GAPPS_BRAND=OpenGApps
89+
GAPPS_VARIANT=pico
90+
ROOT_SOL=magisk
91+
}
92+
93+
exit_with_message(){
94+
echo "ERROR: $1"
95+
usage
96+
abort
97+
}
98+
8799
usage(){
88-
if [ -n "$1" ]; then
89-
echo "Unknown parameter: $1"
90-
fi
100+
default
91101
echo "Usage:
92-
--arch
93-
--release-type
94-
--magisk-ver
95-
--gapps-brand
96-
--gapps-variant
97-
--root-sol
98-
--remove-amazon
99-
--compress
100-
--offline
101-
--magisk-custom
102-
--debug
102+
--arch Architecture of WSA, x64 or arm64, default: $ARCH
103+
--release-type Release type of WSA, retail, RP (Release Preview), WIS (Insider Slow) or WIF (Insider Fast), default: $RELEASE_TYPE
104+
--magisk-ver Magisk version, stable or canary, default: $MAGISK_VER
105+
--gapps-brand GApps brand, OpenGApps or MindTheGApps, default: $GAPPS_BRAND
106+
--gapps-variant GApps variant, pico or full, etc...., default: $GAPPS_VARIANT
107+
--root-sol Root solution, magisk or none, default: $ROOT_SOL
108+
--remove-amazon Remove Amazon from the system, default: false
109+
--compress Compress the WSA, default: false
110+
--offline Build WSA offline, default: false
111+
--magisk-custom Install custom Magisk, default: false
112+
--debug Debug build mode, default: false
113+
--help Show this help message and exit
114+
115+
Example:
116+
./build.sh --arch x64 --release-type retail --magisk-ver stable --gapps-brand OpenGApps --gapps-variant pico --remove-amazon
117+
./build.sh --arch x64 --release-type retail --remove-amazon --magisk-custom --offline
103118
"
104-
exit 1
105119
}
106120

107121
ARGUMENT_LIST=(
@@ -116,62 +130,134 @@ ARGUMENT_LIST=(
116130
"offline"
117131
"magisk-custom"
118132
"debug"
133+
"help"
119134
)
120135

136+
default
137+
121138
opts=$(getopt \
122139
--longoptions "$(printf "%s," "${ARGUMENT_LIST[@]}")" \
123140
--name "$(basename "$0")" \
124141
--options "" \
125142
-- "$@"
126-
)
143+
) || abort
127144

128145
eval set --"$opts"
129146
while [[ $# -gt 0 ]]; do
130147
case "$1" in
131-
--arch ) ARCH="$2"; shift 2 ;;
132-
--release-type ) RELEASE_TYPE="$2"; shift 2 ;;
133-
--magisk-ver ) MAGISK_VER="$2"; shift 2 ;;
134-
--gapps-brand ) GAPPS_BRAND="$2"; shift 2 ;;
135-
--gapps-variant ) GAPPS_VARIANT="$2"; shift 2 ;;
136-
--remove-amazon ) REMOVE_AMAZON="remove"; shift ;;
137-
--root-sol ) ROOT_SOL="$2"; shift 2 ;;
138-
--compress ) COMPRESS_OUTPUT="yes"; shift ;;
139-
--offline ) OFFLINE="1"; shift ;;
140-
--debug ) DEBUG="1"; shift ;;
141-
--magisk-custom ) CUSTOM_MAGISK="1"; shift ;;
142-
-- ) shift; break;;
143-
? ) usage "$2"; shift ;;
144-
* ) break ;;
148+
--arch ) ARCH="$2"; shift 2 ;;
149+
--release-type ) RELEASE_TYPE="$2"; shift 2 ;;
150+
--magisk-ver ) MAGISK_VER="$2"; shift 2 ;;
151+
--gapps-brand ) GAPPS_BRAND="$2"; shift 2 ;;
152+
--gapps-variant ) GAPPS_VARIANT="$2"; shift 2 ;;
153+
--root-sol ) ROOT_SOL="$2"; shift 2 ;;
154+
--remove-amazon ) REMOVE_AMAZON="remove"; shift ;;
155+
--compress ) COMPRESS_OUTPUT="yes"; shift ;;
156+
--offline ) OFFLINE="on"; shift ;;
157+
--magisk-custom ) CUSTOM_MAGISK="debug"; MAGISK_VER=$CUSTOM_MAGISK; shift ;;
158+
--debug ) DEBUG="on"; shift ;;
159+
--help ) usage; exit 0 ;;
160+
-- ) shift; break;;
145161
esac
146162
done
147163

148-
declare -A PARA_CHECK_LIST=([ARCH]="$ARCH" [RELEASE_TYPE]="$RELEASE_TYPE" [MAGISK_VER]="$MAGISK_VER" [GAPPS_VARIANT]="$GAPPS_VARIANT" [REMOVE_AMAZON]="$REMOVE_AMAZON" [ROOT_SOL]="$ROOT_SOL")
149-
for i in "${PARA_CHECK_LIST[@]}";
150-
do
151-
if [ -z "$i" ]; then
152-
usage
153-
fi
154-
done
164+
ARCH_MAP=(
165+
"x64"
166+
"arm64"
167+
)
168+
169+
RELEASE_TYPE_MAP=(
170+
"retail"
171+
"RP"
172+
"WIS"
173+
"WIF"
174+
)
175+
176+
MAGISK_VER_MAP=(
177+
"stable"
178+
"beta"
179+
"canary"
180+
"debug"
181+
)
182+
183+
GAPPS_BRAND_MAP=(
184+
"OpenGApps"
185+
"MindTheGApps"
186+
)
187+
188+
GAPPS_VARIANT_MAP=(
189+
"super"
190+
"stock"
191+
"full"
192+
"mini"
193+
"micro"
194+
"nano"
195+
"pico"
196+
"tvstock"
197+
"tvmini"
198+
)
199+
200+
ROOT_SOL_MAP=(
201+
"magisk"
202+
"none"
203+
)
155204

156-
echo -e "build: ARCH=$ARCH\nRELEASE_TYPE=$RELEASE_TYPE\nMAGISK_VER=$MAGISK_VER\nGAPPS_VARIANT=$GAPPS_VARIANT\nREMOVE_AMAZON=$REMOVE_AMAZON\nROOT_SOL=$ROOT_SOL\nCOMPRESS_OUTPUT=$COMPRESS_OUTPUT"
205+
check_list(){
206+
local input=$1
207+
local name=$2
208+
shift
209+
local arr=("$@")
210+
local list_count=${#arr[@]}
211+
for i in "${arr[@]}"; do
212+
if [ "$input" == "$i" ]; then
213+
break
214+
fi
215+
((list_count--))
216+
if (( "$list_count" <= 0 )); then
217+
exit_with_message "Invalid $name: $input"
218+
fi
219+
done
220+
}
157221

158-
declare -A RELEASE_TYPE_MAP=(["retail"]="Retail" ["release preview"]="RP" ["insider slow"]="WIS" ["insider fast"]="WIF")
222+
check_list "$ARCH" "Architecture" "${ARCH_MAP[@]}"
223+
check_list "$RELEASE_TYPE" "Release Type" "${RELEASE_TYPE_MAP[@]}"
224+
check_list "$MAGISK_VER" "Magisk Version" "${MAGISK_VER_MAP[@]}"
225+
check_list "$GAPPS_BRAND" "GApps Brand" "${GAPPS_BRAND_MAP[@]}"
226+
check_list "$GAPPS_VARIANT" "GApps Variant" "${GAPPS_VARIANT_MAP[@]}"
227+
check_list "$ROOT_SOL" "Root Solution" "${ROOT_SOL_MAP[@]}"
159228

160-
WSA_ZIP_PATH=$DOWNLOAD_DIR/wsa-$ARCH-${RELEASE_TYPE_MAP[$RELEASE_TYPE]}.zip
161-
vclibs_PATH=vclibs-"$ARCH".appx
162-
xaml_PATH=xaml-"$ARCH".appx
229+
if [ "$DEBUG" ]; then
230+
set -x
231+
fi
232+
233+
declare -A RELEASE_NAME_MAP=(["retail"]="Retail" ["RP"]="Release Preview" ["WIS"]="Insider Slow" ["WIF"]="Insider Fast")
234+
RELEASE_NAME=${RELEASE_NAME_MAP[$RELEASE_TYPE]} || abort
235+
236+
echo -e "build: ARCH=$ARCH\nRELEASE_TYPE=$RELEASE_NAME\nMAGISK_VER=$MAGISK_VER\nGAPPS_VARIANT=$GAPPS_VARIANT\nROOT_SOL=$ROOT_SOL"
237+
238+
WSA_ZIP_PATH=$DOWNLOAD_DIR/wsa-$ARCH-$RELEASE_TYPE.zip
239+
vclibs_PATH=$DOWNLOAD_DIR/vclibs-"$ARCH".appx
240+
xaml_PATH=$DOWNLOAD_DIR/xaml-"$ARCH".appx
163241
MAGISK_PATH=$DOWNLOAD_DIR/magisk-$MAGISK_VER.zip
242+
if [ "$CUSTOM_MAGISK" ]; then
243+
if [ ! -f "$MAGISK_PATH" ]; then
244+
echo "Custom Magisk not found, please rename it to magisk-debug.zip and put it in $DOWNLOAD_DIR"
245+
abort
246+
fi
247+
fi
164248
if [ "$GAPPS_BRAND" = "OpenGApps" ]; then
165249
GAPPS_PATH="$DOWNLOAD_DIR"/OpenGApps-$ARCH-$GAPPS_VARIANT.zip
166250
else
167251
GAPPS_PATH="$DOWNLOAD_DIR"/MindTheGapps-"$ARCH".zip
168252
fi
169-
170-
if [ "$OFFLINE" != "1" ]; then
253+
if [ "$(sudo whoami)" != "root" ]; then
254+
sudo echo "sudo is required to run this script"
255+
fi
256+
if [ -z "${OFFLINE+x}" ]; then
171257
trap 'rm -f -- "${DOWNLOAD_DIR:?}/${DOWNLOAD_CONF_NAME}"' EXIT
172258
echo "Generate Download Links"
173259
python3 generateWSALinks.py "$ARCH" "$RELEASE_TYPE" "$DOWNLOAD_DIR" "$DOWNLOAD_CONF_NAME" || abort
174-
if [ "$CUSTOM_MAGISK" != "1" ]; then
260+
if [ -z "${CUSTOM_MAGISK+x}" ]; then
175261
python3 generateMagiskLink.py "$MAGISK_VER" "$DOWNLOAD_DIR" "$DOWNLOAD_CONF_NAME" || abort
176262
fi
177263
if [ "$GAPPS_VARIANT" != 'none' ] && [ "$GAPPS_VARIANT" != '' ]; then
@@ -186,21 +272,20 @@ if [ "$OFFLINE" != "1" ]; then
186272
exit 1
187273
fi
188274
else
189-
if [ ! -f "$WSA_ZIP_PATH" ] || [ ! -f "$xaml_PATH" ] || [ ! -f "$vclibs_PATH" ]; then
190-
echo "Offline mode: missing WSA files."
191-
OFFLINE_ERR="1"
192-
fi
193-
if [ ! -f "$MAGISK_PATH" ]; then
194-
echo "Offline mode: missing Magisk $MAGISK_VER file."
195-
OFFLINE_ERR="1"
196-
fi
275+
declare -A FILES_CHECK_LIST=([WSA_ZIP_PATH]="$WSA_ZIP_PATH" [xaml_PATH]="$xaml_PATH" [vclibs_PATH]="$vclibs_PATH" [MAGISK_PATH]="$MAGISK_PATH")
276+
for i in "${FILES_CHECK_LIST[@]}"; do
277+
if [ ! -f "$i" ]; then
278+
echo "Offline mode: missing [$i]."
279+
OFFLINE_ERR="1"
280+
fi
281+
done
197282
if [ "$GAPPS_VARIANT" != 'none' ] && [ "$GAPPS_VARIANT" != '' ]; then
198283
if [ ! -f "$GAPPS_PATH" ]; then
199-
echo "Offline mode: missing $GAPPS_BRAND file."
284+
echo "Offline mode: missing [$GAPPS_PATH]."
200285
OFFLINE_ERR="1"
201286
fi
202287
fi
203-
if [ -n "$OFFLINE_ERR" ]; then
288+
if [ "$OFFLINE_ERR" ]; then
204289
echo "Offline mode: Some files are missing, please disable offline mode."
205290
exit 1
206291
fi
@@ -231,7 +316,7 @@ if [ -f "$MAGISK_PATH" ]; then
231316
CLEAN_DOWNLOAD_MAGISK=1
232317
abort
233318
fi
234-
elif [ "$CUSTOM_MAGISK" != "1" ]; then
319+
elif [ -z "${CUSTOM_MAGISK+x}" ]; then
235320
echo "The Magisk zip package does not exist, is the download incomplete?"
236321
exit 1
237322
else
@@ -318,7 +403,7 @@ sudo mount -o loop "$WORK_DIR"/wsa/"$ARCH"/product.img "$MOUNT_DIR"/product || a
318403
sudo mount -o loop "$WORK_DIR"/wsa/"$ARCH"/system_ext.img "$MOUNT_DIR"/system_ext || abort
319404
echo -e "done\n"
320405

321-
if [ "$REMOVE_AMAZON" = 'remove' ]; then
406+
if [ "$REMOVE_AMAZON" ]; then
322407
echo "Remove Amazon AppStore"
323408
find "${MOUNT_DIR:?}"/product/{etc/permissions,etc/sysconfig,framework,priv-app} | grep -e amazon -e venezia | sudo xargs rm -rf
324409
echo -e "done\n"
@@ -531,7 +616,7 @@ echo -e "Shrink images done\n"
531616

532617
echo "Remove signature and add scripts"
533618
sudo rm -rf "${WORK_DIR:?}"/wsa/"$ARCH"/\[Content_Types\].xml "$WORK_DIR"/wsa/"$ARCH"/AppxBlockMap.xml "$WORK_DIR"/wsa/"$ARCH"/AppxSignature.p7x "$WORK_DIR"/wsa/"$ARCH"/AppxMetadata || abort
534-
cp "$DOWNLOAD_DIR"/"$vclibs_PATH" "$DOWNLOAD_DIR"/"$xaml_PATH" "$WORK_DIR"/wsa/"$ARCH" || abort
619+
cp "$vclibs_PATH" "$xaml_PATH" "$WORK_DIR"/wsa/"$ARCH" || abort
535620
tee "$WORK_DIR"/wsa/"$ARCH"/Install.ps1 <<EOF
536621
# Automated Install script by Midonei
537622
# http://github.com/doneibcn
@@ -643,7 +728,7 @@ else
643728
else
644729
name2="-$GAPPS_BRAND"
645730
fi
646-
if [ "$GAPPS_BRAND" = "OpenGApps" ] && [ "$DEBUG" != "1" ]; then
731+
if [ "$GAPPS_BRAND" = "OpenGApps" ] && [ "$DEBUG" ]; then
647732
echo ":warning: Since OpenGApps doesn't officially support Android 12.1 yet, lock the variant to pico!"
648733
fi
649734
fi
@@ -656,10 +741,10 @@ fi
656741
if [ ! -d "$OUTPUT_DIR" ]; then
657742
mkdir -p "$OUTPUT_DIR"
658743
fi
659-
if [ "$COMPRESS_OUTPUT" = "yes" ]; then
744+
if [ "$COMPRESS_OUTPUT" ]; then
660745
rm -f "${OUTPUT_DIR:?}"/"$artifact_name.7z" || abort
661746
7z a "$OUTPUT_DIR"/"$artifact_name.7z" "$WORK_DIR/wsa/$ARCH/" || abort
662-
elif [ "$COMPRESS_OUTPUT" = "no" ]; then
747+
else
663748
rm -rf "${OUTPUT_DIR:?}/${artifact_name}" || abort
664749
mv "$WORK_DIR"/wsa/"$ARCH" "$OUTPUT_DIR/$artifact_name" || abort
665750
fi

scripts/generateWSALinks.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,14 @@
3232

3333
arch = sys.argv[1]
3434

35-
release_type_map = {"retail": "Retail", "release preview": "RP",
36-
"insider slow": "WIS", "insider fast": "WIF"}
37-
release_type = release_type_map[sys.argv[2]] if sys.argv[2] != "" else "Retail"
35+
release_name_map = {"retail": "Retail", "RP": "Release Preview",
36+
"WIS": "Insider Slow", "WIF": "Insider Fast"}
37+
release_type = sys.argv[2] if sys.argv[2] != "" else "Retail"
38+
release_name = release_name_map[release_type]
3839
download_dir = Path.cwd().parent / "download" if sys.argv[3] == "" else Path(sys.argv[3]).resolve()
3940
tempScript = sys.argv[4]
4041
cat_id = '858014f3-3934-4abe-8078-4aa193e74ca8'
41-
print(f"Generating WSA download link: arch={arch} release_type={release_type}", flush=True)
42+
print(f"Generating WSA download link: arch={arch} release_type={release_name}", flush=True)
4243
with open(Path.cwd().parent / ("xml/GetCookie.xml"), "r") as f:
4344
cookie_content = f.read()
4445

scripts/run.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
# DEBUG=--debug
2222
# CUSTOM_MAGISK=--magisk-custom
23+
2324
if [ ! "$BASH_VERSION" ] ; then
2425
echo "Please do not use sh to run this script, just execute it directly" 1>&2
2526
exit 1
@@ -57,6 +58,7 @@ fi
5758

5859
COMPRESS_OUTPUT="--compress"
5960

60-
COMMAND_LINE=(--arch "$ARCH" --release-type "$RELEASE_TYPE" --magisk-ver "$MAGISK_VER" --gapps-brand "$GAPPS_BRAND" --gapps-variant "$GAPPS_VARIANT" "$REMOVE_AMAZON" --root-sol "$ROOT_SOL" "$COMPRESS_OUTPUT" "$OFFLINE" "$DEBUG" "$CUSTOM_MAGISK")
61+
declare -A RELEASE_TYPE_MAP=(["retail"]="retail" ["release preview"]="RP" ["insider slow"]="WIS" ["insider fast"]="WIF")
62+
COMMAND_LINE=(--arch "$ARCH" --release-type "${RELEASE_TYPE_MAP[$RELEASE_TYPE]}" --magisk-ver "$MAGISK_VER" --gapps-brand "$GAPPS_BRAND" --gapps-variant "$GAPPS_VARIANT" "$REMOVE_AMAZON" --root-sol "$ROOT_SOL" "$COMPRESS_OUTPUT" "$OFFLINE" "$DEBUG" "$CUSTOM_MAGISK")
6163
echo "COMMAND_LINE=${COMMAND_LINE[*]}"
6264
./build.sh "${COMMAND_LINE[@]}"

0 commit comments

Comments
 (0)