Package Details: ungoogled-chromium-archlinux 76.0.3809.132-1

Git Clone URL: https://aur.archlinux.org/ungoogled-chromium-archlinux.git (read-only)
Package Base: ungoogled-chromium-archlinux
Description: A lightweight approach to removing Google web service dependency
Upstream URL: https://github.com/ungoogled-software/ungoogled-chromium-archlinux
Licenses: BSD
Conflicts: chromium
Provides: chromium
Submitter: youngunix
Maintainer: youngunix
Last Packager: youngunix
Votes: 14
Popularity: 1.521013
First Submitted: 2019-05-01 18:24
Last Updated: 2019-09-11 21:24

Dependencies (53)

Required by (49)

Sources (4)

Pinned Comments

youngunix commented on 2019-05-05 16:30

unfortunately, I cannot change the package name as there is another package with the same name that the maintainer refused to update for some odd reasons. hence why I created this port. the fix for now is to manually change the name in PKGBUILD while building it locally until that maintainer removes the out of date package.

EDIT: PKGBUILD has been updated.

youngunix commented on 2019-05-01 18:29

Note: this ungoogled-chromium version is specifically created for Archlinux AUR and it is up to date with the original package from Eloston.

Warning: this package might not build if you have 4GB of RAM or less. It might take several minutes to build on systems with fewer CPU cores.

Latest Comments

« First ‹ Previous 1 2 3 4 5 Next › Last »

danieltetraquark commented on 2019-07-17 18:10

