You are not logged in.

#1 2019-06-13 09:38:47

K8ebBM214bp4UJV
Member
Registered: 2018-10-04
Posts: 15

compiling chromium 75.0.3770.80 and ungoogled chromium

Hello.

I wrote a long ass post but when i clicked on "Submit" I got logged out and the post was lost. 

I managed to compile chromium on archlinux32

gofile link deleted

install with

sudo pacman -U chromium-75.0.3770.80-1-any.pkg.tar.xz

Of course it would be best to wait for the official package from our devs, though if you compile your own the md5 checksum should match.


Currently I'm compiling again ungoogled chromium since i got an error when building the pkg, but managed to create the portable version

gofile link delete
md5 37c905ead6b03e607fdceb9b770ff078

run with

./ungoogled.AppImage

you'll probably need to install some dependencies for the portable version.  in my case
jsoncpp re2 snappy libxslt minizip

also please read up some considerations for ungoogled, like if you use extensions you need to install/update them manually.  tomorrow i'll post the pkg for ungoogled, and will rewrite the post that got deleted explaining my experience compiling chromium on 32 bits.

if the files are against forum rules, please delete.

Offline

#2 2019-06-13 20:56:05

K8ebBM214bp4UJV
Member
Registered: 2018-10-04
Posts: 15

Re: compiling chromium 75.0.3770.80 and ungoogled chromium

here's the pkg for ungoogled chromium

gofile link deleted
md5 dee016ca68af2f0d5dc9cfb23c155d71

install with

sudo pacman -U ungoogled-chromium-75.0.3770.80-1-any.pkg.tar.xz

all credit to the respective devs.  if there's interest i can post the PKGBUILD and the flags i use to be able to compile this on archlinux32.

now to redo the post that got lost yesterday, in resume if you use the PKGBUILD from the 64bit archlinux and modify the architecture from 'x86_64' to 'any', the package should compile, as long as your computer is capable of doing it. it took me weeks of testing to be able to compile mostly because of how old my hardware is, and every failed attempt would take days of compilation.

my desktop is a pentium 4, and my netbook is an atom n270, both with 2gb of ram, so it's virtually impossible to compile chromium with such low memory.  even using a few gigs swap wouldn't help.  one test i cancelled after 5 days of compiling with no end in sight.

to be able to compile i got access to a newer laptop with an i7-7700hq and 16gb of ram.  first i tried to run an archlinux32 portable install in a usb memory.  to be able to use all the ram you need to use the pae kernel, but there's some bug in 5.1 so it wouldn't even boot.  compiling custom kernels (4.14 worked) and using an hdd with ntfs as filesystem didn't help since just extracting files took hours and the compilation still failed.

what worked for me is to install archlinux32 in a virtual machine asigning 6 threads and 12gb of ram, 64gb ssd space, and for good measure 8gb in swap.  still the compilation takes about 5 hours, compared to a normal archlinux 64bits where it took 20 minutes for the same package.

Offline

#3 2019-06-14 11:54:45

andreas_baumann
Administrator
From: Zurich, Switzerland
Registered: 2017-08-10
Posts: 833
Website

Re: compiling chromium 75.0.3770.80 and ungoogled chromium

Hi, thanks for all your work.

I seem not be able to download anything from Gofile, I only get
"This upload does not exist".

Anyways, it's better to publish the PKGBUILD, preferably in the
AUR, either with a patch request against the original package, or
in a new package like ungoogled-chromium-32 if the author doens't
like the patch.

Compiling on original hardware is nothing anybody of us is doing, it's
simply too slow. That's why there are 32-bit staging chroots for bulding
32-bit software on 64-bit, see https://git.archlinux32.org/archlinux32/devtools32

Offline

#4 2019-06-15 01:04:30

K8ebBM214bp4UJV
Member
Registered: 2018-10-04
Posts: 15

Re: compiling chromium 75.0.3770.80 and ungoogled chromium

I checked the links and it seems they work for me, what i see though is for some reason the dots from the filenames got removed, so if you download them you would need to rename them.  sorry i used that file locker but honestly i used the first one i found with no ads and that allowed me to upload without an account.

here's the PKGBUILD and flags i used for ungoogled.  if you want to submit the changes to the AUR, please feel free to do so.  i don't do accounts and i basically modified the one available there.

PKGBUILD

# Derived from PKGBUILD for Inox
# Original Inox PKGBUILD authors:
# Maintainer: Michael Egger <gcarq@archlinux.info>
# Contributor: Evangelos Foutras <evangelos@foutrelis.com>
# Contributor: Pierre Schmitz <pierre@archlinux.de>
# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>

