diff --git a/Makefile b/Makefile index 826dd546c..773c93f5c 100644 --- a/Makefile +++ b/Makefile @@ -2,12 +2,13 @@ run_options := $(filter-out $@,$(MAKECMDGOALS)) .PHONY: all clean cleanassets test lint chromium opera firefox npm dig \ - mv3 mv3-quick mv3-chromium mv3-firefox \ + mv3-chromium mv3-firefox mv3-edge \ compare maxcost medcost mincost modifiers record wasm sources := $(wildcard assets/* assets/*/* dist/version src/* src/*/* src/*/*/* src/*/*/*/*) platform := $(wildcard platform/* platform/*/* platform/*/*/* platform/*/*/*/* platform/*/*/*/*/*) assets := dist/build/uAssets +mv3-assets := dist/build/mv3-data/* all: chromium firefox npm @@ -61,21 +62,20 @@ dig: dist/build/uBlock0.dig dig-snfe: dig cd dist/build/uBlock0.dig && npm run snfe $(run_options) -dist/build/uBOLite.chromium: tools/make-mv3.sh $(sources) $(platform) +dist/build/uBOLite.chromium: tools/make-mv3.sh $(sources) $(platform) $(mv3-assets) tools/make-mv3.sh chromium mv3-chromium: dist/build/uBOLite.chromium -dist/build/uBOLite.firefox: tools/make-mv3.sh $(sources) $(platform) +dist/build/uBOLite.firefox: tools/make-mv3.sh $(sources) $(platform) $(mv3-assets) tools/make-mv3.sh firefox mv3-firefox: dist/build/uBOLite.firefox -mv3-quick: tools/make-mv3.sh $(sources) $(platform) - tools/make-mv3.sh quick +dist/build/uBOLite.edge: tools/make-mv3.sh tools/make-edge.mjs $(sources) $(platform) $(mv3-assets) + tools/make-mv3.sh edge -mv3-full: tools/make-mv3.sh $(sources) $(platform) - tools/make-mv3.sh full +mv3-edge: dist/build/uBOLite.edge dist/build/uAssets: tools/pull-assets.sh diff --git a/tools/make-edge.sh b/tools/make-edge.sh deleted file mode 100755 index c5c4ff4c4..000000000 --- a/tools/make-edge.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash -# -# This script assumes a linux environment - -set -e - -echo "*** uBOLite.edge: Creating web store package" - -DES=dist/build/uBOLite.edge -rm -rf $DES -mkdir -p $DES - -echo "*** uBOLite.edge: Copying reference chromium-based files" -cp -R dist/build/uBOLite.chromium/* $DES/ - -# Edge store requires that all DNR rulesets are at the root of the package -# https://learn.microsoft.com/answers/questions/918426/cant-update-extension-with-declarative-net-request -echo "*** uBOLite.edge: Modify reference implementation for Edge compatibility" -mv $DES/rulesets/main/* $DES/ -rmdir $DES/rulesets/main -# Patch manifest.json -node tools/make-edge.mjs - -echo "*** uBOLite.edge: Package done." diff --git a/tools/make-mv3.sh b/tools/make-mv3.sh index 60eba71ae..c985ae154 100755 --- a/tools/make-mv3.sh +++ b/tools/make-mv3.sh @@ -11,9 +11,6 @@ PLATFORM="chromium" for i in "$@"; do case $i in - quick) - QUICK="yes" - ;; full) FULL="yes" ;; @@ -23,6 +20,9 @@ for i in "$@"; do chromium) PLATFORM="chromium" ;; + edge) + PLATFORM="edge" + ;; uBOLite_+([0-9]).+([0-9]).+([0-9]).+([0-9])) TAGNAME="$i" FULL="yes" @@ -39,9 +39,7 @@ echo "BEFORE=$BEFORE" DES="dist/build/uBOLite.$PLATFORM" -if [ "$QUICK" != "yes" ]; then - rm -rf $DES -fi +rm -rf $DES mkdir -p $DES cd $DES @@ -95,38 +93,44 @@ cp platform/mv3/extension/img/* "$DES"/img/ cp -R platform/mv3/extension/_locales "$DES"/ cp platform/mv3/README.md "$DES/" -if [ "$QUICK" != "yes" ]; then - echo "*** uBOLite.mv3: Generating rulesets" - TMPDIR=$(mktemp -d) - mkdir -p "$TMPDIR" - if [ "$PLATFORM" = "chromium" ]; then - cp platform/mv3/chromium/manifest.json "$DES"/ - elif [ "$PLATFORM" = "firefox" ]; then - cp platform/mv3/firefox/manifest.json "$DES"/ - fi - ./tools/make-nodejs.sh "$TMPDIR" - cp platform/mv3/package.json "$TMPDIR"/ - cp platform/mv3/*.js "$TMPDIR"/ - cp platform/mv3/*.mjs "$TMPDIR"/ - cp platform/mv3/extension/js/utils.js "$TMPDIR"/js/ - cp -R "$UBO_DIR"/src/js/resources "$TMPDIR"/js/ - cp "$UBO_DIR"/assets/assets.dev.json "$TMPDIR"/ - cp -R platform/mv3/scriptlets "$TMPDIR"/ - mkdir -p "$TMPDIR"/web_accessible_resources - cp "$UBO_DIR"/src/web_accessible_resources/* "$TMPDIR"/web_accessible_resources/ - cd "$TMPDIR" - node --no-warnings make-rulesets.js output="$DES" platform="$PLATFORM" - if [ -n "$BEFORE" ]; then - echo "*** uBOLite.mv3: salvaging rule ids to minimize diff size" - echo " before=$BEFORE/$PLATFORM" - echo " after=$DES" - node salvage-ruleids.mjs before="$BEFORE"/"$PLATFORM" after="$DES" - fi - cd - > /dev/null - rm -rf "$TMPDIR" +echo "*** uBOLite.mv3: Generating rulesets" +TMPDIR=$(mktemp -d) +mkdir -p "$TMPDIR" +if [ "$PLATFORM" = "chromium" ] || [ "$PLATFORM" = "edge" ]; then + cp platform/mv3/chromium/manifest.json "$DES"/ +elif [ "$PLATFORM" = "firefox" ]; then + cp platform/mv3/firefox/manifest.json "$DES"/ +fi +./tools/make-nodejs.sh "$TMPDIR" +cp platform/mv3/package.json "$TMPDIR"/ +cp platform/mv3/*.js "$TMPDIR"/ +cp platform/mv3/*.mjs "$TMPDIR"/ +cp platform/mv3/extension/js/utils.js "$TMPDIR"/js/ +cp -R "$UBO_DIR"/src/js/resources "$TMPDIR"/js/ +cp "$UBO_DIR"/assets/assets.dev.json "$TMPDIR"/ +cp -R platform/mv3/scriptlets "$TMPDIR"/ +mkdir -p "$TMPDIR"/web_accessible_resources +cp "$UBO_DIR"/src/web_accessible_resources/* "$TMPDIR"/web_accessible_resources/ +cd "$TMPDIR" +node --no-warnings make-rulesets.js output="$DES" platform="$PLATFORM" +if [ -n "$BEFORE" ]; then + echo "*** uBOLite.mv3: salvaging rule ids to minimize diff size" + echo " before=$BEFORE/$PLATFORM" + echo " after=$DES" + node salvage-ruleids.mjs before="$BEFORE"/"$PLATFORM" after="$DES" +fi +cd - > /dev/null +rm -rf "$TMPDIR" + +# For Edge, declared rulesets must be at package root +if [ "$PLATFORM" = "edge" ]; then + echo "*** uBOLite.edge: Modify reference implementation for Edge compatibility" + mv "$DES"/rulesets/main/* "$DES/" + rmdir "$DES/rulesets/main" + node tools/make-edge.mjs fi -echo "*** uBOLite.mv3: extension ready" +echo "*** uBOLite.$PLATFORM: extension ready" echo "Extension location: $DES/" # Local build