11#! /usr/bin/env bash
22set -eux -o pipefail
33
4+ # Required tools: protobuf python python2 gperf wget rsync tar unzip curl gnupg maven yasm npm ninja gn nodejs git clang lld gn llvm jdk8-openjdk jre8-openjdk-headless jdk10-openjdk lib32-glibc multilib-devel
5+ # Assuming default python to be python2.
6+
47chrome_target=chrome_public_apk
58mono_target=monochrome_public_apk
69webview_target=system_webview_apk
710
8- chromium_version=79 .0.3945.130
9- ungoogled_chromium_revision=2
11+ chromium_version=80 .0.3987.106
12+ ungoogled_chromium_revision=1
1013
1114# Argument parser from https://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash/29754866#29754866
1215# -allow a command to fail with !’s side effect on errexit
7376
7477echo " arch: $ARCH , target: $TARGET , debug: $DEBUG "
7578
76- # Required tools: protobuf python python2 gperf wget rsync tar unzip curl gnupg maven yasm npm ninja git clang lld gn llvm openjdk lib32-glibc multilib-devel
77- # Assuming default python to be python2.
78-
7979# # Clone ungoogled-chromium repo
8080git clone https://github.com/Eloston/ungoogled-chromium.git -b ${chromium_version} -${ungoogled_chromium_revision}
8181
@@ -91,6 +91,7 @@ git remote add origin https://chromium.googlesource.com/chromium/tools/depot_too
9191git fetch --depth 1 --no-tags origin " ${depot_tools_commit} "
9292git reset --hard FETCH_HEAD
9393popd
94+ OLD_PATH=$PATH
9495export PATH=" $( pwd -P) /depot_tools:$PATH "
9596pushd src/third_party
9697ln -s ../../depot_tools
@@ -103,15 +104,6 @@ gclient.py sync --nohooks --no-history --shallow --revision=${chromium_version}
103104
104105
105106# # Fix repos
106- feed_commit=$( grep " 'feed_revision':" src/DEPS | cut -d\' -f4)
107- mkdir src/third_party/feed/src
108- pushd src/third_party/feed/src
109- git init
110- git remote add origin https://chromium.googlesource.com/feed
111- git fetch --depth 1 --no-tags origin " ${feed_commit} "
112- git reset --hard FETCH_HEAD
113- popd
114-
115107webrtc_commit=$( grep ' webrtc_git.*/src\.git' src/DEPS | cut -d\' -f8)
116108mkdir src/third_party/webrtc
117109pushd src/third_party/webrtc
@@ -130,22 +122,25 @@ git fetch --depth 1 --no-tags origin "${libsync_commit}"
130122git reset --hard FETCH_HEAD
131123popd
132124
133- gn_commit=2426c173819e74a9dad7a2ab647cfa1506f6007f
134- mv src/tools/gn src/tools/gn.bak
135- git clone https://gn.googlesource.com/gn src/tools/gn
136- pushd src/tools/gn
137- git checkout ${gn_commit}
138- popd
139- cp -r src/tools/gn.bak/bootstrap src/tools/gn
140-
141125# # Hooks
142126python src/build/util/lastchange.py -o src/build/util/LASTCHANGE
143127python src/tools/download_cros_provided_profile.py --newest_state=src/chrome/android/profiles/newest.txt --local_state=src/chrome/android/profiles/local.txt --output_name=src/chrome/android/profiles/afdo.prof --gs_url_base=chromeos-prebuilt/afdo-job/llvm
144128python src/build/util/lastchange.py -m GPU_LISTS_VERSION --revision-id-only --header src/gpu/config/gpu_lists_version.h
145129python src/build/util/lastchange.py -m SKIA_COMMIT_HASH -s src/third_party/skia --header src/skia/ext/skia_commit_hash.h
146130# New binary dependency: node, caused by webui
147- src/third_party/node/update_node_binaries
131+ mkdir -p src/third_party/node/linux/node-linux-x64/bin
132+ ln -s /usr/bin/node src/third_party/node/linux/node-linux-x64/bin/
148133src/third_party/node/update_npm_deps
134+ # Remove bundled jdk
135+ # java8 bundled with Arch seems to be a little outdated, so actually need to use java and javac from java10
136+ pushd src && patch -p1 --ignore-whitespace -i ../patches/remove-jdk.patch --no-backup-if-mismatch && popd
137+ rm -rf src/third_party/jdk
138+ mkdir -p src/third_party/jdk/current/bin
139+ ln -s /usr/bin/java src/third_party/jdk/current/bin/
140+ ln -s /usr/bin/javac src/third_party/jdk/current/bin/
141+ # jre
142+ mkdir -p src/third_party/jdk/extras/java_8
143+ ln -s /usr/lib/jvm/java-8-openjdk/jre src/third_party/jdk/extras/java_8
149144
150145
151146# # Run ungoogled-chromium scripts
@@ -170,10 +165,10 @@ cp safe_browsing_proto_files/webprotect.pb.h src/components/safe_browsing/proto/
170165
171166
172167# # Prepare Android SDK/NDK
168+ SDK_DIR=" android-sdk_eng.10.0.0_r14_linux-x86"
173169
174170# Create symbol links to sdk folders
175171# The rebuild sdk has a different folder structure from the checked out version, so it is easier to create symbol links
176- # Old aapt no longer works. Need to use Maven version until a rebuild of SDK 29 exists.
177172# pushd src/third_party/android_build_tools
178173# rm -rf aapt2
179174# ln -s ../../../android-sdk/android-sdk_user.9.0.0_r21_linux-x86/build-tools/android-9 aapt2
@@ -184,70 +179,47 @@ if [[ -d "$DIRECTORY" ]]; then
184179fi
185180mkdir " ${DIRECTORY} " && pushd ${DIRECTORY}
186181# rm -rf add-ons emulator licenses platforms sources tools-lint build-tools ndk-bundle platform-tools tools
187- mkdir build-tools && ln -s ../../../../../android-sdk/android-sdk_user.9.0.0_r21_linux-x86 /build-tools/android-9 build-tools/29.0.2
182+ mkdir build-tools && ln -s ../../../../../android-sdk/${SDK_DIR} /build-tools/android-10 build-tools/29.0.2
188183mkdir platforms
189- ln -s ../../../../../android-sdk/android-sdk_user.9.0.0_r21_linux-x86 /platforms/android-9 platforms/android-28
190- ln -s ../../../../android-sdk/android-sdk_user.9.0.0_r21_linux-x86 /platform-tools platform-tools
191- ln -s ../../../../android-sdk/android-sdk_user.9.0.0_r21_linux-x86 /tools tools
184+ ln -s ../../../../../android-sdk/${SDK_DIR} /platforms/android-10 platforms/android-29
185+ ln -s ../../../../android-sdk/${SDK_DIR} /platform-tools platform-tools
186+ ln -s ../../../../android-sdk/${SDK_DIR} /tools tools
192187popd
193188
194189# remove ndk folders
195190DIRECTORY=" src/third_party/android_ndk"
196191gn_file=" BUILD.gn"
197- mkdir " temp"
198- # cp -a "${DIRECTORY}/${gn_file}" android-ndk/android-ndk-r20b
199- # cp -ar "${DIRECTORY}/toolchains/llvm/prebuilt/linux-x86_64" android-ndk/android-ndk-r20b/toolchains/llvm/prebuilt # Need libgcc.a otherwise compilation will fail
200- cp -a " ${DIRECTORY} /${gn_file} " temp
201- cp -ar " ${DIRECTORY} /toolchains/llvm/prebuilt/linux-x86_64" temp # Need libgcc.a otherwise compilation will fail
192+ mkdir " ndk_temp"
193+ cp -a " ${DIRECTORY} /${gn_file} " ndk_temp
194+ cp -ar " ${DIRECTORY} /toolchains/llvm/prebuilt/linux-x86_64" ndk_temp # Need libgcc.a otherwise compilation will fail
202195pushd " ${DIRECTORY} "
203196cd ..
204197rm -rf android_ndk
205198ln -s ../../android-ndk/android-ndk-r20b android_ndk
206199popd
207200
208201# This is Sylvain Beucler's libre Android rebuild
209- sdk_link=" https://android-rebuilds.beuc.net/dl/bundles/android-sdk_user.9.0.0_r21_linux-x86.zip"
210- sdk_tools_link=" https://android-rebuilds.beuc.net/dl/repository/sdk-repo-linux-tools-26.1.1.zip"
211- ndk_link=" https://android-rebuilds.beuc.net/dl/repository/android-ndk-r20b-linux-x86_64.tar.bz2"
212-
202+ sdk_link=" https://android-rebuilds.beuc.net/dl/bundles/android-sdk_eng.10.0.0_r14_linux-x86.zip"
213203sdk_tools_link=" https://android-rebuilds.beuc.net/dl/repository/sdk-repo-linux-tools-26.1.1.zip"
214204ndk_link=" https://android-rebuilds.beuc.net/dl/repository/android-ndk-r20b-linux-x86_64.tar.bz2"
215205
216206mkdir android-rebuilds
217207mkdir android-sdk
218208mkdir android-ndk
219209pushd android-rebuilds
220- for i in $( seq 1 5) ; do curl -O ${sdk_link} && unzip -qqo android-sdk_user.9 .0.0_r21_linux -x86.zip -d ../android-sdk && rm -f android-sdk_user.9 .0.0_r21_linux -x86.zip && s=0 && break || s=$? && sleep 15; done ; (exit $s )
221- for i in $( seq 1 5) ; do curl -O ${sdk_tools_link} && unzip -qqo sdk-repo-linux-tools-26.1.1.zip -d ../android-sdk/android-sdk_user.9 .0.0_r21_linux -x86 && rm -f sdk-repo-linux-tools-26.1.1.zip && s=0 && break || s=$? && sleep 15; done ; (exit $s )
210+ for i in $( seq 1 5) ; do curl -O ${sdk_link} && unzip -qqo android-sdk_eng.10 .0.0_r14_linux -x86.zip -d ../android-sdk && rm -f android-sdk_eng.10 .0.0_r14_linux -x86.zip && s=0 && break || s=$? && sleep 15; done ; (exit $s )
211+ for i in $( seq 1 5) ; do curl -O ${sdk_tools_link} && unzip -qqo sdk-repo-linux-tools-26.1.1.zip -d ../android-sdk/android-sdk_eng.10 .0.0_r14_linux -x86 && rm -f sdk-repo-linux-tools-26.1.1.zip && s=0 && break || s=$? && sleep 15; done ; (exit $s )
222212for i in $( seq 1 5) ; do curl -O ${ndk_link} && tar xjf android-ndk-r20b-linux-x86_64.tar.bz2 -C ../android-ndk && rm -f android-ndk-r20b-linux-x86_64.tar.bz2 && s=0 && break || s=$? && sleep 15; done ; (exit $s )
223213popd
214+
224215# Move ndk files into place
225- cp -a " temp /${gn_file} " android-ndk/android-ndk-r20b
226- cp -ar " temp /linux-x86_64" android-ndk/android-ndk-r20b/toolchains/llvm/prebuilt
227- rm -rf " temp "
216+ cp -a " ndk_temp /${gn_file} " android-ndk/android-ndk-r20b
217+ cp -ar " ndk_temp /linux-x86_64" android-ndk/android-ndk-r20b/toolchains/llvm/prebuilt
218+ rm -rf " ndk_temp "
228219
229220
230221# # Compile third-party binaries
231- # error-prone, from Maven repo
232- mkdir -p src/third_party/errorprone/lib
233- pushd src/third_party/errorprone/lib
234- version=2.3.1
235- mvn_url=" https://repo1.maven.org/maven2/com/google/errorprone/error_prone_ant/${version} "
236- curl " ${mvn_url} /error_prone_ant-${version} .jar" -O
237- curl " ${mvn_url} /error_prone_ant-${version} .jar.asc" -O
238- echo -e " \033[0;33mThis will add a new key to your GPG keyring! \033[0m"
239- gpg --recv-keys EE9E7DC9D92FC896
240- gpg --verify " error_prone_ant-${version} .jar.asc" " error_prone_ant-${version} .jar"
241- popd
242- # closure-compiler
243- DIRECTORY=" src/third_party/closure_compiler"
244- mkdir " ${DIRECTORY} " /temp && pushd ${DIRECTORY} /temp
245- git clone https://github.com/google/closure-compiler && cd closure-compiler
246- mvn -DskipTests -pl externs/pom.xml,pom-main.xml,pom-main-shaded.xml
247- cp -a target/closure-compiler-1.0-SNAPSHOT.jar ../../compiler/compiler.jar
248- cd ../.. && rm -rf temp
249- popd
250- # eu-strip can be re-compiled with -Wno-error, but it is probably not a good idea
222+ # eu-strip is re-compiled with -Wno-error
251223patch -p1 --ignore-whitespace -i patches/eu-strip-build-script.patch --no-backup-if-mismatch
252224pushd src/buildtools/third_party/eu-strip
253225./build.sh
272244python3 ungoogled-chromium/utils/domain_substitution.py apply -r ungoogled-chromium/domain_regex.list -f ${substitution_list_2} -c ${cache_file} src
273245
274246
275- # # Genarate gn file
276- pushd src/tools/gn
277- build/gen.py
278- /usr/bin/ninja -C out gn
279- popd
280-
281-
282247# # Configure output folder
248+ export PATH=$OLD_PATH # remove depot_tools from PATH
283249pushd src
284250mkdir -p out/Default
285251if [ " $DEBUG " = n ] ; then
286252 cat ../ungoogled-chromium/flags.gn ../android_flags.gn ../android_flags.release.gn > out/Default/args.gn
287253else
288254 cat ../android_flags.gn ../android_flags.debug.gn > out/Default/args.gn
289255fi
290- printf ' \ntarget_cpu="' " $ARCH " ' "' >> out/Default/args.gn
291- tools/gn/out/ gn gen out/Default --fail-on-unused-args
256+ printf ' \ntarget_cpu="' " $ARCH " ' "\n ' >> out/Default/args.gn
257+ gn gen out/Default --fail-on-unused-args
292258popd
293259
294260
@@ -303,5 +269,5 @@ patch -p1 --ignore-whitespace -i patches/ignore-aidl-assertion-error.patch --no-
303269
304270# # Build
305271pushd src
306- /usr/bin/ ninja -C out/Default $TARGET
272+ ninja -C out/Default $TARGET
307273popd
0 commit comments