Loading .gitignore +7 −0 Original line number Diff line number Diff line Loading @@ -4,3 +4,10 @@ /.vs /temp src/ apks/ _gclient_src*/ .ccache/ .cipd/ .gclient* depot_tools/ .gitlab-ci.yml 0 → 100644 +38 −0 Original line number Diff line number Diff line stages: - prepare - build variables: CONTAINER_IMAGE: registry.gitlab.e.foundation:5000/$CI_PROJECT_PATH GIT_SUBMODULE_STRATEGY: recursive build-docker: image: docker:19-git stage: prepare tags: - generic_privileged variables: DOCKER_DRIVER: overlay2 services: - docker:19-dind script: - echo "$CI_JOB_TOKEN" | docker login registry.gitlab.e.foundation:5000 -u gitlab-ci-token --password-stdin - docker pull $CONTAINER_IMAGE:latest || true - docker build --cache-from $CONTAINER_IMAGE:latest --tag $CONTAINER_IMAGE:latest ${CI_PROJECT_DIR} - docker push $CONTAINER_IMAGE:latest .build-bromite: image: $CONTAINER_IMAGE tags: - build-browser artifacts: name: "$CI_JOB_NAME" paths: - apks/* build-bromite-arm64: stage: build extends: .build-bromite script: - $CI_PROJECT_DIR/build.sh -c -s -a arm64 Dockerfile 0 → 100644 +49 −0 Original line number Diff line number Diff line FROM ubuntu:18.04 ENV CHROMIUM_DIR "/srv/chromium" ENV DEBIAN_FRONTEND noninteractive # Enable foreign architectures support RUN dpkg --print-architecture && \ dpkg --print-foreign-architectures RUN dpkg --add-architecture i386 && \ dpkg --print-foreign-architectures # Install required packages COPY packages.txt /packages.txt RUN apt-get -qq update && \ cat /packages.txt | xargs apt-get install -qqy RUN rm /packages.txt # Install and setup python 3.10 as default RUN add-apt-repository -y ppa:deadsnakes/ppa RUN apt-get -qq update && \ apt-get install -qqy --no-install-recommends \ python3.8 lib32z1 lighttpd xvfb libncurses5:i386 libstdc++6:i386 zlib1g:i386 ccache RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2 RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 RUN update-alternatives --set python3 /usr/bin/python3.8 # Install chromium build dependencies RUN curl -s https://raw.githubusercontent.com/chromium/chromium/main/build/install-build-deps.py \ | python3 - --no-syms --lib32 --no-arm --no-chromeos-fonts --no-nacl --no-prompt RUN apt-get -f install # Setup locale RUN localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 ENV LANG en_US.UTF-8 RUN git config --global user.name "John Doe" RUN git config --global user.email "johndoe@example.com" RUN mkdir ${CHROMIUM_DIR} WORKDIR ${CHROMIUM_DIR} ENTRYPOINT /bin/bash build.sh 0 → 100755 +192 −0 Original line number Diff line number Diff line #!/bin/bash set -e chromium_dir="${chromium_dir:-/srv/chromium}" root_dir=$(dirname "$(readlink -f "$0")") if [ ! -d "$chromium_dir" ]; then chromium_dir=$root_dir fi date_time=$(date '+%Y%m%d%H%M%S') chromium_version=$(head -n 1 "${root_dir}/build/RELEASE") chromium_code=$(echo "$chromium_version" | tr -d '.' | cut -c5-) clean=0 gsync=0 history=1 arch="" usage() { echo "Usage:" echo " $(basename $(readlink -nf $0)) [ options ]" echo echo " Options:" echo " -a <arch> Build specified arch" echo " -c Clean" echo " -h Show this message" echo " -s Sync without history" echo exit 1 } build() { echo ">> [$(date)] Head commit: $(git show -s --format=%s)" apks="ChromePublic" build_args="$(cat "${root_dir}"/build/bromite.gn_args) target_cpu=\"${1}\" " add_args=( "generate_linker_map=true" "use_relative_vtables_abi=false" "cc_wrapper=\"ccache\"" ) # Add to build_args for var in "${add_args[@]}"; do build_args+=" $var" done code=$chromium_code if [ $1 '==' "arm" ]; then code+=00 elif [ $1 '==' "arm64" ]; then code+=50 elif [ $1 '==' "x86" ]; then code+=10 elif [ $1 '==' "x64" ]; then code+=60 fi build_args+=' android_default_version_name="'$chromium_version'"' build_args+=' android_default_version_code="'$code'"' if [ $clean -eq 1 ] && [ -d "out/$1" ]; then rm -rf "out/$1" fi echo ">> [$(date)] Building chromium $chromium_version for $1" gn gen "out/$1" --args="$build_args" ninja -C out/$1 chrome_public_apk for apk in $apks; do if [ -f "out/${1}/apks/$apk.apk" ]; then echo ">> [$(date)] Moving $apk for ${1} to output folder" if [[ "$apk.apk" == ChromePublic.apk ]]; then if [ "$1" = "x64" ]; then mv "out/${1}/apks/ChromePublic.apk" "${root_dir}/apks/$date_time/x86_64/ChromePublic.apk" else mv "out/${1}/apks/ChromePublic.apk" "${root_dir}/apks/$date_time/${1}/ChromePublic.apk" fi fi fi done } setup_ccache() { echo ">> [$(date)] Settings up ccache" export USE_CCACHE=1 export CCACHE_EXEC=$(command -v ccache) export PATH=$chromium_dir/src/third_party/llvm-build/Release+Asserts/bin:$PATH export CCACHE_CPP2=yes export CCACHE_SLOPPINESS=time_macros export CCACHE_DIR=$chromium_dir/.ccache ccache -M 200G } patch() { cd $chromium_dir/src echo ">> [$(date)] Applying bromite patches" patches_list=$(cat "${root_dir}/build/bromite_patches_list.txt") for file in $patches_list; do git am -3 --ignore-whitespace "${root_dir}/build/patches/$file" done } sync() { echo ">> [$(date)] Syncing chromium $chromium_version" cd $chromium_dir if [ $history -eq 1 ]; then yes | gclient sync -D -R -r $chromium_version else yes | gclient sync --no-history -D -R -r $chromium_version fi patch } init_repo(){ echo ">> [$(date)] Init chromium $chromium_version" cd $chromium_dir rm -rf .gclient* if [ $history -eq 1 ]; then fetch android else fetch --no-history android fi } while getopts ":a:chr:s" opt; do case $opt in a) arch="$OPTARG" ;; c) clean=1 ;; h) usage ;; s) gsync=1 && history=0 ;; :) echo "Option -$OPTARG requires an argument" echo usage ;; \?) echo "Invalid option:-$OPTARG" echo usage ;; esac done shift $((OPTIND - 1)) # Add depot_tools to PATH if [ ! -d "$chromium_dir/depot_tools" ]; then git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git "$chromium_dir/depot_tools" fi export PATH="$chromium_dir/depot_tools:$PATH" if [ $clean -eq 1 ]; then echo ">> [$(date)] Cleaning chromium source code" if [ -d "$chromium_dir/src" ]; then cd $chromium_dir/src git reset --hard && git clean -xfdf fi fi if [ ! -d "$chromium_dir/src" ]; then init_repo sync fi if [ $gsync -eq 1 ]; then if [ -d "$chromium_dir/src/.git/rebase-apply" ]; then rm -fr "$chromium_dir/src/.git/rebase-apply" fi find "$chromium_dir/src/.git" -name "*.lock" -delete if [ ! -z $(find $chromium_dir/src/.git -name "*.lock") ]; then rm -fr $chromium_dir/src init_repo fi sync fi mkdir -p "${root_dir}/apks/$date_time/x86_64" "${root_dir}/apks/$date_time/arm64" "${root_dir}/apks/$date_time/x86" "${root_dir}/apks/$date_time/arm" cd $chromium_dir/src . build/android/envsetup.sh setup_ccache if [ ! -z "$arch" ]; then build $arch else build arm build arm64 build x86 build x64 fi if [ -d "${root_dir}/apks" ]; then find "${root_dir}/apks" -empty -type d -delete fi packages.txt 0 → 100644 +785 −0 Original line number Diff line number Diff line adwaita-icon-theme apache2 apache2-bin apache2-data apache2-utils at at-spi2-core autoconf automake autopoint autotools-dev binutils-aarch64-linux-gnu binutils-arm-linux-gnueabihf binutils-mips64el-linux-gnuabi64 binutils-mipsel-linux-gnu bison bsdmainutils build-essential bzip2-doc cdbs comerr-dev curl dbus dbus-x11 dconf-gsettings-backend dconf-service dctrl-tools debhelper debugedit devscripts dh-autoreconf dh-strip-nondeterminism dh-translations diffstat dirmngr dpkg-dev dput elfutils fakeroot flex fontconfig fontconfig-config fonts-dejavu-core fonts-lato gdal-data gettext gettext-base giblib1 gir1.2-appindicator3-0.1 gir1.2-atk-1.0 gir1.2-atspi-2.0 gir1.2-dbusmenu-glib-0.4 gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0 gir1.2-gnomekeyring-1.0 gir1.2-gtk-3.0 gir1.2-harfbuzz-0.0 gir1.2-pango-1.0 git git-svn glib-networking glib-networking-common glib-networking-services gnome-icon-theme gnupg gnupg-l10n gnupg-utils gperf gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm groff-base gsettings-desktop-schemas gtk-update-icon-cache hicolor-icon-theme humanity-icon-theme i965-va-driver ibverbs-providers icu-devtools intltool intltool-debian iso-codes javascript-common jq krb5-multidev libaacs0 libaec0 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libapache2-mod-php7.2 libapparmor1 libappindicator3-1 libappindicator3-dev libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libapt-inst2.0 libapt-pkg-perl libarchive-cpio-perl libarchive-zip-perl libarchive13 libargon2-0 libarmadillo8 libarpack2 libasm1 libasound2 libasound2-data libasound2-dev libassuan0 libasyncns0 libatk-bridge2.0-0 libatk-bridge2.0-dev libatk1.0-0 libatk1.0-data libatk1.0-dev libatspi2.0-0 libatspi2.0-dev libauthen-sasl-perl libavahi-client3 libavahi-common-data libavahi-common3 libavcodec57 libavformat57 libavutil55 libb-hooks-endofscope-perl libb-hooks-op-check-perl libbdplus0 libbison-dev libblas3 libbluetooth-dev libbluetooth3 libbluray2 libbrlapi-dev libbrlapi0.6 libbz2-dev libcairo-gobject2 libcairo-script-interpreter2 libcairo2 libcairo2-dev libcap-dev libcap2 libcgi-fast-perl libcgi-pm-perl libcharls1 libchromaprint1 libclass-accessor-perl libclass-method-modifiers-perl libclass-xsaccessor-perl libclone-perl libcolord2 libcroco3 libcrystalhd3 libcups2 libcups2-dev libcupsfilters-dev libcupsfilters1 libcupsimage2 libcupsimage2-dev libcurl4-gnutls-dev libdap25 libdapclient6v5 libdata-dump-perl libdata-optlist-perl libdatrie1 libdbus-1-3 libdbus-1-dev libdbus-glib-1-2 libdbus-glib-1-dev libdbusmenu-glib-dev libdbusmenu-glib4 libdbusmenu-gtk3-4 libdc1394-22 libdconf1 libdevel-callchecker-perl libdevel-globaldestruction-perl libdigest-hmac-perl libdistro-info-perl libdpkg-perl libdrm-amdgpu1 libdrm-common libdrm-dev libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm2 libdw1 libdynaloader-functions-perl libegl-mesa0 libegl1 libegl1-mesa-dev libelf-dev libelf1 libemail-valid-perl libencode-locale-perl libepoxy-dev libepoxy0 libepsilon1 libexif12 libexpat1-dev libexporter-tiny-perl libfabric1 libfakeroot libfcgi-perl libffi-dev libfile-basedir-perl libfile-chdir-perl libfile-fcntllock-perl libfile-homedir-perl libfile-listing-perl libfile-stripnondeterminism-perl libfile-which-perl libfl-dev libfl2 libflac8 libfm-extra4 libfont-afm-perl libfontconfig1 libfontconfig1-dev libfontenc1 libfreetype6 libfreetype6-dev libfreexl1 libfyba0 libgail-common libgail18 libgbm-dev libgbm1 libgd3 libgdal20 libgdcm2.8 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common libgdk-pixbuf2.0-dev libgeos-3.6.2 libgeos-c1v5 libgeotiff2 libgetopt-long-descriptive-perl libgfortran4 libgif7 libgirepository-1.0-1 libgit-wrapper-perl libgl1 libgl1-mesa-dev libgl1-mesa-dri libgl2ps1.4 libglapi-mesa libgles1 libgles2 libglib2.0-0 libglib2.0-bin libglib2.0-data libglib2.0-dev libglib2.0-dev-bin libglu1-mesa libglu1-mesa-dev libglvnd-core-dev libglvnd-dev libglvnd0 libglx-mesa0 libglx0 libgme0 libgnome-keyring-common libgnome-keyring-dev libgnome-keyring0 libgpgme11 libgphoto2-6 libgphoto2-l10n libgphoto2-port12 libgraphite2-3 libgraphite2-dev libgsm1 libgssrpc4 libgtk-3-0 libgtk-3-bin libgtk-3-common libgtk-3-dev libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libharfbuzz-dev libharfbuzz-gobject0 libharfbuzz-icu0 libharfbuzz0b libhdf4-0-alt libhdf5-100 libhdf5-openmpi-100 libhtml-form-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libhwloc-plugins libhwloc5 libibverbs1 libice-dev libice6 libicu-dev libicu-le-hb-dev libicu-le-hb0 libicu60 libiculx60 libid3tag0 libilmbase12 libimlib2 libimport-into-perl libindicator3-7 libio-html-perl libio-pty-perl libio-socket-inet6-perl libio-socket-ssl-perl libio-string-perl libio-stringy-perl libipc-run-perl libipc-system-simple-perl libjbig-dev libjbig0 libjpeg-dev libjpeg-turbo8 libjpeg-turbo8-dev libjpeg8 libjpeg8-dev libjq1 libjs-jquery libjs-sphinxdoc libjs-underscore libjson-c3 libjson-glib-1.0-0 libjson-glib-1.0-common libjsoncpp1 libkadm5clnt-mit11 libkadm5srv-mit11 libkdb5-9 libkmlbase1 libkmldom1 libkmlengine1 libkrb5-dev libksba8 liblapack3 liblcms2-2 liblept5 liblist-compare-perl liblist-moreutils-perl libllvm7 liblocale-gettext-perl libltdl-dev libltdl7 liblua5.2-0 liblwp-mediatypes-perl liblwp-protocol-https-perl liblzma-dev liblzo2-2 libmail-sendmail-perl libmailtools-perl libmenu-cache-bin libmenu-cache3 libminizip1 libmodule-implementation-perl libmodule-runtime-perl libmoo-perl libmp3lame0 libmpg123-0 libmysqlclient20 libnamespace-clean-perl libnet-dns-perl libnet-domain-tld-perl libnet-http-perl libnet-ip-perl libnet-smtp-ssl-perl libnet-ssleay-perl libnetcdf-c++4 libnetcdf13 libnl-3-200 libnl-route-3-200 libnpth0 libnspr4 libnspr4-dev libnss3 libnss3-dev libnuma1 libnumber-compare-perl libnumber-range-perl libobrender32v5 libobt2v5 libodbc1 libogdi3.2 libogg0 libonig4 libopencv-calib3d3.2 libopencv-contrib3.2 libopencv-core3.2 libopencv-features2d3.2 libopencv-flann3.2 libopencv-highgui3.2 libopencv-imgcodecs3.2 libopencv-imgproc3.2 libopencv-ml3.2 libopencv-objdetect3.2 libopencv-photo3.2 libopencv-shape3.2 libopencv-stitching3.2 libopencv-superres3.2 libopencv-video3.2 libopencv-videoio3.2 libopencv-videostab3.2 libopencv-viz3.2 libopenexr22 libopengl0 libopenjp2-7 libopenmpi2 libopenmpt0 libopus0 libpackage-stash-perl libpackage-stash-xs-perl libpam0g-dev libpango-1.0-0 libpango1.0-0 libpango1.0-dev libpangocairo-1.0-0 libpangoft2-1.0-0 libpangox-1.0-0 libpangoxft-1.0-0 libparams-classify-perl libparams-util-perl libparams-validate-perl libparse-debianchangelog-perl libpath-iterator-rule-perl libpath-tiny-perl libpci-dev libpci3 libpciaccess0 libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libperlio-gzip-perl libpipeline1 libpixman-1-0 libpixman-1-dev libpng-dev libpng-tools libpng16-16 libpod-constants-perl libpoppler73 libpopt0 libpq5 libproj12 libproxy1v5 libpsm-infinipath1 libpthread-stubs0-dev libpulse-dev libpulse-mainloop-glib0 libpulse0 libpython-dev libpython2.7 libpython2.7-dev libqhull7 libraw1394-11 librdmacm1 libregexp-pattern-license-perl librest-0.7-0 librole-tiny-perl librpm8 librpmbuild8 librpmio8 librpmsign8 librsvg2-2 librsvg2-common libruby2.5 libsctp-dev libsctp1 libsensors4 libserf-1-1 libshine3 libsigsegv2 libsm-dev libsm6 libsnappy1v5 libsndfile1 libsocket++1 libsocket6-perl libsodium23 libsort-key-perl libsort-versions-perl libsoup-gnome2.4-1 libsoup2.4-1 libsoxr0 libspatialite7 libspeechd-dev libspeechd2 libspeex1 libsqlite3-dev libssh-gcrypt-4 libssl-dev libssl-doc libstartup-notification0 libstrictures-perl libstring-copyright-perl libstring-escape-perl libsub-exporter-perl libsub-exporter-progressive-perl libsub-identify-perl libsub-install-perl libsub-name-perl libsub-quote-perl libsuperlu5 libsvn-perl libsvn1 libswresample2 libswscale4 libsys-hostname-long-perl libsz2 libtbb2 libtcl8.6 libterm-readkey-perl libtesseract4 libtext-glob-perl libtext-levenshtein-perl libthai-data libthai0 libtheora0 libtiff-dev libtiff5 libtiff5-dev libtiffxx5 libtimedate-perl libtk8.6 libtool libtry-tiny-perl libtwolame0 libudev-dev libunicode-utf8-perl libunwind8 liburi-perl liburiparser1 libusb-1.0-0 libva-drm2 libva-x11-2 libva2 libvariable-magic-perl libvdpau1 libvorbis0a libvorbisenc2 libvorbisfile3 libvpx5 libvtk6.3 libwavpack1 libwayland-bin libwayland-client0 libwayland-cursor0 libwayland-dev libwayland-egl1 libwayland-egl1-mesa libwayland-server0 libwebp6 libwebpmux3 libwrap0 libwww-perl libwww-robotrules-perl libx11-dev libx11-doc libx11-xcb-dev libx11-xcb1 libx264-152 libx265-146 libxau-dev libxaw7 libxcb-dri2-0 libxcb-dri2-0-dev libxcb-dri3-0 libxcb-dri3-dev libxcb-glx0 libxcb-glx0-dev libxcb-present-dev libxcb-present0 libxcb-randr0 libxcb-randr0-dev libxcb-render0 libxcb-render0-dev libxcb-shape0 libxcb-shape0-dev libxcb-shm0 libxcb-shm0-dev libxcb-sync-dev libxcb-sync1 libxcb-util1 libxcb-xfixes0 libxcb-xfixes0-dev libxcb1-dev libxcomposite-dev libxcomposite1 libxcursor-dev libxcursor1 libxdamage-dev libxdamage1 libxdmcp-dev libxerces-c3.2 libxext-dev libxfixes-dev libxfixes3 libxft-dev libxft2 libxi-dev libxi6 libxinerama-dev libxinerama1 libxkbcommon-dev libxkbcommon0 libxml-libxml-perl libxml-namespacesupport-perl libxml-parser-perl libxml-sax-base-perl libxml-sax-expat-perl libxml-sax-perl libxml-simple-perl libxml2 libxml2-dev libxmu6 libxpm4 libxrandr-dev libxrandr2 libxrender-dev libxrender1 libxshmfence-dev libxshmfence1 libxslt1-dev libxslt1.1 libxss-dev libxss1 libxt-dev libxt6 libxtst-dev libxtst6 libxv1 libxvidcore4 libxxf86dga1 libxxf86vm-dev libxxf86vm1 libyaml-0-2 libyaml-libyaml-perl libyaml-perl libzvbi-common libzvbi0 licensecheck lintian lsb-release locales lxmenu-data g++-multilib gcc-multilib m4 make man-db mesa-common-dev mesa-va-drivers mesa-vdpau-drivers mysql-common obconf obsession ocl-icd-libopencl1 odbcinst odbcinst1debian2 openbox openbox-menu openmpi-bin openmpi-common p7zip patchutils perl-openssl-defaults php-common php7.2-cgi php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-readline pinentry-curses pkg-config po-debconf poppler-data proj-bin proj-data psmisc python python-apt-common python-asn1crypto python-cffi-backend python-cherrypy3 python-crypto python-cryptography python-dev python-enum34 python-idna python-ipaddress python-numpy python-opencv python-openssl python-pkg-resources python-psutil python-repoze.lru python-routes python-simplejson python-six python-webob python-yaml python2.7-dev python3-apt python3-certifi python3-chardet python3-debian python3-distutils python3-gpg python3-idna python3-lib2to3 python3-magic python3-pkg-resources python3-requests python3-scour python3-six python3-unidiff python3-urllib3 python3-xdg rake rpm rpm-common rpm2cpio ruby ruby-did-you-mean ruby-minitest ruby-net-telnet ruby-power-assert ruby-test-unit ruby2.5 rubygems-integration scour scrot shared-mime-info software-properties-common ssl-cert strace sudo subversion t1utils tzdata ubuntu-mono ucf unzip uuid-dev va-driver-all vdpau-driver-all wayland-protocols wdiff wget x11-common x11-utils x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-dev x11proto-fixes-dev x11proto-input-dev x11proto-randr-dev x11proto-record-dev x11proto-scrnsaver-dev x11proto-xext-dev x11proto-xf86vidmode-dev x11proto-xinerama-dev xcompmgr xdg-user-dirs xkb-data xorg-sgml-doctools xtrans-dev zip zlib1g-dev Loading
.gitignore +7 −0 Original line number Diff line number Diff line Loading @@ -4,3 +4,10 @@ /.vs /temp src/ apks/ _gclient_src*/ .ccache/ .cipd/ .gclient* depot_tools/
.gitlab-ci.yml 0 → 100644 +38 −0 Original line number Diff line number Diff line stages: - prepare - build variables: CONTAINER_IMAGE: registry.gitlab.e.foundation:5000/$CI_PROJECT_PATH GIT_SUBMODULE_STRATEGY: recursive build-docker: image: docker:19-git stage: prepare tags: - generic_privileged variables: DOCKER_DRIVER: overlay2 services: - docker:19-dind script: - echo "$CI_JOB_TOKEN" | docker login registry.gitlab.e.foundation:5000 -u gitlab-ci-token --password-stdin - docker pull $CONTAINER_IMAGE:latest || true - docker build --cache-from $CONTAINER_IMAGE:latest --tag $CONTAINER_IMAGE:latest ${CI_PROJECT_DIR} - docker push $CONTAINER_IMAGE:latest .build-bromite: image: $CONTAINER_IMAGE tags: - build-browser artifacts: name: "$CI_JOB_NAME" paths: - apks/* build-bromite-arm64: stage: build extends: .build-bromite script: - $CI_PROJECT_DIR/build.sh -c -s -a arm64
Dockerfile 0 → 100644 +49 −0 Original line number Diff line number Diff line FROM ubuntu:18.04 ENV CHROMIUM_DIR "/srv/chromium" ENV DEBIAN_FRONTEND noninteractive # Enable foreign architectures support RUN dpkg --print-architecture && \ dpkg --print-foreign-architectures RUN dpkg --add-architecture i386 && \ dpkg --print-foreign-architectures # Install required packages COPY packages.txt /packages.txt RUN apt-get -qq update && \ cat /packages.txt | xargs apt-get install -qqy RUN rm /packages.txt # Install and setup python 3.10 as default RUN add-apt-repository -y ppa:deadsnakes/ppa RUN apt-get -qq update && \ apt-get install -qqy --no-install-recommends \ python3.8 lib32z1 lighttpd xvfb libncurses5:i386 libstdc++6:i386 zlib1g:i386 ccache RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2 RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 RUN update-alternatives --set python3 /usr/bin/python3.8 # Install chromium build dependencies RUN curl -s https://raw.githubusercontent.com/chromium/chromium/main/build/install-build-deps.py \ | python3 - --no-syms --lib32 --no-arm --no-chromeos-fonts --no-nacl --no-prompt RUN apt-get -f install # Setup locale RUN localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 ENV LANG en_US.UTF-8 RUN git config --global user.name "John Doe" RUN git config --global user.email "johndoe@example.com" RUN mkdir ${CHROMIUM_DIR} WORKDIR ${CHROMIUM_DIR} ENTRYPOINT /bin/bash
build.sh 0 → 100755 +192 −0 Original line number Diff line number Diff line #!/bin/bash set -e chromium_dir="${chromium_dir:-/srv/chromium}" root_dir=$(dirname "$(readlink -f "$0")") if [ ! -d "$chromium_dir" ]; then chromium_dir=$root_dir fi date_time=$(date '+%Y%m%d%H%M%S') chromium_version=$(head -n 1 "${root_dir}/build/RELEASE") chromium_code=$(echo "$chromium_version" | tr -d '.' | cut -c5-) clean=0 gsync=0 history=1 arch="" usage() { echo "Usage:" echo " $(basename $(readlink -nf $0)) [ options ]" echo echo " Options:" echo " -a <arch> Build specified arch" echo " -c Clean" echo " -h Show this message" echo " -s Sync without history" echo exit 1 } build() { echo ">> [$(date)] Head commit: $(git show -s --format=%s)" apks="ChromePublic" build_args="$(cat "${root_dir}"/build/bromite.gn_args) target_cpu=\"${1}\" " add_args=( "generate_linker_map=true" "use_relative_vtables_abi=false" "cc_wrapper=\"ccache\"" ) # Add to build_args for var in "${add_args[@]}"; do build_args+=" $var" done code=$chromium_code if [ $1 '==' "arm" ]; then code+=00 elif [ $1 '==' "arm64" ]; then code+=50 elif [ $1 '==' "x86" ]; then code+=10 elif [ $1 '==' "x64" ]; then code+=60 fi build_args+=' android_default_version_name="'$chromium_version'"' build_args+=' android_default_version_code="'$code'"' if [ $clean -eq 1 ] && [ -d "out/$1" ]; then rm -rf "out/$1" fi echo ">> [$(date)] Building chromium $chromium_version for $1" gn gen "out/$1" --args="$build_args" ninja -C out/$1 chrome_public_apk for apk in $apks; do if [ -f "out/${1}/apks/$apk.apk" ]; then echo ">> [$(date)] Moving $apk for ${1} to output folder" if [[ "$apk.apk" == ChromePublic.apk ]]; then if [ "$1" = "x64" ]; then mv "out/${1}/apks/ChromePublic.apk" "${root_dir}/apks/$date_time/x86_64/ChromePublic.apk" else mv "out/${1}/apks/ChromePublic.apk" "${root_dir}/apks/$date_time/${1}/ChromePublic.apk" fi fi fi done } setup_ccache() { echo ">> [$(date)] Settings up ccache" export USE_CCACHE=1 export CCACHE_EXEC=$(command -v ccache) export PATH=$chromium_dir/src/third_party/llvm-build/Release+Asserts/bin:$PATH export CCACHE_CPP2=yes export CCACHE_SLOPPINESS=time_macros export CCACHE_DIR=$chromium_dir/.ccache ccache -M 200G } patch() { cd $chromium_dir/src echo ">> [$(date)] Applying bromite patches" patches_list=$(cat "${root_dir}/build/bromite_patches_list.txt") for file in $patches_list; do git am -3 --ignore-whitespace "${root_dir}/build/patches/$file" done } sync() { echo ">> [$(date)] Syncing chromium $chromium_version" cd $chromium_dir if [ $history -eq 1 ]; then yes | gclient sync -D -R -r $chromium_version else yes | gclient sync --no-history -D -R -r $chromium_version fi patch } init_repo(){ echo ">> [$(date)] Init chromium $chromium_version" cd $chromium_dir rm -rf .gclient* if [ $history -eq 1 ]; then fetch android else fetch --no-history android fi } while getopts ":a:chr:s" opt; do case $opt in a) arch="$OPTARG" ;; c) clean=1 ;; h) usage ;; s) gsync=1 && history=0 ;; :) echo "Option -$OPTARG requires an argument" echo usage ;; \?) echo "Invalid option:-$OPTARG" echo usage ;; esac done shift $((OPTIND - 1)) # Add depot_tools to PATH if [ ! -d "$chromium_dir/depot_tools" ]; then git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git "$chromium_dir/depot_tools" fi export PATH="$chromium_dir/depot_tools:$PATH" if [ $clean -eq 1 ]; then echo ">> [$(date)] Cleaning chromium source code" if [ -d "$chromium_dir/src" ]; then cd $chromium_dir/src git reset --hard && git clean -xfdf fi fi if [ ! -d "$chromium_dir/src" ]; then init_repo sync fi if [ $gsync -eq 1 ]; then if [ -d "$chromium_dir/src/.git/rebase-apply" ]; then rm -fr "$chromium_dir/src/.git/rebase-apply" fi find "$chromium_dir/src/.git" -name "*.lock" -delete if [ ! -z $(find $chromium_dir/src/.git -name "*.lock") ]; then rm -fr $chromium_dir/src init_repo fi sync fi mkdir -p "${root_dir}/apks/$date_time/x86_64" "${root_dir}/apks/$date_time/arm64" "${root_dir}/apks/$date_time/x86" "${root_dir}/apks/$date_time/arm" cd $chromium_dir/src . build/android/envsetup.sh setup_ccache if [ ! -z "$arch" ]; then build $arch else build arm build arm64 build x86 build x64 fi if [ -d "${root_dir}/apks" ]; then find "${root_dir}/apks" -empty -type d -delete fi
packages.txt 0 → 100644 +785 −0 Original line number Diff line number Diff line adwaita-icon-theme apache2 apache2-bin apache2-data apache2-utils at at-spi2-core autoconf automake autopoint autotools-dev binutils-aarch64-linux-gnu binutils-arm-linux-gnueabihf binutils-mips64el-linux-gnuabi64 binutils-mipsel-linux-gnu bison bsdmainutils build-essential bzip2-doc cdbs comerr-dev curl dbus dbus-x11 dconf-gsettings-backend dconf-service dctrl-tools debhelper debugedit devscripts dh-autoreconf dh-strip-nondeterminism dh-translations diffstat dirmngr dpkg-dev dput elfutils fakeroot flex fontconfig fontconfig-config fonts-dejavu-core fonts-lato gdal-data gettext gettext-base giblib1 gir1.2-appindicator3-0.1 gir1.2-atk-1.0 gir1.2-atspi-2.0 gir1.2-dbusmenu-glib-0.4 gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0 gir1.2-gnomekeyring-1.0 gir1.2-gtk-3.0 gir1.2-harfbuzz-0.0 gir1.2-pango-1.0 git git-svn glib-networking glib-networking-common glib-networking-services gnome-icon-theme gnupg gnupg-l10n gnupg-utils gperf gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm groff-base gsettings-desktop-schemas gtk-update-icon-cache hicolor-icon-theme humanity-icon-theme i965-va-driver ibverbs-providers icu-devtools intltool intltool-debian iso-codes javascript-common jq krb5-multidev libaacs0 libaec0 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libapache2-mod-php7.2 libapparmor1 libappindicator3-1 libappindicator3-dev libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libapt-inst2.0 libapt-pkg-perl libarchive-cpio-perl libarchive-zip-perl libarchive13 libargon2-0 libarmadillo8 libarpack2 libasm1 libasound2 libasound2-data libasound2-dev libassuan0 libasyncns0 libatk-bridge2.0-0 libatk-bridge2.0-dev libatk1.0-0 libatk1.0-data libatk1.0-dev libatspi2.0-0 libatspi2.0-dev libauthen-sasl-perl libavahi-client3 libavahi-common-data libavahi-common3 libavcodec57 libavformat57 libavutil55 libb-hooks-endofscope-perl libb-hooks-op-check-perl libbdplus0 libbison-dev libblas3 libbluetooth-dev libbluetooth3 libbluray2 libbrlapi-dev libbrlapi0.6 libbz2-dev libcairo-gobject2 libcairo-script-interpreter2 libcairo2 libcairo2-dev libcap-dev libcap2 libcgi-fast-perl libcgi-pm-perl libcharls1 libchromaprint1 libclass-accessor-perl libclass-method-modifiers-perl libclass-xsaccessor-perl libclone-perl libcolord2 libcroco3 libcrystalhd3 libcups2 libcups2-dev libcupsfilters-dev libcupsfilters1 libcupsimage2 libcupsimage2-dev libcurl4-gnutls-dev libdap25 libdapclient6v5 libdata-dump-perl libdata-optlist-perl libdatrie1 libdbus-1-3 libdbus-1-dev libdbus-glib-1-2 libdbus-glib-1-dev libdbusmenu-glib-dev libdbusmenu-glib4 libdbusmenu-gtk3-4 libdc1394-22 libdconf1 libdevel-callchecker-perl libdevel-globaldestruction-perl libdigest-hmac-perl libdistro-info-perl libdpkg-perl libdrm-amdgpu1 libdrm-common libdrm-dev libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm2 libdw1 libdynaloader-functions-perl libegl-mesa0 libegl1 libegl1-mesa-dev libelf-dev libelf1 libemail-valid-perl libencode-locale-perl libepoxy-dev libepoxy0 libepsilon1 libexif12 libexpat1-dev libexporter-tiny-perl libfabric1 libfakeroot libfcgi-perl libffi-dev libfile-basedir-perl libfile-chdir-perl libfile-fcntllock-perl libfile-homedir-perl libfile-listing-perl libfile-stripnondeterminism-perl libfile-which-perl libfl-dev libfl2 libflac8 libfm-extra4 libfont-afm-perl libfontconfig1 libfontconfig1-dev libfontenc1 libfreetype6 libfreetype6-dev libfreexl1 libfyba0 libgail-common libgail18 libgbm-dev libgbm1 libgd3 libgdal20 libgdcm2.8 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common libgdk-pixbuf2.0-dev libgeos-3.6.2 libgeos-c1v5 libgeotiff2 libgetopt-long-descriptive-perl libgfortran4 libgif7 libgirepository-1.0-1 libgit-wrapper-perl libgl1 libgl1-mesa-dev libgl1-mesa-dri libgl2ps1.4 libglapi-mesa libgles1 libgles2 libglib2.0-0 libglib2.0-bin libglib2.0-data libglib2.0-dev libglib2.0-dev-bin libglu1-mesa libglu1-mesa-dev libglvnd-core-dev libglvnd-dev libglvnd0 libglx-mesa0 libglx0 libgme0 libgnome-keyring-common libgnome-keyring-dev libgnome-keyring0 libgpgme11 libgphoto2-6 libgphoto2-l10n libgphoto2-port12 libgraphite2-3 libgraphite2-dev libgsm1 libgssrpc4 libgtk-3-0 libgtk-3-bin libgtk-3-common libgtk-3-dev libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libharfbuzz-dev libharfbuzz-gobject0 libharfbuzz-icu0 libharfbuzz0b libhdf4-0-alt libhdf5-100 libhdf5-openmpi-100 libhtml-form-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libhwloc-plugins libhwloc5 libibverbs1 libice-dev libice6 libicu-dev libicu-le-hb-dev libicu-le-hb0 libicu60 libiculx60 libid3tag0 libilmbase12 libimlib2 libimport-into-perl libindicator3-7 libio-html-perl libio-pty-perl libio-socket-inet6-perl libio-socket-ssl-perl libio-string-perl libio-stringy-perl libipc-run-perl libipc-system-simple-perl libjbig-dev libjbig0 libjpeg-dev libjpeg-turbo8 libjpeg-turbo8-dev libjpeg8 libjpeg8-dev libjq1 libjs-jquery libjs-sphinxdoc libjs-underscore libjson-c3 libjson-glib-1.0-0 libjson-glib-1.0-common libjsoncpp1 libkadm5clnt-mit11 libkadm5srv-mit11 libkdb5-9 libkmlbase1 libkmldom1 libkmlengine1 libkrb5-dev libksba8 liblapack3 liblcms2-2 liblept5 liblist-compare-perl liblist-moreutils-perl libllvm7 liblocale-gettext-perl libltdl-dev libltdl7 liblua5.2-0 liblwp-mediatypes-perl liblwp-protocol-https-perl liblzma-dev liblzo2-2 libmail-sendmail-perl libmailtools-perl libmenu-cache-bin libmenu-cache3 libminizip1 libmodule-implementation-perl libmodule-runtime-perl libmoo-perl libmp3lame0 libmpg123-0 libmysqlclient20 libnamespace-clean-perl libnet-dns-perl libnet-domain-tld-perl libnet-http-perl libnet-ip-perl libnet-smtp-ssl-perl libnet-ssleay-perl libnetcdf-c++4 libnetcdf13 libnl-3-200 libnl-route-3-200 libnpth0 libnspr4 libnspr4-dev libnss3 libnss3-dev libnuma1 libnumber-compare-perl libnumber-range-perl libobrender32v5 libobt2v5 libodbc1 libogdi3.2 libogg0 libonig4 libopencv-calib3d3.2 libopencv-contrib3.2 libopencv-core3.2 libopencv-features2d3.2 libopencv-flann3.2 libopencv-highgui3.2 libopencv-imgcodecs3.2 libopencv-imgproc3.2 libopencv-ml3.2 libopencv-objdetect3.2 libopencv-photo3.2 libopencv-shape3.2 libopencv-stitching3.2 libopencv-superres3.2 libopencv-video3.2 libopencv-videoio3.2 libopencv-videostab3.2 libopencv-viz3.2 libopenexr22 libopengl0 libopenjp2-7 libopenmpi2 libopenmpt0 libopus0 libpackage-stash-perl libpackage-stash-xs-perl libpam0g-dev libpango-1.0-0 libpango1.0-0 libpango1.0-dev libpangocairo-1.0-0 libpangoft2-1.0-0 libpangox-1.0-0 libpangoxft-1.0-0 libparams-classify-perl libparams-util-perl libparams-validate-perl libparse-debianchangelog-perl libpath-iterator-rule-perl libpath-tiny-perl libpci-dev libpci3 libpciaccess0 libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libperlio-gzip-perl libpipeline1 libpixman-1-0 libpixman-1-dev libpng-dev libpng-tools libpng16-16 libpod-constants-perl libpoppler73 libpopt0 libpq5 libproj12 libproxy1v5 libpsm-infinipath1 libpthread-stubs0-dev libpulse-dev libpulse-mainloop-glib0 libpulse0 libpython-dev libpython2.7 libpython2.7-dev libqhull7 libraw1394-11 librdmacm1 libregexp-pattern-license-perl librest-0.7-0 librole-tiny-perl librpm8 librpmbuild8 librpmio8 librpmsign8 librsvg2-2 librsvg2-common libruby2.5 libsctp-dev libsctp1 libsensors4 libserf-1-1 libshine3 libsigsegv2 libsm-dev libsm6 libsnappy1v5 libsndfile1 libsocket++1 libsocket6-perl libsodium23 libsort-key-perl libsort-versions-perl libsoup-gnome2.4-1 libsoup2.4-1 libsoxr0 libspatialite7 libspeechd-dev libspeechd2 libspeex1 libsqlite3-dev libssh-gcrypt-4 libssl-dev libssl-doc libstartup-notification0 libstrictures-perl libstring-copyright-perl libstring-escape-perl libsub-exporter-perl libsub-exporter-progressive-perl libsub-identify-perl libsub-install-perl libsub-name-perl libsub-quote-perl libsuperlu5 libsvn-perl libsvn1 libswresample2 libswscale4 libsys-hostname-long-perl libsz2 libtbb2 libtcl8.6 libterm-readkey-perl libtesseract4 libtext-glob-perl libtext-levenshtein-perl libthai-data libthai0 libtheora0 libtiff-dev libtiff5 libtiff5-dev libtiffxx5 libtimedate-perl libtk8.6 libtool libtry-tiny-perl libtwolame0 libudev-dev libunicode-utf8-perl libunwind8 liburi-perl liburiparser1 libusb-1.0-0 libva-drm2 libva-x11-2 libva2 libvariable-magic-perl libvdpau1 libvorbis0a libvorbisenc2 libvorbisfile3 libvpx5 libvtk6.3 libwavpack1 libwayland-bin libwayland-client0 libwayland-cursor0 libwayland-dev libwayland-egl1 libwayland-egl1-mesa libwayland-server0 libwebp6 libwebpmux3 libwrap0 libwww-perl libwww-robotrules-perl libx11-dev libx11-doc libx11-xcb-dev libx11-xcb1 libx264-152 libx265-146 libxau-dev libxaw7 libxcb-dri2-0 libxcb-dri2-0-dev libxcb-dri3-0 libxcb-dri3-dev libxcb-glx0 libxcb-glx0-dev libxcb-present-dev libxcb-present0 libxcb-randr0 libxcb-randr0-dev libxcb-render0 libxcb-render0-dev libxcb-shape0 libxcb-shape0-dev libxcb-shm0 libxcb-shm0-dev libxcb-sync-dev libxcb-sync1 libxcb-util1 libxcb-xfixes0 libxcb-xfixes0-dev libxcb1-dev libxcomposite-dev libxcomposite1 libxcursor-dev libxcursor1 libxdamage-dev libxdamage1 libxdmcp-dev libxerces-c3.2 libxext-dev libxfixes-dev libxfixes3 libxft-dev libxft2 libxi-dev libxi6 libxinerama-dev libxinerama1 libxkbcommon-dev libxkbcommon0 libxml-libxml-perl libxml-namespacesupport-perl libxml-parser-perl libxml-sax-base-perl libxml-sax-expat-perl libxml-sax-perl libxml-simple-perl libxml2 libxml2-dev libxmu6 libxpm4 libxrandr-dev libxrandr2 libxrender-dev libxrender1 libxshmfence-dev libxshmfence1 libxslt1-dev libxslt1.1 libxss-dev libxss1 libxt-dev libxt6 libxtst-dev libxtst6 libxv1 libxvidcore4 libxxf86dga1 libxxf86vm-dev libxxf86vm1 libyaml-0-2 libyaml-libyaml-perl libyaml-perl libzvbi-common libzvbi0 licensecheck lintian lsb-release locales lxmenu-data g++-multilib gcc-multilib m4 make man-db mesa-common-dev mesa-va-drivers mesa-vdpau-drivers mysql-common obconf obsession ocl-icd-libopencl1 odbcinst odbcinst1debian2 openbox openbox-menu openmpi-bin openmpi-common p7zip patchutils perl-openssl-defaults php-common php7.2-cgi php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-readline pinentry-curses pkg-config po-debconf poppler-data proj-bin proj-data psmisc python python-apt-common python-asn1crypto python-cffi-backend python-cherrypy3 python-crypto python-cryptography python-dev python-enum34 python-idna python-ipaddress python-numpy python-opencv python-openssl python-pkg-resources python-psutil python-repoze.lru python-routes python-simplejson python-six python-webob python-yaml python2.7-dev python3-apt python3-certifi python3-chardet python3-debian python3-distutils python3-gpg python3-idna python3-lib2to3 python3-magic python3-pkg-resources python3-requests python3-scour python3-six python3-unidiff python3-urllib3 python3-xdg rake rpm rpm-common rpm2cpio ruby ruby-did-you-mean ruby-minitest ruby-net-telnet ruby-power-assert ruby-test-unit ruby2.5 rubygems-integration scour scrot shared-mime-info software-properties-common ssl-cert strace sudo subversion t1utils tzdata ubuntu-mono ucf unzip uuid-dev va-driver-all vdpau-driver-all wayland-protocols wdiff wget x11-common x11-utils x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-dev x11proto-fixes-dev x11proto-input-dev x11proto-randr-dev x11proto-record-dev x11proto-scrnsaver-dev x11proto-xext-dev x11proto-xf86vidmode-dev x11proto-xinerama-dev xcompmgr xdg-user-dirs xkb-data xorg-sgml-doctools xtrans-dev zip zlib1g-dev