summary refs log tree commit diff
path: root/gnu/packages/chromium.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/chromium.scm')
-rw-r--r--gnu/packages/chromium.scm154
1 files changed, 72 insertions, 82 deletions
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index 07fd2375d7..e321ae3fe6 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2019, 2020, 2021, 2022 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2019-2023 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -27,7 +27,6 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
-  #:use-module (gnu packages assembly)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
@@ -56,11 +55,11 @@
   #:use-module (gnu packages nss)
   #:use-module (gnu packages pciutils)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages protobuf)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages regex)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages speech)
@@ -69,10 +68,8 @@
   #:use-module (gnu packages video)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
-  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xorg)
-  #:use-module (ice-9 match)
-  #:use-module (srfi srfi-1))
+  #:use-module (ice-9 match))
 
 (define %preserved-third-party-files
   '("base/third_party/cityhash" ;Expat
@@ -100,6 +97,7 @@
     "third_party/angle/src/third_party/volk" ;Expat
     "third_party/apple_apsl" ;APSL2.0
     "third_party/axe-core" ;MPL2.0
+    "third_party/bidimapper" ;ASL2.0
     "third_party/blink" ;BSD-3, LGPL2+
     "third_party/boringssl" ;OpenSSL/ISC (Google additions are ISC)
     "third_party/boringssl/src/third_party/fiat" ;Expat
@@ -135,7 +133,6 @@
     ;; TODO: can likely be unbundled when Vulkan is updated.
     "third_party/dawn/third_party/khronos" ;ASL2.0
     "third_party/dawn/third_party/gn/webgpu-cts" ;BSD-3
-    "third_party/depot_tools/owners.py" ;BSD-3
     "third_party/devtools-frontend" ;BSD-3
     "third_party/devtools-frontend/src/front_end/third_party/acorn" ;Expat
     "third_party/devtools-frontend/src/front_end/third_party\
@@ -151,6 +148,8 @@
     "third_party/devtools-frontend/src/front_end/third_party/lodash-isequal" ;Expat
     "third_party/devtools-frontend/src/front_end/third_party/marked" ;Expat, BSD-3
     "third_party/devtools-frontend/src/front_end/third_party/puppeteer" ;ASL2.0
+    "third_party/devtools-frontend/src/front_end/third_party/puppeteer\
+/package/lib/esm/third_party/mitt" ;Expat
     "third_party/devtools-frontend/src/front_end/third_party/wasmparser" ;ASL2.0
     "third_party/devtools-frontend/src/third_party/pyjson5" ;ASL2.0
     "third_party/devtools-frontend/src/third_party/typescript" ;ASL2.0
@@ -173,6 +172,7 @@
     "third_party/hunspell" ;MPL1.1/GPL2+/LGPL2.1+
     "third_party/iccjpeg" ;IJG
     "third_party/inspector_protocol" ;BSD-3
+    "third_party/ipcz" ;BSD-3
     "third_party/jinja2" ;BSD-3
     "third_party/jstemplate" ;ASL2.0
     "third_party/khronos" ;Expat, SGI
@@ -181,11 +181,11 @@
     "third_party/libaddressinput" ;ASL2.0
     "third_party/libaom" ;BSD-2 or "Alliance for Open Media Patent License 1.0"
     "third_party/libaom/source/libaom/third_party/fastfeat" ;BSD-3
+    "third_party/libaom/source/libaom/third_party/SVT-AV1" ;BSD-3
     "third_party/libaom/source/libaom/third_party/vector" ;Expat
     "third_party/libaom/source/libaom/third_party/x86inc" ;ISC
     "third_party/libjxl" ;ASL2.0
     "third_party/libgav1" ;ASL2.0
-    "third_party/libgifcodec" ;MPL1.1/GPL2+/LGPL2.1+, BSD-3, BSD-2
     "third_party/libjingle_xmpp" ;BSD-3
     "third_party/libphonenumber" ;ASL2.0
     "third_party/libsecret" ;LGPL2.1+
@@ -214,7 +214,7 @@
     "third_party/nasm" ;BSD-2
     "third_party/nearby" ;ASL2.0
     "third_party/node" ;Expat
-    "third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2" ;BSD-2
+    "third_party/omnibox_proto" ;BSD-3
     "third_party/one_euro_filter" ;BSD-3
     "third_party/openscreen" ;BSD-3
     "third_party/openscreen/src/third_party/tinycbor" ;Expat
@@ -243,10 +243,9 @@
     "third_party/ruy" ;ASL2.0
     "third_party/s2cellid" ;ASL2.0
     "third_party/securemessage" ;ASL2.0
+    "third_party/selenium-atoms" ;ASL2.0
     "third_party/shell-encryption" ;ASL2.0
     "third_party/skia" ;BSD-3
-    "third_party/skia/include/third_party/skcms" ;BSD-3
-    "third_party/skia/third_party/skcms" ;BSD-3
     "third_party/skia/third_party/vulkanmemoryallocator" ;BSD-3, Expat
     "third_party/smhasher" ;Expat, public domain
 
@@ -273,7 +272,7 @@
     "third_party/utf" ;Expat
     "third_party/vulkan-deps" ;ASL2.0, BSD-3, Expat
     "third_party/vulkan_memory_allocator" ;Expat
-    "third_party/wayland/protocol" ;Expat
+    "third_party/wayland/src/protocol" ;Expat
     "third_party/wayland/stubs" ;BSD-3, Expat
     "third_party/wayland/wayland_scanner_wrapper.py" ;BSD-3
     "third_party/wayland-protocols" ;Expat
@@ -317,9 +316,10 @@
   ;; run the Blink performance tests, just remove everything to save ~70MiB.
   '("third_party/blink/perf_tests"))
 
-(define %chromium-version "105.0.5195.125")
+(define %chromium-version "109.0.5414.119")
 (define %ungoogled-revision (string-append %chromium-version "-1"))
 (define %debian-revision "debian/102.0.5005.61-1")
+(define %arch-revision "a0b214b3bdfbc7ee3d9004a70494a2b9e3da2c80")
 
 (define %ungoogled-origin
   (origin
@@ -329,7 +329,7 @@
     (file-name (git-file-name "ungoogled-chromium" %ungoogled-revision))
     (sha256
      (base32
-      "0k16wma9lj9q34xgz377nasnfzcw7wi73l91r41yilvgb3l2fgw8"))))
+      "1nb0099gwkhxv3zc184jyvpl5jrrq194pv6yq95nbc27vw6zz7qv"))))
 
 (define %debian-origin
   (origin
@@ -344,19 +344,6 @@
      (base32
       "1ln6r1qzlr7dsgvcbssvvc34my4mpkwv9hmvlb2dhjncs7isp65j"))))
 
