From e5618182a30bfb1cada06f2f8543e09bf5f0e693 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Mon, 5 Aug 2024 14:07:30 +0200 Subject: [PATCH] [TOOLS] Add vanilla chromium build (#1200) --- .../workflows/build_additional_targets.yaml | 214 ++++++++++++++++++ build/chromium.gn_args | 4 + 2 files changed, 218 insertions(+) create mode 100644 .github/workflows/build_additional_targets.yaml create mode 100644 build/chromium.gn_args diff --git a/.github/workflows/build_additional_targets.yaml b/.github/workflows/build_additional_targets.yaml new file mode 100644 index 00000000..e5663a17 --- /dev/null +++ b/.github/workflows/build_additional_targets.yaml @@ -0,0 +1,214 @@ +name: Build Additional Targets +permissions: + actions: none + checks: none + contents: none + deployments: none + issues: none + packages: none + pull-requests: none + repository-projects: none + security-events: none + statuses: none + +on: + workflow_dispatch: + inputs: + sha: + description: 'uazo/cromite SHA' + required: true + default: '' + type: + description: 'runner? [dev/ci]' + required: true + default: 'ci' + debug: + description: 'debug? [true/false]' + required: true + default: 'false' + +env: + CROMITE_SHA: ${{ github.event.inputs.sha }} + REMOVEDOCKERSUPPORT: true + USELOCALIMAGE: true + +jobs: + check_images: + runs-on: ${{ github.event.inputs.type }} + steps: + - name: Checkout repo + uses: actions/checkout@v2 + with: + path: cromite + ref: ${{ github.event.inputs.sha }} + fetch-depth: 1 + + - name: Enable proxy on container + shell: bash + run: | + if ! [[ -z "${HTTP_PROXY}" ]]; then + PROXY_ADDR=http://$(hostname -I | cut -d' ' -f1 | xargs):8118 + echo "PROXY_ADDR=$PROXY_ADDR" >> $GITHUB_ENV + sudo iptables -D INPUT -p tcp -s localhost --dport 8118 -j ACCEPT + sudo iptables -D INPUT -p tcp --dport 8118 -j DROP + fi + + - name: Get current chromium version + shell: bash + run: | + export VERSION=$( cat ./cromite/build/RELEASE ) + + echo Current version is $VERSION + echo "VERSION=$VERSION" >> $GITHUB_ENV + + cd cromite/tools + + - name: Get uazo/cromite-build from docker hub if present + shell: bash + run: | + IS_PRESENT=$(docker manifest inspect uazo/cromite-build:$VERSION-$CROMITE_SHA > /dev/null ; echo $?) + if [ $IS_PRESENT -eq "0" ]; then + docker pull uazo/cromite-build:$VERSION-$CROMITE_SHA + fi + + - name: Mark image to build + shell: bash + run: | + IS_PRESENT=$(docker inspect --type=image uazo/cromite-build:build > /dev/null ; echo $?) + if [ $IS_PRESENT -eq "0" ]; then + docker rmi uazo/cromite-build:build + fi + docker tag uazo/cromite-build:$VERSION-$CROMITE_SHA uazo/cromite-build:build + + build: + runs-on: ${{ github.event.inputs.type }} + needs: check_images + if: success() + timeout-minutes: 1440 + + container: + image: uazo/cromite-build:build + env: + REMOVEDOCKERSUPPORT: true # CUSTOM RUNNER: remove sharing of docker socket + USELOCALIMAGE: true # CUSTOM RUNNER: permit use of local images + USEINTERNALNETWORK: true # CUSTOM RUNNER: create the docker network as internal + WORKSPACE: /home/lg/working_dir + # kythe + KYTHE_CORPUS: chromium.googlesource.com/chromium/src + KYTHE_ROOT_DIRECTORY: /home/lg/working_dir/chromium/src + KYTHE_OUTPUT_DIRECTORY: /home/lg/working_dir/chromium/src/out/arm64/kythe + # cross build + DEPOT_TOOLS_WIN_TOOLCHAIN_BASE_URL: /win_sdk/10.0.22621.0/ + WINDOWSSDKDIR: "/win_sdk/10.0.22621.0/Windows Kits/10/" + GYP_MSVS_OVERRIDE_PATH: /win_sdk/10.0.22621.0/ + # compile in debug mode + TARGET_ISDEBUG: ${{ github.event.inputs.debug }} + USE_KEYSTORE: true + KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} + CROMITE_PREF_HASH_SEED_BIN: ${{ secrets.CROMITE_PREF_HASH_SEED_BIN }} + volumes: + - /storage/images/${{ github.event.inputs.sha }}/android/${{ github.event.inputs.debug }}/chr_arm:/home/lg/working_dir/chromium/src/out/chr_arm + - /storage/images/${{ github.event.inputs.sha }}/android/${{ github.event.inputs.debug }}/chr_arm64:/home/lg/working_dir/chromium/src/out/chr_arm64 + - /storage/images/${{ github.event.inputs.sha }}/android/${{ github.event.inputs.debug }}/chr_x64:/home/lg/working_dir/chromium/src/out/chr_x64 + - /tmp/proxy:/tmp/proxy + - /win_sdk:/win_sdk + + steps: + - name: Prepare Build Container + shell: bash + run: | + # set workspace paths + PATH=$WORKSPACE/chromium/src/third_party/llvm-build/Release+Asserts/bin:$WORKSPACE/depot_tools/:/usr/local/go/bin:$WORKSPACE/mtool/bin:$PATH + cd $WORKSPACE + + # reset proxy env + HTTP_PROXY= + HTTPS_PROXY= + http_proxy= + https_proxy= + + # set out folder permissions + test -d chromium/src/out/chr_arm || sudo mkdir -p chromium/src/out/chr_arm && \ + sudo chown lg chromium/src/out && + sudo chown lg chromium/src/out/chr_arm + + test -d chromium/src/out/chr_arm64 || sudo mkdir -p chromium/src/out/chr_arm64 && \ + sudo chown lg chromium/src/out && + sudo chown lg chromium/src/out/chr_arm64 + + test -d chromium/src/out/chr_x64 || sudo mkdir -p chromium/src/out/chr_x64 && \ + sudo chown lg chromium/src/out && + sudo chown lg chromium/src/out/chr_x64 + + sudo mkdir -p /run/user/1000/ + sudo chown lg /run/user/1000/ + sudo chmod g-rxw /run/user/1000/ + sudo chmod o-rxw /run/user/1000/ + + # prepare keystore + echo "::group::-------- prepare keystore" + cd $WORKSPACE + echo "${{ secrets.KEYSTORE }}" > cromite.keystore.asc + gpg --homedir ./ -d --passphrase "${{ secrets.KEYSTORE_PASSPHRASE }}" --batch cromite.keystore.asc > cromite.keystore + echo "::endgroup::" + + # checkout chromium commit + LAST_PATCH=$(git log --all --grep='Fix-chromium-vanilla.patch' --format="%H") + git checkout $LAST_PATCH + + - name: Build Chromium Vanilla Android x64 + shell: bash + run: | + PATH=$WORKSPACE/chromium/src/third_party/llvm-build/Release+Asserts/bin:$WORKSPACE/depot_tools/:/usr/local/go/bin:$WORKSPACE/mtool/bin:$PATH + cd $WORKSPACE/chromium/src + + echo "::group::-------- gn gen" + gn gen --args="target_os = \"android\" $(cat /home/lg/working_dir/cromite/build/chromium.gn_args) target_cpu = \"x64\" " out/chr_x64 + echo "::endgroup::" + + echo "::group::-------- gn args" + gn args out/x64/ --list --short + gn args out/x64/ --list >out/chr_x64/gn_list + echo "::endgroup::" + + ninja -C out/chr_x64 chrome_public_apk + + cp ../../cromite/build/RELEASE out/chr_x64 + + - name: Build Chromium Vanilla Android arm64 + shell: bash + run: | + PATH=$WORKSPACE/chromium/src/third_party/llvm-build/Release+Asserts/bin:$WORKSPACE/depot_tools/:/usr/local/go/bin:$WORKSPACE/mtool/bin:$PATH + cd $WORKSPACE/chromium/src + + echo "::group::-------- gn gen" + gn gen --args="target_os = \"android\" $(cat /home/lg/working_dir/cromite/build/chromium.gn_args) target_cpu = \"arm64\" " out/chr_arm64 + echo "::endgroup::" + + echo "::group::-------- gn args" + gn args out/x64/ --list --short + gn args out/x64/ --list >out/chr_arm64/gn_list + echo "::endgroup::" + + ninja -C out/chr_arm64 chrome_public_apk + + cp ../../cromite/build/RELEASE out/chr_arm64 + + - name: Build Chromium Vanilla Android arm + shell: bash + run: | + PATH=$WORKSPACE/chromium/src/third_party/llvm-build/Release+Asserts/bin:$WORKSPACE/depot_tools/:/usr/local/go/bin:$WORKSPACE/mtool/bin:$PATH + cd $WORKSPACE/chromium/src + + echo "::group::-------- gn gen" + gn gen --args="target_os = \"android\" $(cat /home/lg/working_dir/cromite/build/chromium.gn_args) target_cpu = \"arm\" " out/chr_arm + echo "::endgroup::" + + echo "::group::-------- gn args" + gn args out/x64/ --list --short + gn args out/x64/ --list >out/chr_arm/gn_list + echo "::endgroup::" + + ninja -C out/chr_arm chrome_public_apk + + cp ../../cromite/build/RELEASE out/chr_arm diff --git a/build/chromium.gn_args b/build/chromium.gn_args new file mode 100644 index 00000000..032302ba --- /dev/null +++ b/build/chromium.gn_args @@ -0,0 +1,4 @@ +# infra/config/generated/builders/ci/android-official/gn-args.json +debuggable_apks = false +is_official_build = true +symbol_level = 2