diff --git a/scripts/build.sh b/scripts/build.sh index f65acef..47d377a 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -28,27 +28,20 @@ if [ "$HOST_ARCH" != "x86_64" ] && [ "$HOST_ARCH" != "aarch64" ]; then exit 1 fi cd "$(dirname "$0")" || exit 1 -trap umount_clean EXIT # export TMPDIR=$(dirname "$PWD")/WORK_DIR_ if [ "$TMPDIR" ] && [ ! -d "$TMPDIR" ]; then mkdir -p "$TMPDIR" fi WORK_DIR=$(mktemp -d -t wsa-build-XXXXXXXXXX_) || exit 1 -DOWNLOAD_DIR=../download -DOWNLOAD_CONF_NAME=download.list -OUTPUT_DIR=../output MOUNT_DIR="$WORK_DIR"/system SUDO="$(which sudo 2>/dev/null)" if [ -z "$SUDO" ]; then unset SUDO fi -WSA_WORK_ENV="${WORK_DIR:?}"/ENV -if [ -f "$WSA_WORK_ENV" ]; then rm -f "${WSA_WORK_ENV:?}"; fi -touch "$WSA_WORK_ENV" -export WSA_WORK_ENV umount_clean() { + echo "Cleanup Work Directory" if [ -d "$MOUNT_DIR" ]; then - echo "Cleanup Work Directory" + echo "Cleanup Mount Directory" if [ -d "$MOUNT_DIR/vendor" ]; then $SUDO umount "$MOUNT_DIR"/vendor fi @@ -68,6 +61,14 @@ umount_clean() { unset TMPDIR fi } +trap umount_clean EXIT +DOWNLOAD_DIR=../download +DOWNLOAD_CONF_NAME=download.list +OUTPUT_DIR=../output +WSA_WORK_ENV="${WORK_DIR:?}"/ENV +if [ -f "$WSA_WORK_ENV" ]; then rm -f "${WSA_WORK_ENV:?}"; fi +touch "$WSA_WORK_ENV" +export WSA_WORK_ENV clean_download() { if [ -d "$DOWNLOAD_DIR" ]; then echo "Cleanup Download Directory" @@ -635,9 +636,9 @@ EOF echo -e "Integrate Magisk done\n" fi -echo "Merge Language Resources" -cp "$WORK_DIR"/wsa/"$ARCH"/resources.pri "$WORK_DIR"/wsa/pri/en-us.pri \ -&& cp "$WORK_DIR"/wsa/"$ARCH"/AppxManifest.xml "$WORK_DIR"/wsa/xml/en-us.xml && { +cp "$WORK_DIR/wsa/$ARCH/resources.pri" "$WORK_DIR"/wsa/pri/en-us.pri \ +&& cp "$WORK_DIR/wsa/$ARCH/AppxManifest.xml" "$WORK_DIR"/wsa/xml/en-us.xml && { + echo "Merge Language Resources" tee "$WORK_DIR"/wsa/priconfig.xml < @@ -654,9 +655,9 @@ EOF else res_merge_failed=1 fi - [ -z "$res_merge_failed" ] || sed -i -zE "s//\n$(cat "$WORK_DIR"/wsa/xml/* | grep -Po ']*/>' | sed ':a;N;$!ba;s/\n/\\n/g' | sed 's/\$/\\$/g' | sed 's/\//\\\//g')\n<\/Resources>/g" "$WORK_DIR"/wsa/"$ARCH"/AppxManifest.xml && \ + [ -z "$res_merge_failed" ] && sed -i -zE "s//\n$(cat "$WORK_DIR"/wsa/xml/* | grep -Po ']*/>' | sed ':a;N;$!ba;s/\n/\\n/g' | sed 's/\$/\\$/g' | sed 's/\//\\\//g')\n<\/Resources>/g" "$WORK_DIR"/wsa/"$ARCH"/AppxManifest.xml && \ echo -e "Merge Language Resources done\n" -} && [ -z "$res_merge_failed" ] || echo -e "Merge Language Resources failed\n" && unset res_merge_failed +} && [ -n "$res_merge_failed" ] && echo -e "Merge Language Resources failed\n" && unset res_merge_failed echo "Add extra packages" $SUDO cp -r ../"$ARCH"/system/* "$MOUNT_DIR" || abort diff --git a/scripts/extractWSA.py b/scripts/extractWSA.py index 9a5eedd..b32af86 100644 --- a/scripts/extractWSA.py +++ b/scripts/extractWSA.py @@ -24,6 +24,7 @@ import warnings import zipfile import os from pathlib import Path +import re warnings.filterwarnings("ignore") @@ -32,8 +33,11 @@ arch = sys.argv[1] zip_name = "" wsa_zip_path= Path(sys.argv[2]).resolve() workdir = Path(sys.argv[3]) / "wsa" +archdir = Path(workdir / arch) if not Path(workdir).is_dir(): workdir.mkdir() +if not Path(archdir).is_dir(): + archdir.mkdir() with zipfile.ZipFile(wsa_zip_path) as zip: for f in zip.filelist: if arch in f.filename.lower(): @@ -64,7 +68,8 @@ with zipfile.ZipFile(wsa_zip_path) as zip: elif g.filename == 'AppxManifest.xml': g.filename = f'{name}.xml' l.extract(g, workdir / 'xml') + elif re.search(u'Images/.+\.png', g.filename) != None: + l.extract(g, archdir) with zipfile.ZipFile(zip_path) as zip: - if not Path(workdir / arch).is_dir(): - print(f"unzipping from {zip_path}", flush=True) - zip.extractall(workdir / arch) + print(f"unzipping from {zip_path}", flush=True) + zip.extractall(archdir)