-(define %chromium-gcc-patchset
-  (let ((commit "chromium-105-patchset-1"))
-    (origin
-      (method git-fetch)
-      (uri (git-reference
-            (url "https://github.com/stha09/chromium-patches")
-            (commit commit)))
-      (file-name (git-file-name "chromium-gcc-patches"
-                                (string-drop commit 9)))
-      (sha256
-       (base32
-        "08c3pbdqjdqi7rmyqkkh6q429611ikakf4gkzwg1gr07vyknwkfa")))))
-
 (define (origin-file origin file)
   (computed-file
    (basename file)
@@ -372,28 +359,27 @@
          "system/zlib.patch"
          "system/openjpeg.patch")))
 
-(define (gcc-patch name)
-  (origin-file %chromium-gcc-patchset name))
-
-(define %gcc-patches
-  (map gcc-patch
-       '("chromium-105-AdjustMaskLayerGeometry-ceilf.patch"
-         "chromium-105-Bitmap-include.patch"
-         "chromium-105-browser_finder-include.patch"
-         "chromium-105-raw_ptr-noexcept.patch"
-         "chromium-105-Trap-raw_ptr.patch")))
-
-;; Take a patch from Arch that reverts a change which requires an unreleased
-;; version of ffmpeg.
-(define %ungoogled-chromium-unroll-ffmpeg.patch
+(define (arch-patch revision name hash)
   (origin
     (method url-fetch)
-    (uri "https://raw.githubusercontent.com/archlinux/svntogit-packages\
-/f3225f99b900e11ac900725992ea883142d7309c/trunk/roll-src-third_party-ffmpeg.patch")
-    (file-name "ungoogled-chromium-unroll-ffmpeg.patch")
-    (sha256
-     (base32
-      "0i7crn6fcwq09kd6a4smqnffaldyv61lmv2p0drcnpfrwalmkprh"))))
+    (uri (string-append "https://raw.githubusercontent.com/archlinux"
+                        "/svntogit-packages/" revision "/trunk/" name))
+    (sha256 (base32 hash))))
+
+(define %reverse-patches
+  (list
+   ;; These patches revert changes that require an unreleased ffmpeg.
+   (arch-patch %arch-revision "REVERT-roll-src-third_party-ffmpeg-m102.patch"
+               "0i7crn6fcwq09kd6a4smqnffaldyv61lmv2p0drcnpfrwalmkprh")
+   (arch-patch %arch-revision "REVERT-roll-src-third_party-ffmpeg-m106.patch"
+               "0li10cvxnppmmmsc7w77b1s7z02s5bzd39zsal9x768708fx64jc")))
+
+(define %arch-patches
+  (list
+   (arch-patch %arch-revision "disable-GlobalMediaControlsCastStartStop.patch"
+               "00m361ka38d60zpbss7qnfw80vcwnip2pjcz3wf46wd2sqi1nfvz")
+   (arch-patch %arch-revision "fix-the-way-to-handle-codecs-in-the-system-icu.patch"
+               "1qy7ldw7lnfbg0dl49m7myrflw0ps80adaisq5dqjndhn0rcbmd5")))
 
 (define %guix-patches
   (list (local-file
@@ -412,6 +398,9 @@
          (assume-valid-file-name
           (search-patch "ungoogled-chromium-system-nspr.patch")))))
 
