Ungoogled Chromium 73.0 GTK2-vel Devuan 2/Debian 9 alá

Update 2021.01.18.: Sikerült kidebuggolni, hogy a default flag-ekkel miért eredményezett crashelő binárist: az is_official_build változót kellett csak hamisra állítani. (Azaz a hivatalos gúgel build, hivatalosan is összeomlik, lol.) Cseréltem a scriptet.

Összeraktam erre a célra egy scriptet, ami - a Chromium-nak szükséges függőségek összeszedegetését leszámítva (azt úgyis csak egyszer kell) - A-tól Z-ig mindent megcsinál, amit kell. (Debian alapú disztrók alá ugyan adnak a Chromium forrásában egy install-build-deps.sh scriptet, de ez egy csomó szemetet is felhányna a rendszerre (pl. GTK3-mal nyit; nálam pinnelve van, fel sem tudja rakni -> elszáll), viszont kipuskázni jó lesz talán; nekem nem kellett, mert a libopenjp2 kivételével minden fel volt már rakva...)
Erre a tweakelgetésre egyébként csak Devuan 2/Debian 9 esetén van szükség, a Debian 10 (és vele a Devuan 3) elméletileg rendesen supportálva van, egyedül a GTK2-es patchet kell a 9-es patchset-ből kivenni. Viszont GTK2-es patch-et nem találtam újabb Chromiumhoz.

Amint látni lehet, egyetlen opcionális argumentuma van, ha bármit megadunk neki, akkor ki is takarít maga után, ha nem, akkor nem bántja a forrásokat.
Köszönet a segítségért az ebben a github topicban és az ebben a hup topicban segédlábat nyújtó kollégáknak, kiemelten wchen342-nek és x-daemon-nak.

A script:

#!/bin/sh
cd "$HOME"
mkdir kocsog_gugli 2>/dev/null
cd kocsog_gugli

echo
echo "======================"
echo "Getting depot tools..."
echo "======================"
echo
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=$PATH:"$HOME"/kocsog_gugli/depot_tools

echo
echo "=========================="
echo "Getting Chromium source..."
echo "=========================="
echo
mkdir chromium 2>/dev/null
cd chromium/
fetch --nohooks chromium
free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null

echo
echo "===================="
echo "Checkout and sync..."
echo "===================="
echo
cd src
git checkout 73.0.3683.75
gclient sync -D
free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null

# Use the "fontconfig.patch" from UGC and not from Debian. The rest of the two patchset can be merged.
echo
echo "==========="
echo "Patching..."
echo "==========="
echo
echo "Getting Debian patchset..."
wget http://deb.debian.org/debian/pool/main/c/chromium/chromium_73.0.3683.75-1~deb9u1.debian.tar.xz
tar xf chromium_73.0.3683.75-1~deb9u1.debian.tar.xz
rm chromium_73.0.3683.75-1~deb9u1.debian.tar.xz
rm -rf debian/patches/arm
find debian/patches/ -name '*.patch' -exec mv {} ./ \;
rm -rf debian
echo "Getting Ungoogled-Chromium patchset..."
git clone https://github.com/Eloston/ungoogled-chromium/
cd ungoogled-chromium/
git checkout 73.0.3683.103-2
cd ..
find ungoogled-chromium/patches/ -name '*.patch' -exec mv {} ./ \;
rm -rf ungoogled-chromium
# Remove unneeded libevent, libicu and fingerprinting patches.
rm event.patch icu.patch icu57.patch icu-new.patch fingerprinting-flags-client-rects-and-measuretext.patch flag-fingerprinting-canvas-image-data-noise.patch
echo "Applying patches..."
for PATCH in *.patch
do
	echo "****************"
	echo "* ""$PATCH"
	echo "****************"
	patch -p1 -f < "$PATCH"
	echo "****************"
	echo
done
rm *.patch
# Some files are left in an uncompilable state.
echo "Some hand patching..."
# Designated initializers patch is erroneous with the bundled CLang 9.
sed -i.bak 's/    Settings(bool randomise):randomised_sampling_enabled(randomise) {}//g' base/task/sequence_manager/sequence_manager.h
# Patch a mispatched file's macro.
sed -i.bak -n '1h;1!H;${g;s/#endif\n#endif/#endif/;p;}' chrome/browser/ui/chrome_pages.cc
# Safe browsing patch is erroneous with chrome 73.0.
sed -i.bak '/^static_library("safe_browsing") {/i sources = []\n deps = []' chrome/browser/safe_browsing/BUILD.gn
# Comment some ICU calls in the bug reporting.
sed -i.bak 's|u_|// u_|g' third_party/breakpad/breakpad/src/common/string_conversion.cc
# Rename a duplicate dummy function.
sed -i.bak 's/QuarantineFileResult QuarantineFile/QuarantineFileResult QuarantineFile1/g' components/download/quarantine/quarantine.cc
# Chromium needs libz.
sed -i.bak 's/        ldflags = \[\]/        ldflags = \[ "-lz" \]/g' chrome/BUILD.gn

