ungoogled-software / ungoogled-chromium-archlinux

Arch Linux packaging for ungoogled-chromium

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ungoogled-chromium does not compile anymore on Arch Linux ARM

opened this issue · comments

ungoogled-chromium does not compile anymore past version 115 which got broken by an re2 update and 115 relies on re2 10 , but the upgrade was to 11, with both the aur PKGBUILD from https://aur.archlinux.org/packages/ungoogled-chromium and this PKGBUILD, and I used to put the same patches Arch Linux ARM puts onto their chromium PKGBUILD, and that one also doesnt work, and the patches used to work until now, and removing the patches also has no effect.
Also, on a fresh Arch ARM copy on another ARM device with all dependencies, it still fails to build. And trying the Arch ARM 116 vanilla chromium PKGBUILD from https://github.com/archlinuxarm/PKGBUILDs/tree/master/extra/chromium gives the same error at the bottom
The compile error is this
"[514/55284] CXX obj/third_party/abseil-cpp/absl/debugging/stacktrace/stacktrace.o
FAILED: obj/third_party/abseil-cpp/absl/debugging/stacktrace/stacktrace.o
clang++ -MMD -MF obj/third_party/abseil-cpp/absl/debugging/stacktrace/stacktrace.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_GLIB=1 -DUSE_OZONE=1 -DOFFICIAL_BUILD -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -D_GNU_SOURCE -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DABSL_ALLOCATOR_NOTHROW=1 -I../.. -Igen -I../../third_party/abseil-cpp -fno-delete-null-pointer-checks -fno-ident -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pthread -fcolor-diagnostics -fmerge-all-constants -fcrash-diagnostics-dir=../../tools/clang/crashreports -mllvm -instcombine-lower-dbg-declare=0 -ffp-contract=off -flto=thin -fsplit-lto-unit -fwhole-program-vtables -mbranch-protection=standard --target=aarch64-linux-gnu -mno-outline -ffile-compilation-dir=. -no-canonical-prefixes -ftrivial-auto-var-init=pattern -O2 -fdata-sections -ffunction-sections -fno-unique-section-names -fno-omit-frame-pointer -g0 -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -Wall -Wno-unused-variable -Wno-c++11-narrowing -Wno-unused-but-set-variable -Wno-misleading-indentation -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi -Wloop-analysis -Wno-unneeded-internal-declaration -Wenum-compare-conditional -Wno-ignored-pragma-optimize -Wno-deprecated-builtins -Wno-bitfield-constant-conversion -Wno-deprecated-this-capture -Wshorten-64-to-32 -Wimplicit-int-conversion -Wsign-compare -Wsign-conversion -Wtautological-unsigned-zero-compare -std=c++20 -Wno-trigraphs -gsimple-template-names -fno-exceptions -fno-rtti -fvisibility-inlines-hidden -Wbool-conversion -Wconstant-conversion -Wenum-conversion -Wint-conversion -Wliteral-conversion -Wnon-literal-null-conversion -Wnull-conversion -Wobjc-literal-conversion -Wstring-conversion -Wbitfield-enum-conversion -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -march=armv8.5-a -mtune=apple-m1 -O3 -pipe -fstack-protector-strong -fno-plt -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -Wno-builtin-macro-redefined -Wno-unknown-warning-option -c ../../third_party/abseil-cpp/absl/debugging/stacktrace.cc -o obj/third_party/abseil-cpp/absl/debugging/stacktrace/stacktrace.o
In file included from ../../third_party/abseil-cpp/absl/debugging/stacktrace.cc:46:
../../third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc:26:10: error: implicit instantiation of undefined template 'std::numeric_limits'
std::numeric_limits<size_t>::max() - sizeof(void *);
^
/usr/bin/../lib/gcc/aarch64-unknown-linux-gnu/12.1.0/../../../../include/c++/12.1.0/bits/max_size_type.h:53:10: note: template is declared here
struct numeric_limits;
^
1 error generated.
[523/55284] ACTION //chrome/browser/metrics:expired_histograms_array(//build/toolchain/linux/unbundle:default)
ninja: build stopped: subcommand failed.
==> ERROR: A failure occurred in build().
Aborting..."
Custom arm patches are here at https://github.com/archlinuxarm/PKGBUILDs/tree/master/extra/chromium
and they are the patches (0001-0003) that previosuly allowed ungoogled-chromium to build pre-116, and without the patches from that it used to not work, but now at version 116 if i use and dont use the patches the same result up top happens even without the ungoogled-chromium , and with the vanilla arch arm chromium 116 pkgbuild, and with and without these compiler flags ""-march=armv8.5-a -mtune=apple-m1 -O3 -pipe -fstack-protector-strong -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security"" the same result up top with abseil-cpp happens