+(define %patches
+  (append %debian-patches %arch-patches %guix-patches))
+
 ;; This is a source 'snippet' that does the following:
 ;; *) Applies various patches for unbundling purposes and libstdc++ compatibility.
 ;; *) Runs the ungoogled patch-, domain substitution-, and scrubbing scripts.
@@ -433,11 +422,13 @@
           (for-each (lambda (patch)
                       (invoke "patch" "-p1" "--force" "--input"
                               patch "--no-backup-if-mismatch"))
-                    (append '#+%debian-patches '#+%guix-patches
-                            '#+%gcc-patches))
+                    '#+%patches)
 
-          (invoke "patch" "-Rp1" "--force" "--input" "--no-backup-if-mismatch"
-                  "--input" #$%ungoogled-chromium-unroll-ffmpeg.patch)
+          ;; These patches are "reversed", i.e. their changes should be undone.
+          (for-each (lambda (patch)
+                      (invoke "patch" "-Rp1" "-F3" "--force" "--input"
+                              patch "--no-backup-if-mismatch"))
+                    '#+%reverse-patches)
 
           (with-directory-excursion #+%ungoogled-origin
             (format #t "Ungooglifying...~%")
@@ -492,12 +483,7 @@
 (define-public ungoogled-chromium
   (package
     (name "ungoogled-chromium")
-    (version (if (string-prefix? %chromium-version %ungoogled-revision)
-                 %ungoogled-revision
-                 ;; ungoogled-chromium version tags always have a "-1" suffix,
-                 ;; so we can hijack "-0" in cases where the Chromium source
-                 ;; is newer than the latest available tag.
-                 (string-append %chromium-version "-0")))
+    (version %ungoogled-revision)
     (synopsis "Graphical web browser")
     (source (origin
               (method url-fetch)
@@ -506,7 +492,7 @@
                                   %chromium-version ".tar.xz"))
               (sha256
                (base32
-                "0rhay46fnfffqcpk6c856hj414508fmhda600lz5whcacr25q6r0"))
+                "0bdyb14v12izxkldq27jx532p0bid3wdwfpd1mwm7jqswxgfzkfb"))
               (modules '((guix build utils)))
               (snippet (force ungoogled-chromium-snippet))))
     (build-system gnu-build-system)
@@ -559,6 +545,11 @@
               "custom_toolchain=\"//build/toolchain/linux/unbundle:default\""
               "host_toolchain=\"//build/toolchain/linux/unbundle:default\""
 
+              (string-append "clang_base_path=\""
+                             (dirname (dirname (search-input-file %build-inputs
+                                                                  "/bin/clang")))
+                             "\"")
+
               ;; Prefer system libraries.
               "use_system_freetype=true"
               "use_system_harfbuzz=true"
@@ -567,6 +558,7 @@
               "use_system_libjpeg=true"
               "use_system_libopenjpeg2=true"
               "use_system_libpng=true"
+              "use_system_libwayland=true"
               "use_system_wayland_scanner=true"
               (string-append "system_wayland_scanner_path=\""
                              (search-input-file %build-inputs
@@ -598,7 +590,7 @@
               "ffmpeg_branding=\"Chrome\""
 
               ;; WebRTC stuff.
-              "rtc_use_h264=true"
+              "rtc_use_h264=false"      ;XXX needs bundled openh264
               "rtc_use_pipewire=true"
               "rtc_link_pipewire=true"
               ;; Don't use bundled sources.
@@ -618,16 +610,17 @@
       #~(modify-phases %standard-phases
           (add-after 'unpack 'patch-stuff
             (lambda* (#:key inputs #:allow-other-keys)
-              (let ((openjpeg (search-input-directory
-                               inputs "include/openjpeg-2.4")))
+              (let* ((libopenjp2 (search-input-file inputs "lib/libopenjp2.so"))
+                     (openjpeg (dirname (dirname libopenjp2))))
                 (substitute* "third_party/pdfium/BUILD.gn"
                   ;; This include path is added by Debians openjpeg patch.
-                  (("/usr/include/openjpeg-2.4") openjpeg))
+                  (("/usr/include/openjpeg-")
+                   (string-append openjpeg "/include/openjpeg-")))
 
-                ;; Remove contrib/ prefix from minizip header inclusions.
+                ;; Adjust minizip header inclusions.
                 (substitute* (find-files "third_party/tflite_support\
 /src/tensorflow_lite_support/metadata/cc")
-                  (("contrib/minizip/")
+                  (("third_party/zlib/contrib/minizip/")
                    "minizip/"))
 
                 (substitute*
@@ -675,6 +668,11 @@
                   (("include \"third_party/lcms/include/lcms2\\.h\"")
                    "include \"lcms2.h\""))
 
+                ;; The unbundling script leaves behind an empty pyyaml directory
+                ;; which prevents the code that tries to use it from falling
+                ;; back to the pyyaml provided by Guix.
+                (delete-file-recursively "third_party/pyyaml")
+
                 (substitute*
                     "third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h"
                   (("include \"third_party/curl")
@@ -685,7 +683,7 @@
                                "gpu/config/gpu_util.cc")
                   (("third_party/vulkan_headers/include/") ""))
 
-                (substitute* "third_party/skia/include/gpu/vk/GrVkVulkan.h"
+                (substitute* "third_party/skia/include/private/gpu/vk/SkiaVulkan.h"
                   (("include/third_party/vulkan/") "")))))
           (add-after 'patch-stuff 'add-absolute-references
             (lambda* (#:key inputs #:allow-other-keys)
@@ -752,23 +750,12 @@
                    (string-append mesa-lib "/libGLESv2.so.2"))))))
           (add-before 'configure 'prepare-build-environment
             (lambda* (#:key native-inputs inputs #:allow-other-keys)
-              (let ((c++ (search-input-directory (or native-inputs inputs)
-                                                 "include/c++"))
-                    (node (search-input-file (or native-inputs inputs)
+              (let ((node (search-input-file (or native-inputs inputs)
                                              "/bin/node")))
                 ;; Define the GN toolchain.
                 (setenv "AR" "llvm-ar") (setenv "NM" "llvm-nm")
                 (setenv "CC" "clang") (setenv "CXX" "clang++")
 
-                ;; Disable compiler flags that require Clang 15.
-                (substitute* "build/config/compiler/BUILD.gn"
-                  (("\"-no-opaque-pointers\",")
-                   "")
-                  (("\"-Wno-unqualified-std-cast-call\"")
-                   "")
-                  (("\"-Wno-deprecated-non-prototype\"")
-                   ""))
-
                 ;; TODO: pre-compile instead. Avoids a race condition.
                 (setenv "PYTHONDONTWRITEBYTECODE" "1")
 
@@ -892,16 +879,17 @@
                    '("24" "48" "64" "128" "256")))))))))
     (native-inputs
      (list bison
-           clang-14
+           clang-15
            gn
            gperf
-           lld-as-ld-wrapper
+           lld-as-ld-wrapper-15
            ninja
            node-lts
            pkg-config
            which
            python-beautifulsoup4
            python-html5lib
+           python-pyyaml
            python-wrapper
            wayland))
     (inputs
@@ -913,7 +901,7 @@
            dbus
            expat
            flac
-           ffmpeg
+           ffmpeg-4
            fontconfig
            fp16
            freetype
@@ -955,8 +943,9 @@
            opus+custom
            pango
            pciutils
-           pipewire-0.3
+           pipewire
            pulseaudio
+           qtbase-5
            re2
            snappy
            speech-dispatcher
@@ -1031,7 +1020,8 @@ testing.")
            (call-with-output-file exe
              (lambda (port)
                (format port "#!~a
-exec ~a --enable-features=UseOzonePlatform --ozone-platform=wayland $@"
+exec ~a --enable-features=UseOzonePlatform --ozone-platform=wayland \
+--enable-features=WebRTCPipeWireCapturer $@"
                        (string-append bash "/bin/bash")
                        (string-append chromium "/bin/chromium"))))
            (chmod exe #o555)