pkgname=ungoogled-chromium
# Commit or tag for the upstream ungoogled-chromium repo
_ungoogled_version='75.0.3770.80-1'
_ungoogled_archlinux_version=master
_chromium_version=75.0.3770.80
_ungoogled_revision=$(curl -sL https://raw.githubusercontent.com/Eloston/ungoogled-chromium/${_ungoogled_version}/revision.txt)
pkgver=75.0.3770.80
_ungoogled_archlinux_pkgrel=0
pkgrel=1
_launcher_ver=6
pkgdesc="A lightweight approach to removing Google web service dependency"
arch=('any')
url="https://github.com/ungoogled-software/ungoogled-chromium-archlinux"
license=('BSD')
depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt'
         'ttf-font' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib' 'libva'
         'desktop-file-utils' 'hicolor-icon-theme' 'jsoncpp' 'openjpeg2')
makedepends=('python' 'python2' 'gperf' 'yasm' 'mesa' 'ninja' 'git'
             'clang' 'lld' 'gn' 'llvm' 'quilt')
optdepends=('pepper-flash: support for Flash content'
            'kdialog: needed for file dialogs in KDE'
            'gnome-keyring: for storing passwords in GNOME keyring'
            'kwallet: for storing passwords in KWallet'
            'libva-intel-driver: for hardware video acceleration with Intel GPUs'
            'libva-mesa-driver: for hardware video acceleration with AMD/ATI GPUs'
            'libva-vdpau-driver: for hardware video acceleration with NVIDIA GPUs')
provides=('chromium')
conflicts=('chromium')
source=(https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${_chromium_version}.tar.xz
        chromium-launcher-$_launcher_ver.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz
        "ungoogled-chromium-${_ungoogled_version}.tar.gz::https://github.com/Eloston/ungoogled-chromium/archive/${_ungoogled_version}.tar.gz"
        "ungoogled-chromium-archlinux-${_ungoogled_archlinux_version}.tar.gz::https://github.com/ungoogled-software/ungoogled-chromium-archlinux/archive/${_ungoogled_archlinux_version}.tar.gz")
sha256sums=($(curl -sL https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${_chromium_version}.tar.xz.hashes | grep sha256 | cut -d ' ' -f3)
            '04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1'
            'SKIP'
            'SKIP')

# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py
# Keys are the names in the above script; values are the dependencies in Arch
declare -gA _system_libs=(
  [ffmpeg]=ffmpeg
  [flac]=flac
  [fontconfig]=fontconfig
  [freetype]=freetype2
  [harfbuzz-ng]=harfbuzz
  [icu]=icu
  [libdrm]=
  [libevent]=libevent
  [libjpeg]=libjpeg
  #[libpng]=libpng            # https://crbug.com/752403#c10
  [libvpx]=libvpx
  [libwebp]=libwebp
  [libxml]=libxml2
  [libxslt]=libxslt
  [opus]=opus
  [re2]=re2
  [snappy]=snappy
  [yasm]=
  [zlib]=minizip
)
_unwanted_bundled_libs=(
  ${!_system_libs[@]}
  ${_system_libs[libjpeg]+libjpeg_turbo}
)
depends+=(${_system_libs[@]})

