#!/bin/sh -e pkg_dir=$1 set -- \ blink_symbol_level=0 \ clang_use_chrome_plugins=false \ closure_compile=false \ custom_toolchain=\"//build/toolchain/linux/unbundle:default\" \ enable_mds=false \ enable_nacl=false \ enable_nacl_nonsfi=false \ enable_reading_list=false \ enable_remoting=false \ enable_reporting=false \ enable_service_discovery=false \ enable_swiftshader=false \ fatal_linker_warnings=false \ host_toolchain=\"//build/toolchain/linux/unbundle:default\" \ is_component_build=true \ is_clang=false \ is_debug=false \ linux_use_bundled_binutils=false \ rtc_use_x11=true \ safe_browsing_mode=0 \ symbol_level=0 \ treat_warnings_as_errors=false \ use_allocator=\"none\" \ use_allocator_shim=false \ use_atk=false \ use_cups=false \ use_custom_libcxx=false \ use_dbus=false \ use_gio=false \ use_gnome_keyring=false \ use_gold=false \ use_jumbo_build=true \ jumbo_file_merge_limit=20 \ use_kerberos=false \ use_lld=false \ icu_use_data_file=false \ use_pulseaudio=false \ use_sysroot=false \ use_system_harfbuzz=true \ use_official_google_api_keys=false \ use_unofficial_version_number=false \ fieldtrial_testing_like_official_build=false # Clang is needed for this as well as additional patches/workarounds. # is_official_build=true for patch in *.patch; do patch -p1 < "$patch" done # Fix 'python2' shebangs. find . -type f -name \*.py -exec sed -i '1s|python$|&2|' {} \; # Use 'gcc' instead of 'clang'. export CC=gcc CXX=g++ LD=g++ AR=ar NM=nm export PATH=$PWD/fix-python-bin:$PATH # Make a temporary script to cause 'python' to resolve to python 2 and not 3. mkdir -p fix-python-bin cat << EOF > ./fix-python-bin/python #!/bin/sh exec python2 "\$@" EOF chmod +x ./fix-python-bin/python # Use system nodejs. mkdir -p third_party/node/linux/node-linux-x64/bin ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/ # Use system libraries. for dep in ffmpeg fontconfig harfbuzz-ng libdrm libevent libjpeg \ libpng libwebp libxml libxslt opus re2 snappy yasm; do find . -type f -path "*third_party/$dep/*" \ \! -path "*third_party/$dep/chromium/*" \ \! -path "*third_party/$dep/google/*" \ \! -path './base/third_party/icu/*' \ \! -path './third_party/pdfium/third_party/freetype/include/pstables.h' \ \! -path './third_party/yasm/run_yasm.py' \ \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \ -delete done # Switch to system provided dependencies. python2 build/linux/unbundle/replace_gn_files.py \ --system-libraries ffmpeg fontconfig harfbuzz-ng libdrm libevent libjpeg libpng libwebp libxml libxslt opus re2 snappy yasm python2 tools/gn/bootstrap/bootstrap.py -s -v --gn-gen-args "$*" # All shells seem to support this despite the lack of a POSIX spec for it. # shellcheck disable=2039 ulimit -n 2048 ||: out/Release/gn gen out/Release \ --script-executable=/usr/bin/python2 ninja -C out/Release chrome chromedriver cd out/Release for bin in chrome chromedriver *.bin; do install -Dm755 "$bin" "$pkg_dir/usr/lib/chromium/$bin" done mkdir -p "$pkg_dir/usr/bin" ln -s /usr/lib/chromium/chrome "$pkg_dir/usr/bin/chrome" ln -s /usr/lib/chromium/chromedriver "$pkg_dir/usr/bin/chromedriver"