Archived
1
0
Fork 0

gnu: ungoogled-chromium: Don't use the bundled libc++.

This partially reverts f01ec472b9.

* gnu/packages/chromium.scm (%preserved-third-party-files): Unbundle libcxx,
re2, and jsoncpp.
(%debian-patches): Add 'system/jsoncpp.patch'.
(ungoogled-chromium-snippet): Replace re2 GN files.
(ungoogled-chromium)[arguments]: Add use_custom_libcxx, rtc_build_json, and
rtc_jsoncpp_root to #:configure-flags.  Don't override CPLUS_INCLUDE_PATH.
Add substitution.
[inputs]: Add JSONCPP and RE2.
This commit is contained in:
Marius Bakke 2022-02-02 18:12:47 +01:00
parent f38d8e050e
commit 0cadd09ad3
No known key found for this signature in database
GPG key ID: A2A06DF2A33A54FA

View file

@ -82,9 +82,6 @@
"base/third_party/symbolize" ;BSD-3 "base/third_party/symbolize" ;BSD-3
"base/third_party/xdg_mime" ;LGPL2.0+ or Academic 2.0 "base/third_party/xdg_mime" ;LGPL2.0+ or Academic 2.0
"base/third_party/xdg_user_dirs" ;Expat "base/third_party/xdg_user_dirs" ;Expat
;; XXX: Chromium requires a newer C++ standard library. Remove this when
;; the default GCC is 9 or later.
"buildtools/third_party/libc++" ;ASL2.0, with LLVM exceptions
"chrome/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+ "chrome/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+
"courgette/third_party/bsdiff" ;BSD-2, BSD protection license "courgette/third_party/bsdiff" ;BSD-2, BSD protection license
"courgette/third_party/divsufsort" ;Expat "courgette/third_party/divsufsort" ;Expat
@ -170,8 +167,6 @@
"third_party/iccjpeg" ;IJG "third_party/iccjpeg" ;IJG
"third_party/inspector_protocol" ;BSD-3 "third_party/inspector_protocol" ;BSD-3
"third_party/jinja2" ;BSD-3 "third_party/jinja2" ;BSD-3
;; XXX: Unbundle this when switching back to libstdc++.
"third_party/jsoncpp" ;Public Domain or Expat
"third_party/jstemplate" ;ASL2.0 "third_party/jstemplate" ;ASL2.0
"third_party/khronos" ;Expat, SGI "third_party/khronos" ;Expat, SGI
"third_party/leveldatabase" ;BSD-3 "third_party/leveldatabase" ;BSD-3
@ -237,9 +232,6 @@
"third_party/protobuf/third_party/six" ;Expat "third_party/protobuf/third_party/six" ;Expat
"third_party/pyjson5" ;ASL2.0 "third_party/pyjson5" ;ASL2.0
"third_party/qcms" ;Expat "third_party/qcms" ;Expat
;; XXX: System re2 cannot be used when Chromium uses libc++ because the re2
;; ABI relies on libstdc++ internals. See build/linux/unbundle/re2.gn.
"third_party/re2" ;BSD-3
"third_party/rnnoise" ;BSD-3 "third_party/rnnoise" ;BSD-3
"third_party/ruy" ;ASL2.0 "third_party/ruy" ;ASL2.0
"third_party/s2cellid" ;ASL2.0 "third_party/s2cellid" ;ASL2.0
@ -348,6 +340,8 @@
(define %debian-patches (define %debian-patches
(list (debian-patch "fixes/nomerge.patch" (list (debian-patch "fixes/nomerge.patch"
"0lybs2b5gk08j8cr6vjrs9d3drd7qfw013z2r0y00by8dnpm74i3") "0lybs2b5gk08j8cr6vjrs9d3drd7qfw013z2r0y00by8dnpm74i3")
(debian-patch "system/jsoncpp.patch"
"16lvhci10hz0q9axc6p921b95a76kbzcla5cl81czxzfwnynr1w5")
(debian-patch "system/zlib.patch" (debian-patch "system/zlib.patch"
"0j313bd3q8qc065j60x97dckrfgbwl4qxc8jhz33iihvv4lwziwv") "0j313bd3q8qc065j60x97dckrfgbwl4qxc8jhz33iihvv4lwziwv")
(debian-patch "system/openjpeg.patch" (debian-patch "system/openjpeg.patch"
@ -449,7 +443,7 @@
"--system-libraries" "ffmpeg" "flac" "fontconfig" "--system-libraries" "ffmpeg" "flac" "fontconfig"
"freetype" "harfbuzz-ng" "icu" "libdrm" "libevent" "freetype" "harfbuzz-ng" "icu" "libdrm" "libevent"
"libjpeg" "libpng" "libwebp" "libxml" "libxslt" "libjpeg" "libpng" "libwebp" "libxml" "libxslt"
"openh264" "opus" "zlib"))))) "openh264" "opus" "re2" "zlib")))))
(define opus+custom (define opus+custom
(package/inherit opus (package/inherit opus
@ -503,6 +497,7 @@
"clang_use_chrome_plugins=false" "clang_use_chrome_plugins=false"
"is_cfi=false" ;requires ThinLTO "is_cfi=false" ;requires ThinLTO
"use_thin_lto=false" ;XXX lld segfaults "use_thin_lto=false" ;XXX lld segfaults
"use_custom_libcxx=false"
"chrome_pgo_phase=0" "chrome_pgo_phase=0"
"use_sysroot=false" "use_sysroot=false"
"goma_dir=\"\"" "goma_dir=\"\""
@ -577,7 +572,11 @@
"rtc_use_pipewire=true" "rtc_use_pipewire=true"
"rtc_link_pipewire=true" "rtc_link_pipewire=true"
;; Don't use bundled sources. ;; Don't use bundled sources.
"rtc_build_json=true" ;FIXME: libc++ std::string ABI difference "rtc_build_json=false"
(string-append "rtc_jsoncpp_root=\""
(search-input-directory %build-inputs
"include/json")
"\"")
"rtc_build_libevent=false" "rtc_build_libevent=false"
;; XXX: Use the bundled libvpx for WebRTC because unbundling ;; XXX: Use the bundled libvpx for WebRTC because unbundling
;; currently fails (see above), and the versions must match. ;; currently fails (see above), and the versions must match.
@ -623,6 +622,10 @@
(find-files (string-append "third_party/webrtc/modules" (find-files (string-append "third_party/webrtc/modules"
"/audio_coding/codecs/opus"))) "/audio_coding/codecs/opus")))
(substitute* "third_party/webrtc/rtc_base/strings/json.h"
(("#include \"third_party/jsoncpp/")
"#include \"json/"))
;; Many files try to include ICU headers from "third_party/icu/...". ;; Many files try to include ICU headers from "third_party/icu/...".
;; Remove the "third_party/" prefix to use system headers instead. ;; Remove the "third_party/" prefix to use system headers instead.
(substitute* (find-files "chrome" "\\.cc$") (substitute* (find-files "chrome" "\\.cc$")
@ -683,18 +686,6 @@
"include/c++")) "include/c++"))
(node (search-input-file (or native-inputs inputs) (node (search-input-file (or native-inputs inputs)
"/bin/node"))) "/bin/node")))
;; Remove the default compiler from CPLUS_INCLUDE_PATH to
;; prevent header conflict with the bundled libcxx.
(setenv "CPLUS_INCLUDE_PATH"
(string-join
(delete c++
(string-split (getenv "CPLUS_INCLUDE_PATH")
#\:))
":"))
(format #t
"environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%"
(getenv "CPLUS_INCLUDE_PATH"))
;; Define the GN toolchain. ;; Define the GN toolchain.
(setenv "AR" "llvm-ar") (setenv "NM" "llvm-nm") (setenv "AR" "llvm-ar") (setenv "NM" "llvm-nm")
(setenv "CC" "clang") (setenv "CXX" "clang++") (setenv "CC" "clang") (setenv "CXX" "clang++")
@ -846,6 +837,7 @@
gtk+ gtk+
harfbuzz-3.0 harfbuzz-3.0
icu4c icu4c
jsoncpp
lcms lcms
libevent libevent
libffi libffi
@ -879,6 +871,7 @@
pciutils pciutils
pipewire-0.3 pipewire-0.3
pulseaudio pulseaudio
re2
snappy snappy
speech-dispatcher speech-dispatcher
eudev eudev