ungoogled-software / ungoogled-chromium-archlinux

Arch Linux packaging for ungoogled-chromium
BSD 3-Clause "New" or "Revised" License
338 stars 37 forks source link

ungoogled-chromium does not compile anymore on Arch Linux ARM #239

Closed ghost closed 1 year ago

ghost commented 1 year ago

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 -DDATE= -DTIME= -DTIMESTAMP= -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::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+=' -DDATE= -DTIME= -DTIMESTAMP='

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 '//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/productlogo$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/productlogo$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

networkException commented 1 year ago

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

ghost commented 1 year ago

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

ghost commented 1 year ago

new issue

ghost commented 1 year ago

a new issue

ghost commented 1 year ago

this is outdated