#! /bin/bash -x set -xe #COOKIE=$(mcookie|cut -c-8); grep -v V_GREP_ME $0 > /dev/shm/runme-$COOKIE.sh ; sleep 0.3; exec bash /dev/shm/runme-$COOKIE.sh PKG=chromium VERSION=108.0.5359.94 BUILD=0 PREFIX=/pkg/$PKG-$VERSION-$BUILD if [ -n "$TESTING" ]; then PREFIX=/scratch/local2/$PKG-$VERSION-$BUILD ; fi umask 022 BUILD_TMPDIR=/scratch/local2/$PKG-$VERSION-$BUILD.build.tmp test -d $BUILD_TMPDIR && rm -rf $BUILD_TMPDIR mkdir -p $BUILD_TMPDIR/home export TMPDIR=$BUILD_TMPDIR export HOME=$BUILD_TMPDIR/home exec </dev/null mkdir -p $PREFIX cat >$PREFIX/profile <<-EOF PATH=$PREFIX/bin:\$PATH if [ -d $PREFIX/.compatlibs ]; then export LD_LIBRARY_PATH=$PREFIX/.compatlibs\${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH} ; fi EOF . $PREFIX/profile export MAKEFLAGS="-j $(nproc)" BUILDDIR=$PREFIX/build #source google API Zeug; wird benoetigt damit browser sync funktioniert dirname="$(dirname $0)" if [ -f ${dirname}/google_api_zeug ]; then #geht nur ohne COOKIE . ${dirname}/google_api_zeug elif [[ $0 == "/dev/shm/runme-"*".sh" ]]; then #muss ich mir nich was besseres ueberlegen . /home/schrader/git_zeug/pkg-scripts/google_api_zeug else echo "google_default_client_id, google_api_key und google_default_client_secret wird benoetigt, damit Browser Sync funktioniert(siehe HelmutSchmidtSeite)." exit 1 # uncomment if you want it with out api key fi mkdir -p $BUILDDIR cd $BUILDDIR # clean for rebuild if [ -d ${PKG}-${VERSION} ];then rm -rf ${PKG}-${VERSION} fi test -e ${PKG}-${VERSION}.tar.xz || wget https://commondatastorage.googleapis.com/${PKG}-browser-official/${PKG}-${VERSION}.tar.xz test -d ${PKG}-${VERSION} || tar xf ${PKG}-${VERSION}.tar.xz cd ${PKG}-${VERSION} #Create Directories for Build and Install test -d $PREFIX/bin || mkdir $PREFIX/bin test -d out || mkdir out mkdir -p third_party/node/linux/node-linux-x64/bin if [ ! -e third_party/node/linux/node-linux-x64/bin/node ]; then ln -s /pkg/node-16.16.0-0/bin/node third_party/node/linux/node-linux-x64/bin/ fi # Add essential proprietary codecs to the "chrome" branding of ffmpeg: cat /src/mariux/patches/chromium_ffmpeg_prop.patch | patch -p1 # Do not make the build fail, see Chromium issue #386097: python3 third_party/libaddressinput/chromium/tools/update-strings.py # Fix for: ERROR at //build/config/sysroot.gni:57:5: Assertion failed python3 build/linux/sysroot_scripts/install-sysroot.py --arch=amd64 # Generate the ninja build files: python3 tools/clang/scripts/update.py #Ensure that only this clang version is used export PATH=${BUILDDIR}/${PKG}-${VERSION}/third_party/llvm-build/Release+Asserts/bin:$PATH #ffmpeg and HEVC want to play together now :) cd third_party/ffmpeg FFMPEG_BRANDING=Chrome echo " +- Adding HEVC support..." FFMPEG_CUSTOM_ARGS="--enable-decoder=hevc --enable-demuxer=hevc --enable-parser=hevc" python3 chromium/scripts/build_ffmpeg.py linux x64 \ --branding ${FFMPEG_BRANDING} -- ${FFMPEG_CUSTOM_ARGS} chromium/scripts/copy_config.sh python3 chromium/scripts/generate_gn.py cd ${BUILDDIR}/${PKG}-${VERSION} python3 tools/gn/bootstrap/bootstrap.py _chromium_conf=( 'blink_enable_generated_code_formatting=false' 'blink_symbol_level=0' 'is_debug=false' #'remove_webcore_debug_symbols=true' 'use_gnome_keyring=true' 'treat_warnings_as_errors=false' 'enable_nacl=false' 'use_sysroot=true' 'is_official_build=true' 'fatal_linker_warnings=false' 'enable_platform_hevc=true' 'proprietary_codecs=true' 'enable_platform_ac3_eac3_audio=true' 'enable_platform_mpeg_h_audio=true' "ffmpeg_branding=\"${FFMPEG_BRANDING}\"" 'enable_precompiled_headers=false' "google_api_key=\"$google_api_key\"" "google_default_client_id=\"$google_default_client_id\"" "google_default_client_secret=\"$google_default_client_secret\"" 'enable_js_type_check=false' 'enable_vulkan=true' ) # make sure to use python3 source /pkg/python-3.9.7-0/profile out/Release/gn gen out/Release --args="${_chromium_conf[*]}" ninja -C out/Release pdf chrome chromedriver chrome_sandbox #ninja -C out/Release chrome install -D out/Release/chrome ${PREFIX}/bin/chrome2 install -m755 out/Release/chromedriver ${PREFIX}/bin/ install -m755 out/Release/chrome_sandbox ${PREFIX}/bin/ install -m755 out/Release/chrome_crashpad_handler ${PREFIX}/bin/ cp -a out/Release/*.pak ${PREFIX}/bin/ cp -a out/Release/*.so ${PREFIX}/bin/ cp -a out/Release/libvulkan.so.1 ${PREFIX}/bin/ cp -a out/Release/icudtl.dat ${PREFIX}/bin/ cp -a out/Release/locales ${PREFIX}/bin/ cp -a out/Release/angledata ${PREFIX}/bin/ install -m755 out/Release/vk_swiftshader_icd.json ${PREFIX}/bin/ for i in out/Release/{natives_blob.bin,snapshot_blob.bin,v8_context_snapshot.bin}; do if [ -f $i ]; then cp -a $i ${PREFIX}/bin/ fi done strip --strip-unneeded ${PREFIX}/bin/*.so strip --strip-unneeded ${PREFIX}/bin/chrome2 cat >$PREFIX/bin/chromium <<-EOF #!/usr/bin/bash $PREFIX/bin/chrome2 --password-store=basic \${@} EOF chmod a+x $PREFIX/bin/chromium cd $PREFIX/bin ln -s chromium chrome exit