echo
echo "============="
echo "Generating..."
echo "============="
echo
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH":/usr/lib/x86_64-linux-gnu/pkgconfig/
wget https://raw.githubusercontent.com/Eloston/ungoogled-chromium/73.0.3683.103-2/flags.gn
echo 'gtk_version=2' >> flags.gn
echo 'use_gnome_keyring=false' >> flags.gn
echo 'use_pulseaudio=false' >> flags.gn
echo 'use_sysroot=false' >> flags.gn
sed -i.bak 's/is_official_build=true/is_official_build=false/g' flags.gn
gn gen out/Release "--args=`cat flags.gn | tr '\n' ' '`"
gn args --list out/Release/ > ninja.settings
free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null

echo
echo "==========="
echo "Building..."
echo "==========="
echo
autoninja -C out/Release chrome
free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null

echo
echo "============"
echo "Packaging..."
echo "============"
echo
cd out/Release
mkdir ungoogled-chromium-devuan2-gtk2-portable
cp -R locales chrome *.pak *.info *.so *.bin *.dat ungoogled-chromium-devuan2-gtk2-portable/
tar -zcf ungoogled-chromium-devuan2-gtk2-portable.tar.gz ungoogled-chromium-devuan2-gtk2-portable
rm -rf ungoogled-chromium-devuan2-gtk2-portable
mv ungoogled-chromium-devuan2-gtk2-portable.tar.gz "$HOME"/
free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null

if [ "$1" != "" ];
then
	echo
	echo "=============="
	echo "Cleaning up..."
	echo "=============="
	echo
	rm -rf "$HOME"/kocsog_gugli
	free > /dev/null && sync > /dev/null && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null
fi

Hozzászólások

1-2 szót írhatnál arról, hogy mire is jó ez! A Debian-ban eleve ilyen ungoogled változat van, jól értem?

Nem, a Debian 9-ben egy patchelt 73.0-ás Chromium van, de az nem ungoogled, ugyanúgy kémkedik, viszont a Debian Team csinált hozzá GTK2-es patchet.
Az Ungoogled Chromium egy olyan Chromium-hoz való patchset, ami kitakarítja a Chromiumból a kugli összes spyware-ét, viszont az a vanilla Chromium-ra épül, amiből már a hatvanvalahanyadik verzió óta nincs GTK2-es és a Debian 9-et sem támogatja, csak a 10-est.
Ezért kombináltam a két patchsetet, kézzel kijavítgattam a forrásokban ami még így sem akart fordulni, valamint trial and error módon kézzel tweakeltem a default beállításokat, hogy egyáltalán egy fordíthatóképes és működőképes setupot kapjak. (A default Ungoogled Chromium flags.gn felhasználásával a kapott bináris elszállt illegal instructionnal.)
Így most van olyan Chromiumom, amivel megy a net 99.99999...%-a és nincs benne se spyware, se GTK3, se PulseAudio. Hogy másnak is lehessen, a lépéseket egy scriptbe foglalva közzétettem. Erre jó ez.

Ennyi sed helyett miert nem egy sajat patchet csinalsz inkabb?

Meg egy otlet:

mkdir chromium 2>/dev/null 

helyett:

mkdir -p chromium

... es igy tovabb.

Meglepően gyors cucc egyébként, most ezt tartom a Firefox mellett másodlagos böngészőnek. A Chromium alap jó, a sallangok leválasztva. Annyira nem is zabál sok erőforrást ami az elektronos szutykok nagy részéről nem mondható el. Nem véletlenül került be némelyikbe Relaunch menüpont is :)

Sajnos használnom kell számos Electronos szutyadékot (pl. slack, postman, electronmail,..) és az általános véleményem az electronról a fostalicska és szenny környékén mozog. :(

De lehet hogy megnézem én is ezt a browsert, ártani nem árthat.