From 936433a5deb6ccc8f8476096f2c2b8dc72c33388 Mon Sep 17 00:00:00 2001 From: zorz Date: Thu, 2 Apr 2026 01:11:55 +0300 Subject: chromium musl --- chromium/MAKEPKG | 228 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 228 insertions(+) create mode 100644 chromium/MAKEPKG (limited to 'chromium/MAKEPKG') diff --git a/chromium/MAKEPKG b/chromium/MAKEPKG new file mode 100644 index 0000000..4674fe9 --- /dev/null +++ b/chromium/MAKEPKG @@ -0,0 +1,228 @@ +#!/bin/mkpkg +# description: Open-source web browser +# url: https://www.chromium.org/ +# +# Patches: +# copium — musl basics (Alpine/selfisekai) +# gentoo — system toolchain support (Matt Jolly) +# patches/ — musl deep fixes (Chimera cports + flux) + +name=chromium +version=146.0.7680.164 +release=1 +_copium=146.4 +_gentoo=146-1 +depends=(gtk3 nss nspr harfbuzz icu libpng libjpeg-turbo libwebp + zlib libxml2 fontconfig freetype libffi libxkbcommon alsa-lib + wayland mesa libdrm dbus) +makedeps=(gn ninja rust rust-bindgen python3 nodejs flatbuffers gperf + bsd-headers gcc-compat) +source=(https://github.com/chromium-linux-tarballs/chromium-tarballs/releases/download/$version/chromium-$version-linux.tar.xz + https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.53.3.tgz + https://codeberg.org/selfisekai/copium/archive/$_copium.tar.gz + https://gitlab.com/Matt.Jolly/chromium-patches/-/archive/$_gentoo/chromium-patches-$_gentoo.tar.gz) + +patch() { + cd chromium-$version + + # Replace bundled rollup with wasm-node (pure WASM — no native binary needed on musl) + rm -rf third_party/devtools-frontend/src/node_modules/rollup + cp -a "$SRC"/package \ + third_party/devtools-frontend/src/node_modules/rollup + + # Copium patches (musl basics) + for p in "$SRC"/copium/cr*.patch; do + case "$p" in *rust-pre1.8*|*rust-pre1.90*|*no-unrar*) continue ;; esac + patch -Np1 -i "$p" + done + + # Gentoo patches (system toolchain) + patch -Np1 -i "$SRC"/chromium-patches-$_gentoo/chromium-145-compiler.patch + patch -Np1 -i "$SRC"/chromium-patches-$_gentoo/chromium-144-bindgen-custom-toolchain.patch + patch -Np1 -i "$SRC"/chromium-patches-$_gentoo/chromium-117-material-color-include.patch + patch -Np1 -i "$SRC"/chromium-patches-$_gentoo/chromium-145-revert-rustfmt.patch || true + + # flux musl patches + for p in \ + 008-fstatat64 \ + 016-musl-sandbox \ + 017-musl-tid-caching \ + 019-musl-no-execinfo \ + 020-musl-no-mallinfo \ + 021-musl-no-res-ninit \ + 022-no-sandbox-settls \ + 027-temp-failure-retry \ + 033-perfetto-get-thread-name \ + 035-breakpad-no-getcontext \ + disable-dns_config_service \ + noclanglibs \ + sanitizer-no-death-callback \ + terminal-fdset \ + llvm21-fixes \ + ; do + patch -Np1 -i "$PKGMK_SOURCE_DIR"/patches/$p.patch + done + + # Rust target triple + sed -i 's/unknown-linux-gnu/unknown-linux-musl/g' build/config/rust.gni + echo 'x86_64-unknown-linux-musl' >> build/rust/known-target-triples.txt + + # Enable nightly Rust features + sed -i '1a import os; os.environ["RUSTC_BOOTSTRAP"] = "1"' \ + build/rust/gni_impl/rustc_wrapper.py + + # Strip -Werror + sed -i 's/-Werror//g' build/config/compiler/BUILD.gn + + # musl: libc++ rune table + sed -i '1i #define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE' \ + third_party/libc++/src/include/__config + + # musl: guard glibc-only stack trace helper + sed -i 's/OutputToStreamWithPrefixImpl(os, prefix_string);/#if defined(__GLIBC__)\n OutputToStreamWithPrefixImpl(os, prefix_string);\n#endif/' \ + base/debug/stack_trace.cc + + # Fix dbus::Bus incomplete type + sed -i '/chrome_browser_main_linux.h/a #include "dbus/bus.h"' \ + chrome/browser/chrome_browser_main_linux.cc +} + +sha256sums=( + "ea7350702cb827c94b786fc1fa51c24c0401e782c9c08dd7ca25a676da4a8f8c" + "04b101456db24503a6facaade777f4bfb58909195208d4dbbf7dc4217bf71289" + "bd7bd0984d048d6844195f4aa18b24a0f56603814c243ed32190746d8ba8d7c5" + "96d6562120964b0c9e1a2bedf4335e0bf20f5e7d67a443bb26c651b0167a6a6b" +) + +build() { + cd chromium-$version + + export CC=clang CXX=clang++ AR=llvm-ar NM=llvm-nm RANLIB=llvm-ranlib LD=ld.lld + export CFLAGS="-O2 -pipe -Wno-unknown-warning-option -Wno-builtin-macro-redefined -Wno-deprecated-declarations" + export CXXFLAGS="$CFLAGS -Wno-invalid-constexpr" + export LDFLAGS="-fuse-ld=lld" + export RUSTC_BOOTSTRAP=1 + export DEPOT_TOOLS_UPDATE=0 + export VPYTHON_BYPASS="manually managed python not supported by chrome operations" + export PKG_CONFIG_PATH=/lib/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig + export HOME="$PWD"/fake-home && mkdir -p "$HOME" + + # System node + toolchain stubs + mkdir -p third_party/node/linux/node-linux-x64/bin + ln -sf /usr/bin/node third_party/node/linux/node-linux-x64/bin/node + mkdir -p third_party/llvm-build/Release+Asserts/bin + ln -sf /usr/bin/clang third_party/llvm-build/Release+Asserts/bin/ + ln -sf /usr/bin/clang++ third_party/llvm-build/Release+Asserts/bin/ + + # Stub node version check + printf '#!/usr/bin/env python3\nimport sys; open(sys.argv[sys.argv.index("--out_file")+1], "w").write("ok")\n' \ + > third_party/node/check_version.py + + mkdir -p out/Release + cat > out/Release/args.gn << EOF +is_clang = true +use_lld = true +is_debug = false +is_official_build = true +symbol_level = 0 +is_musl = true +custom_toolchain = "//build/toolchain/linux/unbundle:default" +host_toolchain = "//build/toolchain/linux/unbundle:default" +rust_sysroot_absolute = "$(rustc --print sysroot)" +rust_bindgen_root = "/usr" +bindgen_libclang_path = "/usr/lib" +clang_base_path = "/usr" +rustc_version = "0" +use_sysroot = false +treat_warnings_as_errors = false +fatal_linker_warnings = false +clang_use_chrome_plugins = false +use_custom_libcxx = true +use_safe_libstdcxx = false +chrome_pgo_phase = 0 +is_cfi = false +use_thin_lto = false +use_clang_modules = false +blink_enable_generated_code_formatting = false +use_system_harfbuzz = true +use_system_libffi = true +use_bundled_fontconfig = false +use_ozone = true +ozone_platform_wayland = true +ozone_platform_x11 = false +ozone_platform_headless = true +use_xkbcommon = true +use_alsa = true +use_pulseaudio = false +rtc_use_pipewire = false +use_vaapi = true +use_dbus = true +use_cups = false +use_kerberos = false +enable_widevine = false +enable_hangout_services_extension = false +enable_nocompile_tests = false +safe_browsing_use_unrar = false +proprietary_codecs = true +ffmpeg_branding = "Chrome" +enable_ml_internal = false +target_cpu = "x64" +EOF + + gn gen out/Release || return 1 + + # Remove bogus -I/include from generated ninja files + find out/Release -name '*.ninja' -exec sed -i 's| -I/include||g; s| -isystem/include||g' {} + + + # System flatbuffers + ln -sf /usr/bin/flatc out/Release/flatc + + ulimit -n 4096 + ninja -C out/Release -j8 chrome chrome_crashpad_handler || return 1 + + # Install + d="$PKG/usr/lib/chromium" + install -d "$d" "$PKG/usr/bin" + + install -m755 out/Release/chrome "$d/" + install -m755 out/Release/chrome_crashpad_handler "$d/" + + # Data files + install -m644 out/Release/*.pak "$d/" + install -m644 out/Release/*.bin "$d/" 2>/dev/null || true + [ -f out/Release/icudtl.dat ] && install -m644 out/Release/icudtl.dat "$d/" + + # Shared libraries (skip .TOC build artifacts) + for f in out/Release/*.so out/Release/*.so.*; do + [ -f "$f" ] && case "$f" in *.TOC) continue ;; esac && install -m644 "$f" "$d/" + done + + # Vulkan SwiftShader ICD + [ -f out/Release/vk_swiftshader_icd.json ] && install -m644 out/Release/vk_swiftshader_icd.json "$d/" + + # XDG helpers + for f in xdg-mime xdg-settings; do + [ -f out/Release/$f ] && install -m755 out/Release/$f "$d/" + done + + # Locales — only en-US and el (Greek) + install -d "$d/locales" + for loc in en-US el; do + install -m644 out/Release/locales/${loc}.pak "$d/locales/" + for v in FEMININE MASCULINE NEUTER; do + [ -f out/Release/locales/${loc}_${v}.pak ] && \ + install -m644 out/Release/locales/${loc}_${v}.pak "$d/locales/" + done + done + + # Wrapper + printf '#!/bin/sh\nexec /usr/lib/chromium/chrome --ozone-platform-hint=auto "$@"\n' > "$PKG/usr/bin/chromium" + chmod 755 "$PKG/usr/bin/chromium" +} + +signify() { + untrusted comment: public key + RWTZ9IduCSQ/mL8337TEUinPwT92xFEUpD92hkS7IxcOnzTt9QdpohT3 +} + +# vim: filetype=sh -- cgit v1.2.3