prepare() {
  _ungoogled_archlinux_repo="$srcdir/$pkgname-archlinux-${_ungoogled_archlinux_version}"
  _ungoogled_repo="$srcdir/$pkgname-${_ungoogled_version}"
  _utils="${_ungoogled_repo}/utils"

  cd "$srcdir/chromium-${_chromium_version}"

  msg2 'Pruning binaries'
  python "$_utils/prune_binaries.py" ./ "$_ungoogled_repo/pruning.list"
  msg2 'Applying patches'
  python "$_utils/patches.py" apply ./ "$_ungoogled_repo/patches" "$_ungoogled_archlinux_repo/patches"
  msg2 'Applying domain substitution'
  python "$_utils/domain_substitution.py" apply -r "$_ungoogled_repo/domain_regex.list" -f "$_ungoogled_repo/domain_substitution.list" -c domainsubcache.tar.gz ./

  # Force script incompatible with Python 3 to use /usr/bin/python2
  sed -i '1s|python$|&2|' third_party/dom_distiller_js/protoc_plugins/*.py

  # Remove bundled libraries for which we will use the system copies; this
  # *should* do what the remove_bundled_libraries.py script does, with the
  # added benefit of not having to list all the remaining libraries
  local _lib
  for _lib in ${_unwanted_bundled_libs[@]}; do
    find -type f -path "*third_party/$_lib/*" \
      \! -path "*third_party/$_lib/chromium/*" \
      \! -path "*third_party/$_lib/google/*" \
      \! -path './base/third_party/icu/*' \
      \! -path './third_party/crashpad/crashpad/third_party/zlib/zlib_crashpad.h' \
      \! -path './third_party/pdfium/third_party/freetype/include/pstables.h' \
      \! -path './third_party/yasm/run_yasm.py' \
      \! -regex '.*\.\(gn\|gni\|isolate\)' \
      -delete
  done

  python2 build/linux/unbundle/replace_gn_files.py \
    --system-libraries "${!_system_libs[@]}"
}

build() {
  _ungoogled_archlinux_repo="$srcdir/$pkgname-archlinux-${_ungoogled_archlinux_version}"
  _ungoogled_repo="$srcdir/$pkgname-${_ungoogled_version}"

  make -C chromium-launcher-$_launcher_ver

  cd "$srcdir/chromium-${_chromium_version}"

  if check_buildoption ccache y; then
    # Avoid falling back to preprocessor mode when sources contain time macros
    export CCACHE_SLOPPINESS=time_macros
  fi

  export CC=clang
  export CXX=clang++
  export AR=llvm-ar
  export NM=llvm-nm

  mkdir -p out/Default

  # Assemble GN flags
  cat "../../flags0.gn" >> "out/Default/args.gn"

  # Facilitate deterministic builds (taken from build/config/compiler/BUILD.gn)
  CFLAGS+='   -Wno-builtin-macro-redefined'
  CXXFLAGS+=' -Wno-builtin-macro-redefined'
  CPPFLAGS+=' -D__DATE__=  -D__TIME__=  -D__TIMESTAMP__='

  msg2 'Configuring Chromium'
  gn gen out/Default --script-executable=/usr/bin/python2 --fail-on-unused-args
  msg2 'Building Chromium'
  ninja -C out/Default chrome chrome_sandbox chromedriver
}

package() {
  cd chromium-launcher-$_launcher_ver
  make PREFIX=/usr DESTDIR="$pkgdir" install
  install -Dm644 LICENSE \
    "$pkgdir/usr/share/licenses/chromium/LICENSE.launcher"

  cd "$srcdir/chromium-${_chromium_version}"

  install -D out/Default/chrome "$pkgdir/usr/lib/chromium/chromium"
  install -Dm4755 out/Default/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox"
  ln -s /usr/lib/chromium/chromedriver "$pkgdir/usr/bin/chromedriver"

  install -Dm644 chrome/installer/linux/common/desktop.template \
    "$pkgdir/usr/share/applications/chromium.desktop"
  install -Dm644 chrome/app/resources/manpage.1.in \
    "$pkgdir/usr/share/man/man1/chromium.1"
  sed -i \
    -e "s/@@MENUNAME@@/Chromium/g" \
    -e "s/@@PACKAGE@@/chromium/g" \
    -e "s/@@USR_BIN_SYMLINK_NAME@@/chromium/g" \
    "$pkgdir/usr/share/applications/chromium.desktop" \
    "$pkgdir/usr/share/man/man1/chromium.1"

  cp \
    out/Default/{chrome_{100,200}_percent,resources}.pak \
    out/Default/{*.bin,chromedriver} \
    "$pkgdir/usr/lib/chromium/"
  install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Default/locales/*.pak

  if [[ -z ${_system_libs[icu]+set} ]]; then
    cp out/Default/icudtl.dat "$pkgdir/usr/lib/chromium/"
  fi

  for size in 22 24 48 64 128 256; do
    install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \
      "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
  done

  for size in 16 32; do
    install -Dm644 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \
      "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
  done

  install -Dm644 LICENSE "$pkgdir/usr/share/licenses/chromium/LICENSE"
}

# vim:set ts=2 sw=2 et:

flags0.gn

blink_symbol_level=0
clang_use_chrome_plugins=false
closure_compile=false
enable_ac3_eac3_audio_demuxing=true
enable_hangout_services_extension=false
enable_hevc_demuxing=true
enable_iterator_debugging=false
enable_mdns=false
enable_mse_mpeg2ts_stream_parser=true
enable_nacl=false
enable_nacl_nonsfi=false
enable_one_click_signin=false
enable_reading_list=false
enable_remoting=false
enable_reporting=false
enable_service_discovery=false
enable_swiftshader=false
enable_widevine=true
exclude_unwind_tables=true
fatal_linker_warnings=false
fieldtrial_testing_like_official_build=true
google_api_key=""
google_default_client_id=""
google_default_client_secret=""
is_debug=false
is_official_build=true
optimize_webui=false
safe_browsing_mode=0
symbol_level=0
treat_warnings_as_errors=false
use_official_google_api_keys=false
use_ozone=false
use_unofficial_version_number=false
fatal_linker_warnings=false

custom_toolchain="//build/toolchain/linux/unbundle:default"
ffmpeg_branding="ChromeOS"
gold_path=""
goma_dir=""
host_toolchain="//build/toolchain/linux/unbundle:default"
is_clang=true
link_pulseaudio=true
linux_use_bundled_binutils=false
proprietary_codecs=true
use_allocator="none"
use_cups=true
use_custom_libcxx=false
use_gio=true
use_gnome_keyring=false

use_kerberos=false
use_libjpeg_turbo=true
use_jumbo_build=true
use_openh264=false

use_sysroot=false
use_system_freetype=true
use_system_harfbuzz=true
use_system_lcms2=true
use_system_libjpeg=true
use_system_libopenjpeg2=true
use_system_zlib=true
use_vaapi=true

the most problematic flag was the jumbo thingy but with enough ram it's not an issue.  i used a different file for the flags instead of the provided one so i could test stuff. 

if you want to make the pkg put these two files in one folder and run

makepkg -s

Last edited by K8ebBM214bp4UJV (2019-06-15 01:06:54)

Offline

#5 2019-06-21 19:01:18

K8ebBM214bp4UJV
Member
Registered: 2018-10-04
Posts: 15

Re: compiling chromium 75.0.3770.80 and ungoogled chromium

updated to 75.0.3770.100 with same PKGBUILD

ungoogled chromium 75.0.3770.100 archlinux32 pkg
md5 3a77e487f7b9f28c9642f8aa75924ba4
ungoogled-chromium-75.0.3770.100-1-any.pkg.tar_xz

ungoogled chromium 75.0.3770.100 32bit portable AppImage
md5 4123c2e1844f55aee2c7dda6014d7877
ungoogled-chromium_75.0.3770.100-1_linux_AppImage

Offline

#6 2019-06-22 08:03:01

andreas_baumann
Administrator
From: Zurich, Switzerland
Registered: 2017-08-10
Posts: 833
Website

Re: compiling chromium 75.0.3770.80 and ungoogled chromium

Thanks. :-)

There are some problems with your links in the forum.

anonfile.com wants to allow notifications for quite some sub-sites, which I consider very user-unfriendly.
It also doesn't allow me to use curl/wget to download the package.
Then when I download the package, I get some nice sex pages.
Also, is the package signed with a key of yours? I will not download the package from that page just
to check that, because that's already too risky for my taste.

So, no, I'll blacklist all the links here.

If you want to publish packages, make sure to use a trusted file hosting
service (a Google drive or a classic FTP/Webserver) and sign your
package.

We cannot risk to distribute malware via the forum.

Offline

#7 2019-06-22 08:16:40

andreas_baumann
Administrator
From: Zurich, Switzerland
Registered: 2017-08-10
Posts: 833
Website

Re: compiling chromium 75.0.3770.80 and ungoogled chromium

Not providing binary packages built from descriptions in the AUR is also a security measurement.

Read on AUR poisoning on:

https://nakedsecurity.sophos.com/2018/0 … h-malware/

AUR PKGBUILDs are considered untrusted source and unless you read and understand them
before you build them, you risk to distribute malware (or worse: a PKGBUILD
deleting your home directory). Hence also: never build a package as root or as your normal
user, use a new unprivileged build user for that, ideally on a machine where you don't
have valuable data on it.

I was also serving binary packages from my personal repository, but I sign those packages and
I make clear via PGP and personal home page, who I am. So people can better decide, whether
they trust my binary packages. But distributing packages this way should be an exception.

Offline

#8 2019-06-22 22:34:36

K8ebBM214bp4UJV
Member
Registered: 2018-10-04
Posts: 15

Re: compiling chromium 75.0.3770.80 and ungoogled chromium

yeah, sorry about that.  since you said the gofile host wasn't working i used the second one from the search.  i have several layers of adblocking so i didn't know anonfile was that bad.  sorry again.

like i've said before, users shouldn't put blind trust in random binaries.  my files should have passed the md5 check at least if you compiled your own pkg and compared hashes.  i totally understand, though.

i won't post again.  if you don't mind, please delete this account.  thank you.

Offline

Board footer

Powered by FluxBB