# maintainer: youngunix <zagazaw2004 [at] gmail [dot] com>
# submitter: youngunix <zagazaw2004 [at] gmail [dot] com>
#---------------------------------------------------------
# Git original comments
# 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-archlinux
# Commit or tag for the upstream ungoogled-chromium repo
_ungoogled_version='75.0.3770.142-1'
_ungoogled_archlinux_version=af242f55185ff0ff530d9be502099af0b9f6349b
_chromium_version=$(curl -sL https://raw.githubusercontent.com/Eloston/ungoogled-chromium/${_ungoogled_version}/chromium_version.txt)
_ungoogled_revision=$(curl -sL https://raw.githubusercontent.com/Eloston/ungoogled-chromium/${_ungoogled_version}/revision.txt)
pkgver=${_chromium_version}
_ungoogled_archlinux_pkgrel=0
pkgrel=$((_ungoogled_revision + _ungoogled_archlinux_pkgrel))
_launcher_ver=6
pkgdesc="A lightweight approach to removing Google web service dependency"
arch=('x86_64')
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-${_ungoogled_archlinux_version}"
  _ungoogled_repo="$srcdir/ungoogled-chromium-${_ungoogled_version}"
  _utils="${_ungoogled_repo}/utils"

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

  msg2 'Fixing compile time bug on gcc9'
  patch -p1 --ignore-whitespace -i $_ungoogled_archlinux_repo/gcc-9-fix.patch --no-backup-if-mismatch
  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-${_ungoogled_archlinux_version}"
  _ungoogled_repo="$srcdir/ungoogled-chromium-${_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
  cp "$srcdir/ungoogled-chromium-${_ungoogled_version}/flags.gn" "out/Default/args.gn"
  printf '\n' >> "out/Default/args.gn"
  cat "$_ungoogled_archlinux_repo/flags.archlinux.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/$pkgname/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:

blue commented on 2019-07-14 22:29

Please change "--igonre-whitespace" to "--ignore-whitespace" on line 87 of the PKGBUILD when you get a chance.

JstKddng commented on 2019-07-01 16:51

@bsdice

then again, that repo is a personal copy I use to compile, it's up to you what you want to change.

bsdice commented on 2019-07-01 12:46

@JstKddng No need for the minus 1, just use

ionice -c3 nice -n19 chrt -i 0 makepkg -Ccf

or make "makepkg" an alias in the shell. It will nice the build process to the absolute bottom of the scheduler food chain.

Thanks for the input about gcc-9 and rusty Debian.

JstKddng commented on 2019-07-01 12:09

@bsdice

It is exclusive to arch because only arch has gcc-9, Eloston doesn't because he is using debian, maybe once debian gets to gcc-9 it might get fixed upstream. And yeah, I was thinking to change the lines in ninja to $(nproc) - 1, that value leaves a thread available for some stuff, like I do since I just ssh to my build box and leave it compiling.

bsdice commented on 2019-07-01 12:04

@JstKddng

N5000 is a Goldmont Plus 6W total TDP design with all-core turbo limited by TDP to around 1900 MHz. So yeah, IPC may be closing in on Nehalem here, but if you have anything more modern like Skylake it will get smoked. No moving parts in the machine at all though.

Beautification like so (from git diff): + ninja -j $(nproc) -C out/Default chrome chrome_sandbox chromedriver

It pinned load in my test to 4.00 4.00 4.00 very nicely and will use all available cores automatically. Ryzen users will be very happy. Take some small gradual steps towards more elegance, imho.

As for resilience, yes lets examine gcc-9 bug. Why is the patch not part of Eloston's github? It should be fixed there, not in our PKGBUILD. Even more so since it fixes a file called chrome/browser/ui/tabs/tab_strip_model_observer.h which is deep in the browser tree even. Breakage of 2 days is okay, if the fix automatically appears. Has it? I haven't checked.

It shouldn't become ungoogled-chromium-git though, so the git revision pinning has to be kept.

my 2 cents only of course. Thanks!

JstKddng commented on 2019-07-01 11:46

@bsdice

weird, it takes 3 hours on my dual core :P

well, there is no need for a -bin package, my repo es enough I think. Now, replying to some of the points you made.

  • What do you mean by resilience? It's impossible to foresee errors when compiling, even the latest one related to gcc-9, a patch was released I think 2 days later.

  • When you say beautification, well, the pkgbuild is just a copy of the original chromium pkgbuild with some edits, not much we can do.

bsdice commented on 2019-07-01 10:47

@JstKddng concerning your version at https://git.vin.ovh/jk/ungoogled-chromium

ImportError: No module named protobuf.descriptor_pb2, fix for PKGBUILD:

'clang' 'lld' 'gn' 'llvm' 'quilt' 'python2-protobuf')

Conflicts could be expanded to conflict with this package, as well as the official version:

-conflicts=('chromium')

+conflicts=('chromium' 'ungoogled-chromium-archlinux')

The whole package needs a bit of an overhaul, i.e. beautification, also more resilience when upstream chromium and/or eloston on github changes something. Unfortunately I lack time to do it right now, apologies.

There needs to be a "ungoogled-chromium-bin" version built, if someone is up for it. On my Acer Swift 1 with N5000 4-core CPU on SSD it takes 8.5h to compile this. Feels like Gentoo when it shouldn't. ;-)

IMHO a well working version of "ungoogled-chromium" on AUR will soon explode in popularity once Google cripples adblocking in official chromium. The change will be rolled back and people will want this version over anything else. Because everyone wants privacy and a browser sans shit, right. I am looking at https://aur.archlinux.org/packages/ungoogled-chromium and seppia (author) appears to have lost interest or capability to regularly update the package. Which is unfortunate. Well, brace for impact.

JstKddng commented on 2019-06-29 17:51

@lunainvictum

Here's my personal git repository: https://git.vin.ovh/jk/ungoogled-chromium

Just clone it and run makepkg. Also, I don't like github that much. Just creating a user to create issues in some projects is as far as I'm willing to go.

Edit:

You can change line 147 of the PKGBUILD to build ungoogled chromium faster. Just increase those numbers. I only have a 3 there because my build box is only a dual core.

lunainvictum commented on 2019-06-29 12:45

@JstKddng how do you build 75.0.3770.100 ?

Can you upload a PKGBUILD wich use everytime the lastest stable Version? I flagged this Pakage already three times as outdated. But everytime the Flag gets removed.

Now it is impossible to build because of few bugs. The patches are already in the Master branch: https://github.com/ungoogled-software/ungoogled-chromium-archlinux/commits/master