The patched PKGBUILD is this "# Maintainer: Ungoogled Software Contributors

Maintainer: networkException git@nwex.de
Based on extra/chromium, with ungoogled-chromium patches
Maintainer: 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
pkgver=116.0.5845.140
pkgrel=1
_launcher_ver=8
_gcc_patchset=116-patchset-2

ungoogled chromium variables
_uc_usr=ungoogled-software
_uc_ver=116.0.5845.140-1
pkgdesc="A lightweight approach to removing Google web service dependency"
arch=('x86_64' 'aarch64')
url="https://github.com/ungoogled-software/ungoogled-chromium"
license=('BSD')
depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt'
'ttf-liberation' 'systemd' 'dbus' 'libpulse' 'pciutils' 'libva'
'libffi' 'desktop-file-utils' 'hicolor-icon-theme')
makedepends=('python' 'gn' 'ninja' 'clang' 'lld' 'gperf' 'nodejs' 'pipewire'
'qt5-base' 'java-runtime-headless' 'git')
optdepends=('pipewire: WebRTC desktop sharing under Wayland'
'kdialog: support for native dialogs in Plasma'
'qt5-base: enable Qt5 with --enable-features=AllowQt'
'org.freedesktop.secrets: password storage backend on GNOME / Xfce'
'kwallet: support for storing passwords in KWallet on Plasma')
provides=('chromium')
conflicts=('chromium')
options=('!lto') # Chromium adds its own flags for ThinLTO
source=(https://commondatastorage.googleapis.com/chromium-browser-official/chromium-$pkgver.tar.xz
$pkgname-$_uc_ver.tar.gz::https://github.com/$_uc_usr/ungoogled-chromium/archive/$_uc_ver.tar.gz
https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver/chromium-launcher-$_launcher_ver.tar.gz
https://github.com/stha09/chromium-patches/releases/download/chromium-$_gcc_patchset/chromium-$_gcc_patchset.tar.xz
chromium-drirc-disable-10bpc-color-configs.conf
use-oauth2-client-switches-as-default.patch
REVERT-disable-autoupgrading-debug-info.patch)
sha256sums=('f89677b9da05baa569fd143a3456cb5cbce8bde9ea7d10b4f3907dcd1132716c'
'773743829f782fabe33d84cb7f719bd8296875e270e37f954d1561a27ace8cc4'
'213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a'
'25ad7c1a5e0b7332f80ed15ccf07d7e871d8ffb4af64df7c8fef325a527859b0'
'babda4f5c1179825797496898d77334ac067149cac03d797ab27ac69671a7feb'
'e393174d7695d0bafed69e868c5fbfecf07aa6969f3b64596d0bae8b067e1711'
'1b782b0f6d4f645e4e0daa8a4852d63f0c972aa0473319216ff04613a0592a69')

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=(
#[brotli]=brotli
[dav1d]=dav1d
[ffmpeg]=ffmpeg
[flac]=flac
[fontconfig]=fontconfig
[freetype]=freetype2
[harfbuzz-ng]=harfbuzz
[icu]=icu
[jsoncpp]=jsoncpp
#[libaom]=aom # https://aomedia.googlesource.com/aom/+/706ee36dcc82
#[libavif]=libavif # AOMediaCodec/libavif@4d2776a3
[libdrm]=
[libjpeg]=libjpeg
[libpng]=libpng
#[libvpx]=libvpx
[libwebp]=libwebp
[libxml]=libxml2
[libxslt]=libxslt
[opus]=opus
[re2]=re2
[snappy]=snappy
[woff2]=woff2
[zlib]=minizip
)
_unwanted_bundled_libs=(
{!_system_libs[@]} | sed 's/^libjpeg$/&_turbo/')
)
depends+=(${_system_libs[@]})

prepare() {
cd "$srcdir/chromium-$pkgver"

Allow building against system libraries in official builds
sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/'
tools/generate_shim_headers/generate_shim_headers.py

https://crbug.com/893950
sed -i -e 's//malloc/' -e 's//free/'
third_party/blink/renderer/core/xml/.cc
third_party/blink/renderer/core/xml/parser/xml_document_parser.cc
third_party/libxml/chromium/.cc
third_party/maldoca/src/maldoca/ole/oss_utils.h

Use the --oauth2-client-id= and --oauth2-client-secret= switches for
setting GOOGLE_DEFAULT_CLIENT_ID and GOOGLE_DEFAULT_CLIENT_SECRET at
runtime -- this allows signing into Chromium without baked-in values
patch -Np1 -i ../use-oauth2-client-switches-as-default.patch

Upstream fixes
Revert addition of compiler flag that needs newer clang
patch -Rp1 -i ../REVERT-disable-autoupgrading-debug-info.patch

Fixes for building with libstdc++ instead of libc++
patch -Np1 -i ../patches/chromium-114-maldoca-include.patch
patch -Np1 -i ../patches/chromium-114-ruy-include.patch
patch -Np1 -i ../patches/chromium-114-vk_mem_alloc-include.patch
patch -Np1 -i ../patches/chromium-116-object_paint_properties_sparse-include.patch
patch -Np1 -i ../patches/chromium-116-profile_view_utils-include.patch

Example
patch -Np1 -i /home/sus/tmp/1.patch
patch -Np1 -i /home/sus/tmp/2.patch
patch -Np1 -i /home/sus/tmp/3.patch

Link to system tools required by the build
mkdir -p third_party/node/linux/node-linux-x64/bin
ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/
ln -s /usr/bin/java third_party/jdk/current/bin/

Ungoogled Chromium changes
_ungoogled_repo="$srcdir/$pkgname-$_uc_ver"
_utils="${_ungoogled_repo}/utils"
msg2 'Pruning binaries'
python "$_utils/prune_binaries.py" ./ "$_ungoogled_repo/pruning.list"
msg2 'Applying patches'
python "$_utils/patches.py" apply ./ "$_ungoogled_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 ./

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 "third_party/$_lib" -type f
! -path "third_party/$_lib/chromium/"
! -path "third_party/$_lib/google/"
! -path "third_party/harfbuzz-ng/utils/hb_scoped.h"
! -regex '.*.(gn|gni|isolate)'
-delete
done

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

build() {
make -C chromium-launcher-$_launcher_ver

cd "$srcdir/chromium-$pkgver"

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=ar
export NM=nm
export CFLAGS="-march=armv8.5-a -mtune=apple-m1 -O3 -pipe -fstack-protector-strong -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security"
export CXXFLAGS=$CFLAGS

local _flags=(
'custom_toolchain="//build/toolchain/linux/unbundle:default"'
'host_toolchain="//build/toolchain/linux/unbundle:default"'
'clang_base_path="/usr"'
'is_official_build=true' # implies is_cfi=true on x86_64
'symbol_level=0' # sufficient for backtraces on x86(_64)
#'chrome_pgo_phase=0' # needs newer clang to read the bundled PGO profile
'disable_fieldtrial_testing_config=true'
'blink_enable_generated_code_formatting=false'
'ffmpeg_branding="Chrome"'
'proprietary_codecs=true'
'rtc_use_pipewire=true'
'link_pulseaudio=true'
'use_custom_libcxx=false'
'use_sysroot=false'
'use_system_libffi=true'
'use_custom_libcxx=false'
'enable_widevine=true'
'enable_rust=false'
'use_vaapi=true'
'enable_platform_hevc=true'
'enable_hevc_parser_and_hw_decoder=true'
)

if [[ -n ${_system_libs[icu]+set} ]]; then
_flags+=('icu_use_data_file=false')
fi

Append ungoogled chromium flags to _flags array
_ungoogled_repo="$srcdir/$pkgname-$_uc_ver"
readarray -t -O ${#_flags[@]} _flags < "${_ungoogled_repo}/flags.gn"

See #123
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__='

Do not warn about unknown warning options
CFLAGS+=' -Wno-unknown-warning-option'
CXXFLAGS+=' -Wno-unknown-warning-option'

Let Chromium set its own symbol level
CFLAGS=${CFLAGS/-g }
CXXFLAGS=${CXXFLAGS/-g }

-fvar-tracking-assignments is not recognized by clang
CFLAGS=${CFLAGS/-fvar-tracking-assignments}
CXXFLAGS=${CXXFLAGS/-fvar-tracking-assignments}

#123
CFLAGS=${CFLAGS/-fexceptions}
CFLAGS=${CFLAGS/-fcf-protection}
CXXFLAGS=${CXXFLAGS/-fexceptions}
CXXFLAGS=${CXXFLAGS/-fcf-protection}

This appears to cause random segfaults when combined with ThinLTO
https://bugs.archlinux.org/task/73518
CFLAGS=${CFLAGS/-fstack-clash-protection}
CXXFLAGS=${CXXFLAGS/-fstack-clash-protection}

https://crbug.com/957519#c122
CXXFLAGS=${CXXFLAGS/-Wp,-D_GLIBCXX_ASSERTIONS}

msg2 'Configuring Chromium'
gn gen out/Release --args="${_flags[*]}"
msg2 'Building Chromium'
ninja -C out/Release 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-$pkgver"

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

install -Dm644 ../chromium-drirc-disable-10bpc-color-configs.conf
"$pkgdir/usr/share/drirc.d/10-$pkgname.conf"

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"

install -Dm644 chrome/installer/linux/common/chromium-browser/chromium-browser.appdata.xml
"$pkgdir/usr/share/metainfo/chromium.appdata.xml"
sed -ni
-e 's/chromium-browser.desktop/chromium.desktop/'
-e '/<update_contact>/d'
-e '/

/N;/

\n.*(We invite|Chromium supports Vorbis)/,/
/d'
-e '/^<?xml/,$p'
"$pkgdir/usr/share/metainfo/chromium.appdata.xml"

local toplevel_files=(
chrome_100_percent.pak
chrome_200_percent.pak
chrome_crashpad_handler
libqt5_shim.so
resources.pak
v8_context_snapshot.bin
ANGLE

libEGL.so
libGLESv2.so
SwiftShader ICD

libvk_swiftshader.so
vk_swiftshader_icd.json
)

if [[ -z ${_system_libs[icu]+set} ]]; then
toplevel_files+=(icudtl.dat)
fi

cp "${toplevel_files[@]/#/out/Release/}" "$pkgdir/usr/lib/chromium/"
install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Release/locales/*.pak

for size in 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 ft=sh:" and trying the normal one from this repo with just a arch change to arm64 also fails
OS Asahi Arch Linux
CPU M1
Kernel: 6.4.0-asahi-10-1-edge-ARCH
DE: KDE 5.27

I fear I won't be able to help in general and until https://archlinuxarm.org/packages/aarch64/chromium has 116.x

why is there the abseil-cpp error, even with the offical arch linux arm chromium 116 pkgbuild from the github (https://github.com/archlinuxarm/PKGBUILDs/tree/master/extra/chromium), and this vanilla pkgbuiild, the aur one, and the arch arm patched version of the pkgbuild

new issue

a new issue

this is outdated