From 3d5a217d5e71821465a8653945e494205b7d511b Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Mon, 22 Jun 2020 16:58:54 +0200 Subject: gnu: ungoogled-chromium: Build with ffmpeg@4.2. Fixes . Reported by Jonathan Brielmaier . * gnu/packages/video.scm (ffmpeg-4.2): New public variable. * gnu/packages/chromium.scm (ungoogled-chromium)[inputs]: Change from FFMPEG to FFMPEG-4.2. --- gnu/packages/chromium.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'gnu/packages/chromium.scm') diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index 9ab7ca1f91..d43e53591e 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -785,7 +785,11 @@ from forcing GEXP-PROMISE." ("dbus-glib" ,dbus-glib) ("expat" ,expat) ("flac" ,flac) - ("ffmpeg" ,ffmpeg) + + ;; FIXME: Change to ffmpeg 4.3 when supported, see + ;; . + ("ffmpeg" ,ffmpeg-4.2) + ("fontconfig" ,fontconfig) ("freetype" ,freetype) ("gdk-pixbuf" ,gdk-pixbuf) -- cgit v1.2.3 From cafc5f8927174aca2e9198eac4d28d6cbd8738ee Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sat, 6 Jun 2020 16:01:08 +0200 Subject: gnu: ungoogled-chromium: Remove non-free file. * gnu/packages/chromium.scm (ungoogled-chromium-source): Remove (unused) SVG file that is licensed under a NoDerivatives license. --- gnu/packages/chromium.scm | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'gnu/packages/chromium.scm') diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index d43e53591e..8fdaeeda9f 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -330,6 +330,15 @@ from forcing GEXP-PROMISE." (force-output) (invoke "tar" "xf" #+chromium-source) + (format #t "Removing non-free file...~%") + (force-output) + ;; This file has a CC-BY-NC clause according to LICENSES from + ;; the same directory, making it non-free. + (delete-file + (string-append + chromium-dir + "/third_party/blink/perf_tests/svg/resources/HarveyRayner.svg")) + ;; Ungoogled-Chromium contains a forked subset of the Debian ;; patches. Disable those, as we apply newer versions later. (substitute* "patches/series" -- cgit v1.2.3 From acac3b94d72cf0643541dd73f7c1604299c6fa2c Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sun, 21 Jun 2020 21:45:21 +0200 Subject: gnu: ungoogled-chromium: Specify CPE name. * gnu/packages/chromium.scm (ungoogled-chromium)[properties]: Add CPE-NAME. --- gnu/packages/chromium.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'gnu/packages/chromium.scm') diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index 8fdaeeda9f..63a4ea6546 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -851,7 +851,8 @@ from forcing GEXP-PROMISE." ;; mid-end x86 system may need more than 24 hours to complete the build. (properties '((timeout . 144000) ;40 hours ;; The linking step may take more than an hour on some hardware. - (max-silent-time . 7200))) + (max-silent-time . 7200) + (cpe-name . "chrome"))) (home-page "https://github.com/Eloston/ungoogled-chromium") (description -- cgit v1.2.3 From 75527eb1cbbd0cad80d10743fb3b6e4ac0b4ba22 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sun, 21 Jun 2020 21:44:07 +0200 Subject: gnu: ungoogled-chromium: Update to 83.0.4103.106-0.f08ce8b [security fixes]. This fixes CVE-2020-6465, CVE-2020-6466, CVE-2020-6467, CVE-2020-6468, CVE-2020-6469, CVE-2020-6470, CVE-2020-6471, CVE-2020-6472, CVE-2020-6473, CVE-2020-6474, CVE-2020-6475, CVE-2020-6476, CVE-2020-6477, CVE-2020-6478, CVE-2020-6479, CVE-2020-6480, CVE-2020-6481, CVE-2020-6482, CVE-2020-6483, CVE-2020-6484, CVE-2020-6485, CVE-2020-6486, CVE-2020-6487, CVE-2020-6488, CVE-2020-6489, CVE-2020-6490, CVE-2020-6491, CVE-2020-6493, CVE-2020-6494, CVE-2020-6495, CVE-2020-6496, CVE-2020-6497, and CVE-2020-6498. * gnu/packages/patches/ungoogled-chromium-system-jsoncpp.patch, gnu/packages/patches/ungoogled-chromium-system-zlib.patch: New files. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/chromium.scm (%preserved-third-party-files): Adjust for 83. (%chromium-version): Set to 83.0.4103.106. (%ungoogled-revision): Set to f08ce8b3f1300ef0750b5d6bf967b9cbbfd9a56d. (%gentoo-revision, %gentoo-patches, %debian-patches): New variables. (gentoo-patch, debian-patch): New procedures. (%chromium-origin, %ungoogled-origin): Update hashes. (ungoogled-chromium-source): Don't apply patches from %DEBIAN-ORIGIN, but take %GENTOO-PATCHES, %DEBIAN-PATCHES, and the local patch files. (ungoogled-chromium)[arguments]: Remove "enable_swiftshader=false" from #:configure-flags. Add "icu_use_data_file=false". Set CFLAGS in phase. Remove obsolete substitution. Adjust install phase to install .so files for ANGLE and Swiftshader. [native-inputs]: Change from CLANG-9 to CLANG-10. [inputs]: Replace ICU4C with ICU4C-67. (ungoogled-chromium/wayland): Remove obsolete substitution. Add "ozone_platform_x11=true" in #:configure-flags. --- gnu/local.mk | 2 + gnu/packages/chromium.scm | 221 +++++++++++---------- .../ungoogled-chromium-system-jsoncpp.patch | 65 ++++++ .../patches/ungoogled-chromium-system-zlib.patch | 47 +++++ 4 files changed, 228 insertions(+), 107 deletions(-) create mode 100644 gnu/packages/patches/ungoogled-chromium-system-jsoncpp.patch create mode 100644 gnu/packages/patches/ungoogled-chromium-system-zlib.patch (limited to 'gnu/packages/chromium.scm') diff --git a/gnu/local.mk b/gnu/local.mk index 602a3c0aed..940f1c50e1 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1556,6 +1556,8 @@ dist_patch_DATA = \ %D%/packages/patches/u-boot-video-rockchip-fix-build.patch \ %D%/packages/patches/ucx-tcp-iface-ioctl.patch \ %D%/packages/patches/udiskie-no-appindicator.patch \ + %D%/packages/patches/ungoogled-chromium-system-jsoncpp.patch \ + %D%/packages/patches/ungoogled-chromium-system-zlib.patch \ %D%/packages/patches/unzip-CVE-2014-8139.patch \ %D%/packages/patches/unzip-CVE-2014-8140.patch \ %D%/packages/patches/unzip-CVE-2014-8141.patch \ diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index 63a4ea6546..8b0b99aa19 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -98,6 +98,7 @@ "third_party/angle/src/third_party/compiler" ;BSD-2 "third_party/angle/src/third_party/libXNVCtrl" ;Expat "third_party/angle/src/third_party/trace_event" ;BSD-3 + "third_party/angle/src/third_party/volk" ;Expat "third_party/angle/third_party/vulkan-headers" ;ASL2.0 "third_party/angle/third_party/vulkan-loader" ;ASL2.0 "third_party/angle/third_party/vulkan-tools" ;ASL2.0 @@ -117,6 +118,7 @@ ;; XXX: This is a minified version of . "third_party/catapult/tracing/third_party/d3" ;BSD-3 "third_party/catapult/tracing/third_party/gl-matrix" ;Expat + "third_party/catapult/tracing/third_party/jpeg-js" ;ASL2.0 ;; XXX: Minified version of . "third_party/catapult/tracing/third_party/jszip" ;Expat or GPL3 "third_party/catapult/tracing/third_party/mannwhitneyu" ;Expat @@ -136,6 +138,7 @@ "third_party/depot_tools/owners.py" ;BSD-3 "third_party/devtools-frontend" ;BSD-3 "third_party/devtools-frontend/src/front_end/third_party/fabricjs" ;Expat + "third_party/devtools-frontend/src/front_end/third_party/lighthouse" ;ASL2.0 "third_party/devtools-frontend/src/front_end/third_party/wasmparser" ;ASL2.0 "third_party/devtools-frontend/src/third_party/axe-core" ;MPL2.0 "third_party/devtools-frontend/src/third_party/pyjson5" ;ASL2.0 @@ -148,6 +151,7 @@ "third_party/google_input_tools/third_party/closure_library" ;ASL2.0 "third_party/google_input_tools/third_party/closure_library/third_party/closure" ;Expat "third_party/googletest" ;BSD-3 + "third_party/harfbuzz-ng" ;Expat "third_party/hunspell" ;MPL1.1/GPL2+/LGPL2.1+ "third_party/iccjpeg" ;IJG "third_party/inspector_protocol" ;BSD-3 @@ -171,6 +175,7 @@ "third_party/libxml/chromium" ;BSD-3 "third_party/libyuv" ;BSD-3 "third_party/lss" ;BSD-3 + "third_party/mako" ;Expat "third_party/markupsafe" ;BSD-3 "third_party/mesa_headers" ;Expat, SGI "third_party/metrics_proto" ;BSD-3 @@ -199,6 +204,7 @@ "third_party/qcms" ;Expat "third_party/rnnoise" ;BSD-3 "third_party/s2cellid" ;ASL2.0 + "third_party/schema_org" ;CC-BY-SA3.0 "third_party/skia" ;BSD-3 "third_party/skia/include/third_party/skcms" ;BSD-3 "third_party/skia/third_party/skcms" ;BSD-3 @@ -208,6 +214,13 @@ "third_party/spirv-headers" ;ASL2.0 "third_party/SPIRV-Tools" ;ASL2.0 "third_party/sqlite" ;Public domain + "third_party/swiftshader" ;ASL2.0 + "third_party/swiftshader/third_party/astc-encoder" ;ASL2.0 + "third_party/swiftshader/third_party/llvm-7.0" ;NCSA + "third_party/swiftshader/third_party/llvm-subzero" ;NCSA + "third_party/swiftshader/third_party/marl" ;ASL2.0 + "third_party/swiftshader/third_party/subzero" ;NCSA + "third_party/swiftshader/third_party/SPIRV-Headers" ;X11-style "third_party/usb_ids" ;BSD-3 "third_party/usrsctp" ;BSD-2 "third_party/wayland/wayland_scanner_wrapper.py" ;BSD-3 @@ -248,14 +261,73 @@ from forcing GEXP-PROMISE." #:system system #:guile-for-build guile))) -(define %chromium-version "81.0.4044.138") -(define %ungoogled-revision "c2a89fb6b5b559c826796c811741fa8ed3e11de8") +(define %chromium-version "83.0.4103.106") +(define %ungoogled-revision "f08ce8b3f1300ef0750b5d6bf967b9cbbfd9a56d") (define %debian-revision "debian/81.0.4044.92-1") +(define %gentoo-revision "55ef09d6709f4e4cbe23418e4ade0f219fa2fa1f") (define package-revision "0") (define %package-version (string-append %chromium-version "-" package-revision "." (string-take %ungoogled-revision 7))) +(define (gentoo-patch name revision hash) + (origin + (method url-fetch) + (uri (string-append "https://gitweb.gentoo.org/repo/gentoo.git/plain" + "/www-client/chromium/files/" name "?id=" revision)) + (file-name (string-append "ungoogled-" name)) + (sha256 (base32 hash)))) + +(define %gentoo-patches + (list (gentoo-patch "chromium-fix-char_traits.patch" %gentoo-revision + "1zr9wj2rj5phwdiffykd8w3srmzn0xxgmznz762qp7rs7amnp8ns") + (gentoo-patch "chromium-blink-style_format.patch" %gentoo-revision + "098akk5l01m0n3zz08ycz1kp3xmjnbng6d399z1fnb2zigbf0b0z") + (gentoo-patch "chromium-78-protobuf-export.patch" %gentoo-revision + "1wbw29daqwyrnij4991v84955ydqfvvjpz4s2p40agnzmgdzwnsx") + (gentoo-patch "chromium-79-gcc-alignas.patch" %gentoo-revision + "1a6l4i9cicy8dpxxjamyw8cl2nmqfv3x9gbffrsr8571my6fh17s") + (gentoo-patch "chromium-80-gcc-quiche.patch" %gentoo-revision + "0rdlsymw6h8i6yhysiq4la53pwivzv1i9lh0gprh5cl367r1haww") + (gentoo-patch "chromium-82-gcc-noexcept.patch" %gentoo-revision + "0pljnysjvbv2ck0s159qssjhv1pfr32i0nb66smmfmfix2yaizqc") + (gentoo-patch "chromium-82-gcc-incomplete-type.patch" %gentoo-revision + "04751dnpmiasifhq29a1kyxlnq6f2fmd2qbkv7hxdlsxbzg3lhsv") + (gentoo-patch "chromium-82-gcc-template.patch" %gentoo-revision + "1ilmx9wmzyrwmfvr2mwc7m5z6lnbhjkms5k40i8yavqah6kcdbw2") + (gentoo-patch "chromium-82-gcc-iterator.patch" %gentoo-revision + "1xljai9cj99pf4q3l8hz90i8mhdbd8v6h1vj8y37v6j8p78n3zvj") + (gentoo-patch "chromium-83-gcc-template.patch" %gentoo-revision + "1bb1anqdrimza7d0gg4fmxij00563jd9k1azy8sz1ybd8gvrphqi") + (gentoo-patch "chromium-83-gcc-include.patch" %gentoo-revision + "0rs9jj71ridplndi967m0z47vqd8ryykg36gjx8iyf3580vr2hlw") + (gentoo-patch "chromium-83-gcc-permissive.patch" %gentoo-revision + "04mrmrg3pbwl3gph2n1dkbv4miz80xww1gysd39six028nxacjpg") + (gentoo-patch "chromium-83-gcc-iterator.patch" %gentoo-revision + "0q66399va607kjnk8n9xlcr740q7c522p2z7abyd2hgq2bxgglnv") + (gentoo-patch "chromium-83-gcc-serviceworker.patch" %gentoo-revision + "0klvcqqzldfhvqr3plja64qamgff1m2z1zcn325bj32gmpypqjx9") + (gentoo-patch "chromium-83-gcc-10.patch" %gentoo-revision + "0vfvh1jypqcb274bggacg165mw2q5gmn237cvrrwcjqalz0ahnry") + (gentoo-patch "chromium-83-icu67.patch" %gentoo-revision + "05spmjhg5f56mkq3f96vm4s2d9h6vqdxz5g8ibd9pf8ddnh4blnx"))) + +(define (debian-patch name revision hash) + (origin + (method url-fetch) + (uri (string-append "https://salsa.debian.org/chromium-team/chromium/-/raw/" + revision "/debian/patches/" name)) + (file-name (match (string-split name #\/) + ((category name) + (string-append "ungoogled-chromium-" category "-" name)))) + (sha256 (base32 hash)))) + +(define %debian-patches + (list (debian-patch "system/nspr.patch" %debian-revision + "1x6ydc8pfks2c1dlwf0c58par6znjknvs9815576ycx27jl633dy") + (debian-patch "system/openjpeg.patch" %debian-revision + "0zd6v5njx1pc7i0y6mslxvpx5j4cq01mmyx55qcqx8qzkm0gm48j"))) + (define %chromium-origin (origin (method url-fetch) @@ -264,7 +336,7 @@ from forcing GEXP-PROMISE." %chromium-version ".tar.xz")) (sha256 (base32 - "19kpzmqmld0m0nflx13w9flxfal19msnxhzl3lip1jqih65z4y7l")))) + "0bvy17ymlih87n4ymnzvyn0m34ghmr1yasvy7gxv02qbw6i57lfg")))) (define %ungoogled-origin (origin @@ -275,21 +347,7 @@ from forcing GEXP-PROMISE." (string-take %ungoogled-revision 7))) (sha256 (base32 - "0bbr4a2gkgm3ykdgpj8x58sd3dwam6qkifhzfs2997681g7b2v2q")))) - -(define %debian-origin - (origin - (method git-fetch) - (uri (git-reference - (url "https://salsa.debian.org/chromium-team/chromium.git") - (commit %debian-revision))) - (file-name (git-file-name "debian-chromium-packaging" - (match (string-split %debian-revision #\/) - ((_ revision) revision) - (_ (string-take %debian-revision 7))))) - (sha256 - (base32 - "0srgbcqga3l75bfkv3bnmjk416189nazsximvzdx2k5n8v5k4p3m")))) + "0kc40p8f7cls696gh6ign37l8j4x1pyyz32jkkli9cmrpbsjsadl")))) ;; This is a "computed" origin that does the following: ;; *) Runs the Ungoogled scripts on a pristine Chromium tarball. @@ -298,8 +356,7 @@ from forcing GEXP-PROMISE." ;; *) Adjusts "GN" build files such that system libraries are preferred. (define ungoogled-chromium-source (let ((chromium-source %chromium-origin) - (ungoogled-source %ungoogled-origin) - (debian-source %debian-origin)) + (ungoogled-source %ungoogled-origin)) (origin (method computed-origin-method) (file-name (string-append "ungoogled-chromium-" %package-version ".tar.xz")) @@ -313,7 +370,7 @@ from forcing GEXP-PROMISE." (srfi srfi-1) (srfi srfi-26)) (let ((chromium-dir (string-append "chromium-" #$%chromium-version)) - (preserved-files (list #$@%preserved-third-party-files))) + (preserved-files '#$%preserved-third-party-files)) (set-path-environment-variable "PATH" '("bin") @@ -330,20 +387,30 @@ from forcing GEXP-PROMISE." (force-output) (invoke "tar" "xf" #+chromium-source) - (format #t "Removing non-free file...~%") - (force-output) - ;; This file has a CC-BY-NC clause according to LICENSES from - ;; the same directory, making it non-free. - (delete-file - (string-append - chromium-dir - "/third_party/blink/perf_tests/svg/resources/HarveyRayner.svg")) - - ;; Ungoogled-Chromium contains a forked subset of the Debian - ;; patches. Disable those, as we apply newer versions later. - (substitute* "patches/series" - ((".*/debian/.*") - "")) + (with-directory-excursion chromium-dir + (format #t "Removing non-free file...~%") + (force-output) + ;; This file has a CC-BY-NC clause according to LICENSES from + ;; the same directory, making it non-free. + (delete-file + "third_party/blink/perf_tests/svg/resources/HarveyRayner.svg") + + ;; Apply patches before running the ungoogled scripts because + ;; domain substitution may break some of the patches. + (format #t "Applying assorted build fixes...~%") + (force-output) + (for-each + (lambda (patch) + (invoke "patch" "-p1" "--force" "--input" + patch "--no-backup-if-mismatch")) + (append + '#+%gentoo-patches '#+%debian-patches + '#+(list (local-file + (search-patch + "ungoogled-chromium-system-jsoncpp.patch")) + (local-file + (search-patch + "ungoogled-chromium-system-zlib.patch")))))) (format #t "Ungooglifying...~%") (force-output) @@ -356,47 +423,6 @@ from forcing GEXP-PROMISE." "-c" "/tmp/domainscache.tar.gz" chromium-dir) (with-directory-excursion chromium-dir - - (format #t "Applying Debian patches...~%") - (force-output) - (let* ((debian #+debian-source) - (patches (string-append debian "/debian/patches")) - (series (string-append patches "/series"))) - (with-input-from-file series - (lambda () - (let loop ((line (read-line))) - (unless (eof-object? line) - (when (and (> (string-length line) 1) - (not (string-prefix? "#" line)) - ;; Skip the Debian-specific ones. - (not (string-prefix? "debianization/" line)) - (not (string-prefix? "buster/" line)) - (not (any (cute string-suffix? <> line) - ;; These conflict with Ungoogled. - '("widevine-buildflag.patch" - "signin.patch" - "third-party-cookies.patch" - - ;; Disable workarounds for the - ;; Chromium "-lite" tarball. We - ;; use the "full" version and don't - ;; need these patches. - "closure.patch" - "owners.patch" - - ;; XXX: 'fixes/inspector.patch' - ;; makes v8 reuse the top-level - ;; third_party/inspector_protocol - ;; instead of its own bundled copy, - ;; but that does not work here for - ;; some reason. Ignore that patch - ;; and those that depend on it. - "inspector.patch")))) - (invoke "patch" "--force" "-p1" "--input" - (string-append patches "/" line) - "--no-backup-if-mismatch")) - (loop (read-line))))))) - (format #t "Pruning third party files...~%") (force-output) (apply invoke (string-append #+python-2 "/bin/python") @@ -412,7 +438,7 @@ from forcing GEXP-PROMISE." "libxslt" "openh264" "opus" "re2" "snappy" "yasm" "zlib")) - (format #t (string-append "Packing new ungoogled tarball ...~%")) + (format #t "Packing new ungoogled tarball ...~%") (force-output) (invoke "tar" "cvfa" #$output ;; Avoid non-determinism in the archive. @@ -481,7 +507,6 @@ from forcing GEXP-PROMISE." "enable_remoting=false" "enable_reporting=false" "enable_service_discovery=false" - "enable_swiftshader=false" "enable_vr=false" "enable_widevine=false" ;; Disable type-checking for the Web UI to avoid a Java dependency. @@ -505,6 +530,7 @@ from forcing GEXP-PROMISE." "use_openh264=true" "use_pulseaudio=true" "link_pulseaudio=true" + "icu_use_data_file=false" ;; VA-API acceleration is currently only supported on x86_64-linux. ,@(if (string-prefix? "x86_64" (or (%current-target-system) @@ -631,17 +657,6 @@ from forcing GEXP-PROMISE." (substitute* "device/udev_linux/udev1_loader.cc" (("libudev\\.so\\.1") (string-append udev "/lib/libudev.so.1"))) - (substitute* - '("ui/ozone/platform/x11/gl_ozone_glx.cc" - "ui/ozone/common/egl_util.cc" - "ui/gl/init/gl_initializer_x11.cc" - "third_party/angle/src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp") - (("libGL\\.so\\.1") - (string-append mesa "/lib/libGL.so.1")) - (("libEGL\\.so\\.1") - (string-append mesa "/lib/libEGL.so.1")) - (("libGLESv2\\.so\\.2") - (string-append mesa "/lib/libGLESv2.so.2"))) #t))) (add-before 'configure 'prepare-build-environment (lambda* (#:key inputs #:allow-other-keys) @@ -658,14 +673,11 @@ from forcing GEXP-PROMISE." ;; Clang plugins or newer versions. "-Wno-unknown-warning-option"))) + (setenv "CFLAGS" "-Wno-unknown-warning-option") + ;; TODO: pre-compile instead. Avoids a race condition. (setenv "PYTHONDONTWRITEBYTECODE" "1") - (substitute* - ;; From Debians 'system/node.patch'. - "third_party/devtools-frontend/src/scripts/devtools_paths.py" - (("/usr/bin/nodejs") (which "node"))) - ;; XXX: How portable is this. (mkdir-p "third_party/node/linux/node-linux-x64") (symlink (string-append (assoc-ref inputs "node") "/bin") @@ -717,7 +729,7 @@ from forcing GEXP-PROMISE." (lib (string-append out "/lib")) (man (string-append out "/share/man/man1")) (applications (string-append out "/share/applications")) - (install-regexp (make-regexp "\\.(bin|pak)$")) + (install-regexp (make-regexp "\\.(bin|pak|so)$")) (locales (string-append lib "/locales")) (resources (string-append lib "/resources")) (preferences (assoc-ref inputs "master-preferences")) @@ -754,6 +766,10 @@ from forcing GEXP-PROMISE." (symlink "../lib/chromium" exe) (install-file "chromedriver" bin) + (for-each (lambda (so) + (install-file so (string-append lib "/swiftshader"))) + (find-files "swiftshader" "\\.so$")) + (wrap-program exe ;; Avoid file manager crash. See . `("XDG_DATA_DIRS" ":" prefix (,(string-append gtk+ "/share"))))) @@ -770,7 +786,7 @@ from forcing GEXP-PROMISE." #t)))))) (native-inputs `(("bison" ,bison) - ("clang" ,clang-9) + ("clang" ,clang-10) ("gn" ,gn) ("gperf" ,gperf) ("ninja" ,ninja) @@ -805,7 +821,7 @@ from forcing GEXP-PROMISE." ("glib" ,glib) ("gtk+" ,gtk+) ("harfbuzz" ,harfbuzz) - ("icu4c" ,icu4c) + ("icu4c" ,icu4c-67) ("jsoncpp" ,jsoncpp) ("lcms" ,lcms) ("libevent" ,libevent) @@ -881,19 +897,10 @@ disabled in order to protect the users privacy.") ,@(package-inputs ungoogled-chromium))) (arguments (substitute-keyword-arguments (package-arguments ungoogled-chromium) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'add-ozone-patch - (lambda _ - ;; Add missing include statement required when using libstdc++, - ;; Clang and Ozone. Fixed in M81. - (substitute* "ui/base/cursor/ozone/bitmap_cursor_factory_ozone.cc" - (("#include \"base/logging\\.h" all) - (string-append "#include \n" all))) - #t)))) ((#:configure-flags flags) `(append (list "use_ozone=true" "ozone_platform_wayland=true" + "ozone_platform_x11=true" "ozone_auto_platforms=false" "ozone_platform=\"wayland\"" "use_xkbcommon=true" diff --git a/gnu/packages/patches/ungoogled-chromium-system-jsoncpp.patch b/gnu/packages/patches/ungoogled-chromium-system-jsoncpp.patch new file mode 100644 index 0000000000..294e1ea33b --- /dev/null +++ b/gnu/packages/patches/ungoogled-chromium-system-jsoncpp.patch @@ -0,0 +1,65 @@ +Build with the system jsoncpp instead of the bundled one. + +Adapted from Debian: +https://salsa.debian.org/chromium-team/chromium/-/blob/master/debian/patches/system/jsoncpp.patch + +diff --git a/third_party/jsoncpp/BUILD.gn b/third_party/jsoncpp/BUILD.gn +--- a/third_party/jsoncpp/BUILD.gn ++++ b/third_party/jsoncpp/BUILD.gn +@@ -3,52 +3,14 @@ + # found in the LICENSE file. + + import("//testing/libfuzzer/fuzzer_test.gni") ++import("//build/config/linux/pkg_config.gni") + +-config("jsoncpp_config") { +- include_dirs = [ +- "source/include", +- "generated", +- ] +- +- # TODO(crbug.com/983223): Update JsonCpp BUILD.gn to remove deprecated +- # declaration flag. +- # This temporary flag allowing clients to update to the new version, and then +- # update to the new StreamWriter and CharReader classes. +- if (!is_win || is_clang) { +- cflags_cc = [ "-Wno-deprecated-declarations" ] +- } ++pkg_config("jsoncpp_config") { ++ packages = [ "jsoncpp" ] + } + +-source_set("jsoncpp") { +- sources = [ +- "generated/version.h", +- "source/include/json/assertions.h", +- "source/include/json/autolink.h", +- "source/include/json/config.h", +- "source/include/json/features.h", +- "source/include/json/forwards.h", +- "source/include/json/json.h", +- "source/include/json/reader.h", +- "source/include/json/value.h", +- "source/include/json/writer.h", +- "source/src/lib_json/json_reader.cpp", +- "source/src/lib_json/json_tool.h", +- "source/src/lib_json/json_value.cpp", +- "source/src/lib_json/json_writer.cpp", +- ] +- ++group("jsoncpp") { + public_configs = [ ":jsoncpp_config" ] +- +- defines = [ +- "JSON_USE_EXCEPTION=0", +- "JSON_USE_NULLREF=0", +- ] +- +- include_dirs = [ "source/src/lib_json" ] +- +- if (!is_win || is_clang) { +- cflags_cc = [ "-Wno-implicit-fallthrough" ] +- } + } + + if (build_with_chromium) { diff --git a/gnu/packages/patches/ungoogled-chromium-system-zlib.patch b/gnu/packages/patches/ungoogled-chromium-system-zlib.patch new file mode 100644 index 0000000000..b6e3c0f075 --- /dev/null +++ b/gnu/packages/patches/ungoogled-chromium-system-zlib.patch @@ -0,0 +1,47 @@ +Use zlib instead of the bundled lzma_sdk. + +Adapted from Debian: +https://salsa.debian.org/chromium-team/chromium/-/blob/master/debian/patches/system/zlib.patch + +diff --git a/courgette/BUILD.gn b/courgette/BUILD.gn +--- a/courgette/BUILD.gn ++++ b/courgette/BUILD.gn +@@ -58,7 +58,6 @@ static_library("courgette_lib") { + + deps = [ + "//base", +- "//third_party/lzma_sdk", + ] + + public_deps = [ +@@ -79,7 +78,6 @@ source_set("courgette_common") { + ] + deps = [ + "//base", +- "//third_party/lzma_sdk", + ] + } + +diff --git a/courgette/crc.cc b/courgette/crc.cc +--- a/courgette/crc.cc ++++ b/courgette/crc.cc +@@ -7,6 +7,8 @@ + #include + #include + ++#define COURGETTE_USE_CRC_LIB ++ + #ifdef COURGETTE_USE_CRC_LIB + # include "zlib.h" + #else +diff --git a/third_party/perfetto/gn/BUILD.gn b/third_party/perfetto/gn/BUILD.gn +--- a/third_party/perfetto/gn/BUILD.gn ++++ b/third_party/perfetto/gn/BUILD.gn +@@ -304,7 +304,6 @@ if (enable_perfetto_zlib) { + public_configs = [ "//buildtools:zlib_config" ] + public_deps = [ "//buildtools:zlib" ] + } else { +- public_configs = [ "//third_party/zlib:zlib_config" ] + public_deps = [ "//third_party/zlib" ] + } + } -- cgit v1.2.3 From e6c2cec217b9fe3f8670af85c8626802a7c77341 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Tue, 23 Jun 2020 22:23:16 +0200 Subject: gnu: ungoogled-chromium: Update to 83.0.4103.116-0.f08ce8b [fixes CVE-2020-6509]. * gnu/packages/chromium.scm (%chromium-version): Set to 83.0.4103.116. (%ungoogled-origin): Update hash. --- gnu/packages/chromium.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu/packages/chromium.scm') diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index 8b0b99aa19..6a0abd61d3 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -261,7 +261,7 @@ from forcing GEXP-PROMISE." #:system system #:guile-for-build guile))) -(define %chromium-version "83.0.4103.106") +(define %chromium-version "83.0.4103.116") (define %ungoogled-revision "f08ce8b3f1300ef0750b5d6bf967b9cbbfd9a56d") (define %debian-revision "debian/81.0.4044.92-1") (define %gentoo-revision "55ef09d6709f4e4cbe23418e4ade0f219fa2fa1f") @@ -336,7 +336,7 @@ from forcing GEXP-PROMISE." %chromium-version ".tar.xz")) (sha256 (base32 - "0bvy17ymlih87n4ymnzvyn0m34ghmr1yasvy7gxv02qbw6i57lfg")))) + "1hravbi1lazmab2mih465alfzji1kzy38zya1visbwz9zs6pw35v")))) (define %ungoogled-origin (origin -- cgit v1.2.3 From 7eb8ae5f6c2496facff617fbebe89961ef573ccc Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Thu, 25 Jun 2020 14:22:31 +0200 Subject: gnu: ungoogled-chromium: Convert computed origin to source snippet. * gnu/packages/chromium.scm (computed-origin-method, %chromium-origin): Remove. (ungoogled-chromium-source): Rename to ... (ungoogled-chromium-snippet): ... this. Adjust for running as snippet. (ungoogled-chromium)[source]: Use URL-FETCH, with custom snippet. --- gnu/packages/chromium.scm | 193 +++++++++++++++++----------------------------- 1 file changed, 71 insertions(+), 122 deletions(-) (limited to 'gnu/packages/chromium.scm') diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index 6a0abd61d3..a0ba5ac9c9 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -248,19 +248,6 @@ "v8/third_party/inspector_protocol" ;BSD-3 "v8/third_party/v8/builtins")) ;PSFL -(define* (computed-origin-method gexp-promise hash-algo hash - #:optional (name "source") - #:key (system (%current-system)) - (guile (default-guile))) - "Return a derivation that executes the G-expression that results -from forcing GEXP-PROMISE." - (mlet %store-monad ((guile (package->derivation guile system))) - (gexp->derivation (or name "computed-origin") - (force gexp-promise) - #:graft? #f ;nothing to graft - #:system system - #:guile-for-build guile))) - (define %chromium-version "83.0.4103.116") (define %ungoogled-revision "f08ce8b3f1300ef0750b5d6bf967b9cbbfd9a56d") (define %debian-revision "debian/81.0.4044.92-1") @@ -328,16 +315,6 @@ from forcing GEXP-PROMISE." (debian-patch "system/openjpeg.patch" %debian-revision "0zd6v5njx1pc7i0y6mslxvpx5j4cq01mmyx55qcqx8qzkm0gm48j"))) -(define %chromium-origin - (origin - (method url-fetch) - (uri (string-append "https://commondatastorage.googleapis.com" - "/chromium-browser-official/chromium-" - %chromium-version ".tar.xz")) - (sha256 - (base32 - "1hravbi1lazmab2mih465alfzji1kzy38zya1visbwz9zs6pw35v")))) - (define %ungoogled-origin (origin (method git-fetch) @@ -349,106 +326,69 @@ from forcing GEXP-PROMISE." (base32 "0kc40p8f7cls696gh6ign37l8j4x1pyyz32jkkli9cmrpbsjsadl")))) -;; This is a "computed" origin that does the following: -;; *) Runs the Ungoogled scripts on a pristine Chromium tarball. -;; *) Applies Debians Chromium patches, for their unbundling and GCC work. +;; 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. ;; *) Prunes all third_party directories that are not explicitly preserved. ;; *) Adjusts "GN" build files such that system libraries are preferred. -(define ungoogled-chromium-source - (let ((chromium-source %chromium-origin) - (ungoogled-source %ungoogled-origin)) - (origin - (method computed-origin-method) - (file-name (string-append "ungoogled-chromium-" %package-version ".tar.xz")) - (sha256 #f) - (uri - (delay - (with-imported-modules '((guix build utils)) - #~(begin - (use-modules (guix build utils) - (ice-9 rdelim) - (srfi srfi-1) - (srfi srfi-26)) - (let ((chromium-dir (string-append "chromium-" #$%chromium-version)) - (preserved-files '#$%preserved-third-party-files)) - - (set-path-environment-variable - "PATH" '("bin") - (list #+(canonical-package patch) - #+(canonical-package xz) - #+(canonical-package tar) - #+python-wrapper)) - - (copy-recursively #+ungoogled-source "/tmp/ungoogled") - - (with-directory-excursion "/tmp/ungoogled" - - (format #t "Unpacking chromium tarball...~%") - (force-output) - (invoke "tar" "xf" #+chromium-source) - - (with-directory-excursion chromium-dir - (format #t "Removing non-free file...~%") - (force-output) - ;; This file has a CC-BY-NC clause according to LICENSES from - ;; the same directory, making it non-free. - (delete-file - "third_party/blink/perf_tests/svg/resources/HarveyRayner.svg") - - ;; Apply patches before running the ungoogled scripts because - ;; domain substitution may break some of the patches. - (format #t "Applying assorted build fixes...~%") - (force-output) - (for-each - (lambda (patch) - (invoke "patch" "-p1" "--force" "--input" - patch "--no-backup-if-mismatch")) - (append - '#+%gentoo-patches '#+%debian-patches - '#+(list (local-file - (search-patch - "ungoogled-chromium-system-jsoncpp.patch")) - (local-file - (search-patch - "ungoogled-chromium-system-zlib.patch")))))) - - (format #t "Ungooglifying...~%") - (force-output) - (invoke "python" "utils/prune_binaries.py" chromium-dir - "pruning.list") - (invoke "python" "utils/patches.py" "apply" - chromium-dir "patches") - (invoke "python" "utils/domain_substitution.py" "apply" "-r" - "domain_regex.list" "-f" "domain_substitution.list" - "-c" "/tmp/domainscache.tar.gz" chromium-dir) - - (with-directory-excursion chromium-dir - (format #t "Pruning third party files...~%") - (force-output) - (apply invoke (string-append #+python-2 "/bin/python") - "build/linux/unbundle/remove_bundled_libraries.py" - "--do-remove" preserved-files) - - (format #t "Replacing GN files...~%") - (force-output) - (invoke "python" "build/linux/unbundle/replace_gn_files.py" - "--system-libraries" "ffmpeg" "flac" "fontconfig" - "freetype" "harfbuzz-ng" "icu" "libdrm" "libevent" - "libjpeg" "libpng" "libvpx" "libwebp" "libxml" - "libxslt" "openh264" "opus" "re2" "snappy" "yasm" - "zlib")) - - (format #t "Packing new ungoogled tarball ...~%") - (force-output) - (invoke "tar" "cvfa" #$output - ;; Avoid non-determinism in the archive. - "--mtime=@0" - "--owner=root:0" - "--group=root:0" - "--sort=name" - chromium-dir) - - #t))))))))) +(define ungoogled-chromium-snippet + ;; Note: delay to cope with cyclic module imports at the top level. + (delay + #~(begin + (let ((chromium-dir (getcwd))) + (set-path-environment-variable + "PATH" '("bin") + (list #+patch #+python-wrapper #+xz)) + + (format #t "Removing non-free file...~%") + (force-output) + ;; This file has a CC-BY-NC clause according to LICENSES from + ;; the same directory, making it non-free. + (delete-file + "third_party/blink/perf_tests/svg/resources/HarveyRayner.svg") + + ;; Apply patches before running the ungoogled scripts because + ;; domain substitution may break some of the patches. + (format #t "Applying assorted build fixes...~%") + (force-output) + (for-each (lambda (patch) + (invoke "patch" "-p1" "--force" "--input" + patch "--no-backup-if-mismatch")) + (append + '#+%gentoo-patches '#+%debian-patches + '#+(list (local-file + (search-patch + "ungoogled-chromium-system-jsoncpp.patch")) + (local-file + (search-patch + "ungoogled-chromium-system-zlib.patch"))))) + + (with-directory-excursion #+%ungoogled-origin + (format #t "Ungooglifying...~%") + (force-output) + (invoke "python" "utils/prune_binaries.py" chromium-dir + "pruning.list") + (invoke "python" "utils/patches.py" "apply" + chromium-dir "patches") + (invoke "python" "utils/domain_substitution.py" "apply" "-r" + "domain_regex.list" "-f" "domain_substitution.list" + "-c" "/tmp/domainscache.tar.gz" chromium-dir)) + + (format #t "Pruning third party files...~%") + (force-output) + (apply invoke (string-append #+python-2 "/bin/python") + "build/linux/unbundle/remove_bundled_libraries.py" + "--do-remove" '#$%preserved-third-party-files) + + (format #t "Replacing GN files...~%") + (force-output) + (invoke "python" "build/linux/unbundle/replace_gn_files.py" + "--system-libraries" "ffmpeg" "flac" "fontconfig" + "freetype" "harfbuzz-ng" "icu" "libdrm" "libevent" + "libjpeg" "libpng" "libvpx" "libwebp" "libxml" + "libxslt" "openh264" "opus" "re2" "snappy" "yasm" + "zlib") + #t)))) (define opus+custom (package/inherit opus @@ -467,7 +407,16 @@ from forcing GEXP-PROMISE." (name "ungoogled-chromium") (version %package-version) (synopsis "Graphical web browser") - (source ungoogled-chromium-source) + (source (origin + (method url-fetch) + (uri (string-append "https://commondatastorage.googleapis.com" + "/chromium-browser-official/chromium-" + %chromium-version ".tar.xz")) + (sha256 + (base32 + "1hravbi1lazmab2mih465alfzji1kzy38zya1visbwz9zs6pw35v")) + (modules '((guix build utils))) + (snippet (force ungoogled-chromium-snippet)))) (build-system gnu-build-system) (arguments `(#:tests? #f -- cgit v1.2.3 From e6db8912fdec8b33e39c03b5e3b3268df12648ab Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Thu, 25 Jun 2020 14:23:59 +0200 Subject: gnu: ungoogled-chromium: Remove all Blink performance tests. * gnu/packages/chromium.scm (%blacklisted-files): New variable. (ungoogled-chromium-snippet): Adjust accordingly. --- gnu/packages/chromium.scm | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'gnu/packages/chromium.scm') diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index a0ba5ac9c9..ac45befe44 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -248,6 +248,12 @@ "v8/third_party/inspector_protocol" ;BSD-3 "v8/third_party/v8/builtins")) ;PSFL +(define %blacklisted-files + ;; 'third_party/blink/perf_tests/resources/svg/HarveyRayner.svg' carries a + ;; nonfree license according to LICENSES in the same directory. As we don't + ;; run the Blink performance tests, just remove everything to save ~24MiB. + '("third_party/blink/perf_tests")) + (define %chromium-version "83.0.4103.116") (define %ungoogled-revision "f08ce8b3f1300ef0750b5d6bf967b9cbbfd9a56d") (define %debian-revision "debian/81.0.4044.92-1") @@ -340,13 +346,6 @@ "PATH" '("bin") (list #+patch #+python-wrapper #+xz)) - (format #t "Removing non-free file...~%") - (force-output) - ;; This file has a CC-BY-NC clause according to LICENSES from - ;; the same directory, making it non-free. - (delete-file - "third_party/blink/perf_tests/svg/resources/HarveyRayner.svg") - ;; Apply patches before running the ungoogled scripts because ;; domain substitution may break some of the patches. (format #t "Applying assorted build fixes...~%") @@ -374,6 +373,12 @@ "domain_regex.list" "-f" "domain_substitution.list" "-c" "/tmp/domainscache.tar.gz" chromium-dir)) + ;; Run after the ungoogled scripts to avoid interfering with + ;; patches or file lists. + (format #t "Removing blacklisted files...~%") + (force-output) + (for-each delete-file-recursively '#$%blacklisted-files) + (format #t "Pruning third party files...~%") (force-output) (apply invoke (string-append #+python-2 "/bin/python") -- cgit v1.2.3 From 3163bc5f44a1e173922c105ca67609f7d806afec Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Fri, 26 Jun 2020 13:50:20 +0200 Subject: gnu: ungoogled-chromium: Inline %PACKAGE-VERSION. * gnu/packages/chromium.scm (%chromium-version, package-revision, %package-version): Remove. (ungoogled-chromium)[version, source]: Adjust accordingly. --- gnu/packages/chromium.scm | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'gnu/packages/chromium.scm') diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index ac45befe44..d9ba53d832 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -254,14 +254,9 @@ ;; run the Blink performance tests, just remove everything to save ~24MiB. '("third_party/blink/perf_tests")) -(define %chromium-version "83.0.4103.116") (define %ungoogled-revision "f08ce8b3f1300ef0750b5d6bf967b9cbbfd9a56d") (define %debian-revision "debian/81.0.4044.92-1") (define %gentoo-revision "55ef09d6709f4e4cbe23418e4ade0f219fa2fa1f") -(define package-revision "0") -(define %package-version (string-append %chromium-version "-" - package-revision "." - (string-take %ungoogled-revision 7))) (define (gentoo-patch name revision hash) (origin @@ -410,13 +405,14 @@ (define-public ungoogled-chromium (package (name "ungoogled-chromium") - (version %package-version) + (version (string-append "83.0.4103.116-0." + (string-take %ungoogled-revision 7))) (synopsis "Graphical web browser") (source (origin (method url-fetch) (uri (string-append "https://commondatastorage.googleapis.com" "/chromium-browser-official/chromium-" - %chromium-version ".tar.xz")) + (car (string-split version #\-)) ".tar.xz")) (sha256 (base32 "1hravbi1lazmab2mih465alfzji1kzy38zya1visbwz9zs6pw35v")) -- cgit v1.2.3 From c91c132fc42c6e67140b393b963d7ced009f093e Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sun, 19 Jul 2020 08:59:48 +0200 Subject: gnu: ungoogled-chromium: Update to 84.0.4147.89-0.df199c0. * gnu/packages/patches/ungoogled-chromium-system-jsoncpp.patch, gnu/packages/patches/ungoogled-chromium-system-zlib.patch: Delete files. * gnu/packages/patches/ungoogled-chromium-system-nspr.patch: New file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/chromium.scm (%preserved-third-party-files): Adjust for 84. (%ungoogled-revision): Set to df199c04ff367da59ce52a23a3f3b305dd3b00c3. (%debian-revision): Set to debian/83.0.4103.116-3. (%gentoo-revision): Set to f3f649046d31ebdbc8c4a302b2384504eff78027. (chromium-gcc-patchset, %chromium-gcc-patches): New variables. (%gentoo-patches): Remove GCC patches, which have been moved to the above repo. Add ffmpeg compatibility patch. (%debian-patches): Add zlib and jsoncpp patch; remove nspr patch. (%ungoogled-origin): Update hash. (ungoogled-chromium-snippet): Add the new GCC patches. Remove obsolete local patches, add new. (xcb-proto/python2): New variable. (ungoogled-chromium): Update to 84.0.4147.89-0..df199c0. [arguments]: Add "is_unsafe_developer_build", "max_jobs_per_link", "exclude_unwind_tables", "xcbproto_path", "perfetto_use_system_protobuf" to #:configure-flags. Remove "linux_use_bundled_binutils". Adjust vulkan header substitutions. [native-inputs]: Remove YASM. [inputs]: Change from FFMPEG-4.2 to FFMPEG. Add PROTOBUF and XCB-PROTO/PYTHON2. --- gnu/local.mk | 3 +- gnu/packages/chromium.scm | 130 +++++++++++---------- .../ungoogled-chromium-system-jsoncpp.patch | 65 ----------- .../patches/ungoogled-chromium-system-nspr.patch | 120 +++++++++++++++++++ .../patches/ungoogled-chromium-system-zlib.patch | 47 -------- 5 files changed, 187 insertions(+), 178 deletions(-) delete mode 100644 gnu/packages/patches/ungoogled-chromium-system-jsoncpp.patch create mode 100644 gnu/packages/patches/ungoogled-chromium-system-nspr.patch delete mode 100644 gnu/packages/patches/ungoogled-chromium-system-zlib.patch (limited to 'gnu/packages/chromium.scm') diff --git a/gnu/local.mk b/gnu/local.mk index e8915990bc..0eac01d72d 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1594,8 +1594,7 @@ dist_patch_DATA = \ %D%/packages/patches/u-boot-riscv64-fix-extlinux.patch \ %D%/packages/patches/ucx-tcp-iface-ioctl.patch \ %D%/packages/patches/udiskie-no-appindicator.patch \ - %D%/packages/patches/ungoogled-chromium-system-jsoncpp.patch \ - %D%/packages/patches/ungoogled-chromium-system-zlib.patch \ + %D%/packages/patches/ungoogled-chromium-system-nspr.patch \ %D%/packages/patches/unzip-CVE-2014-8139.patch \ %D%/packages/patches/unzip-CVE-2014-8140.patch \ %D%/packages/patches/unzip-CVE-2014-8141.patch \ diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index d9ba53d832..7ce9b65abf 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -55,6 +55,7 @@ #: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) @@ -137,6 +138,8 @@ "third_party/dawn" ;ASL2.0 "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/codemirror" ;Expat "third_party/devtools-frontend/src/front_end/third_party/fabricjs" ;Expat "third_party/devtools-frontend/src/front_end/third_party/lighthouse" ;ASL2.0 "third_party/devtools-frontend/src/front_end/third_party/wasmparser" ;ASL2.0 @@ -159,6 +162,7 @@ "third_party/jstemplate" ;ASL2.0 "third_party/khronos" ;Expat, SGI "third_party/leveldatabase" ;BSD-3 + "third_party/libavif" ;BSD-2 "third_party/libXNVCtrl" ;Expat "third_party/libaddressinput" ;ASL2.0 "third_party/libaom" ;BSD-2 or "Alliance for Open Media Patent License 1.0" @@ -174,6 +178,7 @@ "third_party/libwebm" ;BSD-3 "third_party/libxml/chromium" ;BSD-3 "third_party/libyuv" ;BSD-3 + "third_party/lottie" ;Expat "third_party/lss" ;BSD-3 "third_party/mako" ;Expat "third_party/markupsafe" ;BSD-3 @@ -186,6 +191,7 @@ "third_party/one_euro_filter" ;BSD-3 "third_party/openscreen" ;BSD-3 "third_party/openscreen/src/third_party/tinycbor" ;Expat + "third_party/openscreen/src/third_party/mozilla" ;MPL1.1/GPL2+/LGPL2.1+, BSD-3 "third_party/ots" ;BSD-3 "third_party/pdfium" ;BSD-3 "third_party/pdfium/third_party/agg23" ;Expat @@ -223,12 +229,13 @@ "third_party/swiftshader/third_party/SPIRV-Headers" ;X11-style "third_party/usb_ids" ;BSD-3 "third_party/usrsctp" ;BSD-2 + "third_party/vulkan_memory_allocator" ;Expat "third_party/wayland/wayland_scanner_wrapper.py" ;BSD-3 "third_party/wayland-protocols" ;Expat "third_party/web-animations-js" ;ASL2.0 "third_party/webdriver" ;ASL2.0 "third_party/webrtc" ;BSD-3 - "third_party/webrtc/common_audio/third_party/fft4g" ;Non-copyleft + "third_party/webrtc/common_audio/third_party/ooura" ;Non-copyleft "third_party/webrtc/common_audio/third_party/spl_sqrt_floor" ;Public domain "third_party/webrtc/modules/third_party/fft" ;Non-copyleft "third_party/webrtc/modules/third_party/g711" ;Public domain @@ -239,7 +246,6 @@ "third_party/widevine/cdm/widevine_cdm_common.h" ;BSD-3 "third_party/woff2" ;ASL2.0 "third_party/xdg-utils" ;Expat - "third_party/yasm/run_yasm.py" ;BSD-2 or BSD-3 "third_party/zlib/google" ;BSD-3 "url/third_party/mozilla" ;BSD-3, MPL1.1/GPL2+/LGPL2.1+ "v8/src/third_party/siphash" ;Public domain @@ -254,10 +260,6 @@ ;; run the Blink performance tests, just remove everything to save ~24MiB. '("third_party/blink/perf_tests")) -(define %ungoogled-revision "f08ce8b3f1300ef0750b5d6bf967b9cbbfd9a56d") -(define %debian-revision "debian/81.0.4044.92-1") -(define %gentoo-revision "55ef09d6709f4e4cbe23418e4ade0f219fa2fa1f") - (define (gentoo-patch name revision hash) (origin (method url-fetch) @@ -266,39 +268,15 @@ (file-name (string-append "ungoogled-" name)) (sha256 (base32 hash)))) -(define %gentoo-patches - (list (gentoo-patch "chromium-fix-char_traits.patch" %gentoo-revision - "1zr9wj2rj5phwdiffykd8w3srmzn0xxgmznz762qp7rs7amnp8ns") - (gentoo-patch "chromium-blink-style_format.patch" %gentoo-revision - "098akk5l01m0n3zz08ycz1kp3xmjnbng6d399z1fnb2zigbf0b0z") - (gentoo-patch "chromium-78-protobuf-export.patch" %gentoo-revision - "1wbw29daqwyrnij4991v84955ydqfvvjpz4s2p40agnzmgdzwnsx") - (gentoo-patch "chromium-79-gcc-alignas.patch" %gentoo-revision - "1a6l4i9cicy8dpxxjamyw8cl2nmqfv3x9gbffrsr8571my6fh17s") - (gentoo-patch "chromium-80-gcc-quiche.patch" %gentoo-revision - "0rdlsymw6h8i6yhysiq4la53pwivzv1i9lh0gprh5cl367r1haww") - (gentoo-patch "chromium-82-gcc-noexcept.patch" %gentoo-revision - "0pljnysjvbv2ck0s159qssjhv1pfr32i0nb66smmfmfix2yaizqc") - (gentoo-patch "chromium-82-gcc-incomplete-type.patch" %gentoo-revision - "04751dnpmiasifhq29a1kyxlnq6f2fmd2qbkv7hxdlsxbzg3lhsv") - (gentoo-patch "chromium-82-gcc-template.patch" %gentoo-revision - "1ilmx9wmzyrwmfvr2mwc7m5z6lnbhjkms5k40i8yavqah6kcdbw2") - (gentoo-patch "chromium-82-gcc-iterator.patch" %gentoo-revision - "1xljai9cj99pf4q3l8hz90i8mhdbd8v6h1vj8y37v6j8p78n3zvj") - (gentoo-patch "chromium-83-gcc-template.patch" %gentoo-revision - "1bb1anqdrimza7d0gg4fmxij00563jd9k1azy8sz1ybd8gvrphqi") - (gentoo-patch "chromium-83-gcc-include.patch" %gentoo-revision - "0rs9jj71ridplndi967m0z47vqd8ryykg36gjx8iyf3580vr2hlw") - (gentoo-patch "chromium-83-gcc-permissive.patch" %gentoo-revision - "04mrmrg3pbwl3gph2n1dkbv4miz80xww1gysd39six028nxacjpg") - (gentoo-patch "chromium-83-gcc-iterator.patch" %gentoo-revision - "0q66399va607kjnk8n9xlcr740q7c522p2z7abyd2hgq2bxgglnv") - (gentoo-patch "chromium-83-gcc-serviceworker.patch" %gentoo-revision - "0klvcqqzldfhvqr3plja64qamgff1m2z1zcn325bj32gmpypqjx9") - (gentoo-patch "chromium-83-gcc-10.patch" %gentoo-revision - "0vfvh1jypqcb274bggacg165mw2q5gmn237cvrrwcjqalz0ahnry") - (gentoo-patch "chromium-83-icu67.patch" %gentoo-revision - "05spmjhg5f56mkq3f96vm4s2d9h6vqdxz5g8ibd9pf8ddnh4blnx"))) +;; This repository contains libstdc++ compatibility patches for Chromium. +(define (chromium-gcc-patchset commit hash) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/stha09/chromium-patches") + (commit commit))) + (file-name (git-file-name "chromium-gcc-patches" commit)) + (sha256 (base32 hash)))) (define (debian-patch name revision hash) (origin @@ -310,9 +288,25 @@ (string-append "ungoogled-chromium-" category "-" name)))) (sha256 (base32 hash)))) +(define %ungoogled-revision "df199c04ff367da59ce52a23a3f3b305dd3b00c3") +(define %debian-revision "debian/83.0.4103.116-3") +(define %gentoo-revision "f3f649046d31ebdbc8c4a302b2384504eff78027") + +(define %gentoo-patches + ;; This patch is necessary for compatibility with FFmpeg 4.3. + (list (gentoo-patch "chromium-84-mediaalloc.patch" %gentoo-revision + "0snxdc4nb8ykzncz62vpsl8hgxpy24m17mycx67i2gckmrpslzzv"))) + +(define %chromium-gcc-patches + (chromium-gcc-patchset + "chromium-84-patchset-3" + "0l05gx3pn703n47anjwsl5sjcqw8kaxmivf7llax97kj3k6d127v")) + (define %debian-patches - (list (debian-patch "system/nspr.patch" %debian-revision - "1x6ydc8pfks2c1dlwf0c58par6znjknvs9815576ycx27jl633dy") + (list (debian-patch "system/zlib.patch" %debian-revision + "0bp2vh1cgmwjrn1zkpphkd3bs662s23xwdhy3abm9cfjvwrj117n") + (debian-patch "system/jsoncpp.patch" %debian-revision + "0d95brl4a5y5w142yd0rvf59z513h7chsz0vnm034d6lqf22ahwf") (debian-patch "system/openjpeg.patch" %debian-revision "0zd6v5njx1pc7i0y6mslxvpx5j4cq01mmyx55qcqx8qzkm0gm48j"))) @@ -325,7 +319,7 @@ (string-take %ungoogled-revision 7))) (sha256 (base32 - "0kc40p8f7cls696gh6ign37l8j4x1pyyz32jkkli9cmrpbsjsadl")))) + "1bqvcq3dj6615198j7cz3ylyyic5zpis06capvl6ybl1na3ainb0")))) ;; This is a source 'snippet' that does the following: ;; *) Applies various patches for unbundling purposes and libstdc++ compatibility. @@ -350,12 +344,10 @@ patch "--no-backup-if-mismatch")) (append '#+%gentoo-patches '#+%debian-patches + (find-files #$%chromium-gcc-patches "\\.patch$") '#+(list (local-file (search-patch - "ungoogled-chromium-system-jsoncpp.patch")) - (local-file - (search-patch - "ungoogled-chromium-system-zlib.patch"))))) + "ungoogled-chromium-system-nspr.patch"))))) (with-directory-excursion #+%ungoogled-origin (format #t "Ungooglifying...~%") @@ -386,8 +378,7 @@ "--system-libraries" "ffmpeg" "flac" "fontconfig" "freetype" "harfbuzz-ng" "icu" "libdrm" "libevent" "libjpeg" "libpng" "libvpx" "libwebp" "libxml" - "libxslt" "openh264" "opus" "re2" "snappy" "yasm" - "zlib") + "libxslt" "openh264" "opus" "re2" "snappy" "zlib") #t)))) (define opus+custom @@ -402,10 +393,20 @@ `(cons "--enable-custom-modes" ,flags)))))) +;; Chromium still has Python2-only code, so we need this special Python 2 +;; variant of xcb-proto. +(define xcb-proto/python2 + (package/inherit + xcb-proto + (name "python2-xcb-proto") + (native-inputs + `(("pkg-config" ,pkg-config) + ("python" ,python-2))))) + (define-public ungoogled-chromium (package (name "ungoogled-chromium") - (version (string-append "83.0.4103.116-0." + (version (string-append "84.0.4147.89-0." (string-take %ungoogled-revision 7))) (synopsis "Graphical web browser") (source (origin @@ -415,7 +416,7 @@ (car (string-split version #\-)) ".tar.xz")) (sha256 (base32 - "1hravbi1lazmab2mih465alfzji1kzy38zya1visbwz9zs6pw35v")) + "0yf6j0459qzr677zsa2apmfz0x0ndlscvwj1a5v40nqjijchv5qp")) (modules '((guix build utils))) (snippet (force ungoogled-chromium-snippet)))) (build-system gnu-build-system) @@ -435,10 +436,13 @@ ;; directory for an exhaustive list of supported flags. ;; (Note: The 'configure' phase will do that for you.) (list "is_debug=false" + "is_unsafe_developer_build=false" "use_gold=false" "use_lld=false" + (string-append "max_jobs_per_link=" + (number->string (parallel-job-count))) + "exclude_unwind_tables=true" "clang_use_chrome_plugins=false" - "linux_use_bundled_binutils=false" "use_custom_libcxx=false" "use_sysroot=false" "enable_precompiled_headers=false" @@ -467,6 +471,9 @@ "custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" "host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + (string-append "xcbproto_path=\"" + (assoc-ref %build-inputs "xcb-proto") "/share/xcb\"") + ;; Prefer system libraries. "use_system_freetype=true" "use_system_harfbuzz=true" @@ -481,6 +488,7 @@ "use_pulseaudio=true" "link_pulseaudio=true" "icu_use_data_file=false" + "perfetto_use_system_protobuf=true" ;; VA-API acceleration is currently only supported on x86_64-linux. ,@(if (string-prefix? "x86_64" (or (%current-target-system) @@ -568,13 +576,10 @@ (substitute* "third_party/webrtc/rtc_base/strings/json.h" (("#include \"third_party/jsoncpp/") "#include \"json/")) - (substitute* "gpu/config/gpu_util.cc" - (("third_party/vulkan/include/") - "")) - (substitute* '("components/viz/common/gpu/vulkan_context_provider.h" - "components/viz/common/resources/resource_format_utils.h") - (("third_party/vulkan/include/") "")) + "components/viz/common/resources/resource_format_utils.h" + "gpu/config/gpu_util.cc") + (("third_party/vulkan_headers/include/") "")) (substitute* "third_party/skia/include/gpu/vk/GrVkVulkan.h" (("include/third_party/vulkan/") "")) @@ -743,7 +748,6 @@ ("node" ,node) ("pkg-config" ,pkg-config) ("which" ,which) - ("yasm" ,yasm) ;; This file contains defaults for new user profiles. ("master-preferences" ,(local-file "aux-files/chromium/master-preferences.json")) @@ -760,11 +764,7 @@ ("dbus-glib" ,dbus-glib) ("expat" ,expat) ("flac" ,flac) - - ;; FIXME: Change to ffmpeg 4.3 when supported, see - ;; . - ("ffmpeg" ,ffmpeg-4.2) - + ("ffmpeg" ,ffmpeg) ("fontconfig" ,fontconfig) ("freetype" ,freetype) ("gdk-pixbuf" ,gdk-pixbuf) @@ -805,13 +805,15 @@ ("opus" ,opus+custom) ("pango" ,pango) ("pciutils" ,pciutils) + ("protobuf" ,protobuf) ("pulseaudio" ,pulseaudio) ("re2" ,re2) ("snappy" ,snappy) ("speech-dispatcher" ,speech-dispatcher) ("udev" ,eudev) ("valgrind" ,valgrind) - ("vulkan-headers" ,vulkan-headers))) + ("vulkan-headers" ,vulkan-headers) + ("xcb-proto" ,xcb-proto/python2))) ;; Building Chromium takes ... a very long time. On a single core, a busy ;; mid-end x86 system may need more than 24 hours to complete the build. diff --git a/gnu/packages/patches/ungoogled-chromium-system-jsoncpp.patch b/gnu/packages/patches/ungoogled-chromium-system-jsoncpp.patch deleted file mode 100644 index 294e1ea33b..0000000000 --- a/gnu/packages/patches/ungoogled-chromium-system-jsoncpp.patch +++ /dev/null @@ -1,65 +0,0 @@ -Build with the system jsoncpp instead of the bundled one. - -Adapted from Debian: -https://salsa.debian.org/chromium-team/chromium/-/blob/master/debian/patches/system/jsoncpp.patch - -diff --git a/third_party/jsoncpp/BUILD.gn b/third_party/jsoncpp/BUILD.gn ---- a/third_party/jsoncpp/BUILD.gn -+++ b/third_party/jsoncpp/BUILD.gn -@@ -3,52 +3,14 @@ - # found in the LICENSE file. - - import("//testing/libfuzzer/fuzzer_test.gni") -+import("//build/config/linux/pkg_config.gni") - --config("jsoncpp_config") { -- include_dirs = [ -- "source/include", -- "generated", -- ] -- -- # TODO(crbug.com/983223): Update JsonCpp BUILD.gn to remove deprecated -- # declaration flag. -- # This temporary flag allowing clients to update to the new version, and then -- # update to the new StreamWriter and CharReader classes. -- if (!is_win || is_clang) { -- cflags_cc = [ "-Wno-deprecated-declarations" ] -- } -+pkg_config("jsoncpp_config") { -+ packages = [ "jsoncpp" ] - } - --source_set("jsoncpp") { -- sources = [ -- "generated/version.h", -- "source/include/json/assertions.h", -- "source/include/json/autolink.h", -- "source/include/json/config.h", -- "source/include/json/features.h", -- "source/include/json/forwards.h", -- "source/include/json/json.h", -- "source/include/json/reader.h", -- "source/include/json/value.h", -- "source/include/json/writer.h", -- "source/src/lib_json/json_reader.cpp", -- "source/src/lib_json/json_tool.h", -- "source/src/lib_json/json_value.cpp", -- "source/src/lib_json/json_writer.cpp", -- ] -- -+group("jsoncpp") { - public_configs = [ ":jsoncpp_config" ] -- -- defines = [ -- "JSON_USE_EXCEPTION=0", -- "JSON_USE_NULLREF=0", -- ] -- -- include_dirs = [ "source/src/lib_json" ] -- -- if (!is_win || is_clang) { -- cflags_cc = [ "-Wno-implicit-fallthrough" ] -- } - } - - if (build_with_chromium) { diff --git a/gnu/packages/patches/ungoogled-chromium-system-nspr.patch b/gnu/packages/patches/ungoogled-chromium-system-nspr.patch new file mode 100644 index 0000000000..6fbc0a56a7 --- /dev/null +++ b/gnu/packages/patches/ungoogled-chromium-system-nspr.patch @@ -0,0 +1,120 @@ +Build with the system nspr library. + +Originally based on a Debian patch: +https://salsa.debian.org/chromium-team/chromium/-/blob/master/debian/patches/system/nspr.patch + +--- a/base/time/pr_time_unittest.cc ++++ b/base/time/pr_time_unittest.cc +@@ -7,7 +7,7 @@ + + #include "base/compiler_specific.h" + #include "base/stl_util.h" +-#include "base/third_party/nspr/prtime.h" ++#include + #include "base/time/time.h" + #include "build/build_config.h" + #include "testing/gtest/include/gtest/gtest.h" +--- a/base/time/time.cc ++++ b/base/time/time.cc +@@ -14,7 +14,7 @@ + #include "base/macros.h" + #include "base/no_destructor.h" + #include "base/strings/stringprintf.h" +-#include "base/third_party/nspr/prtime.h" ++#include + #include "base/time/time_override.h" + #include "build/build_config.h" + +--- a/base/BUILD.gn ++++ b/base/BUILD.gn +@@ -107,6 +107,9 @@ config("base_flags") { + "-Wglobal-constructors", + ] + } ++ ldflags = [ ++ "-lnspr4", ++ ] + } + + config("base_implementation") { +@@ -712,8 +715,6 @@ jumbo_component("base") { + "third_party/cityhash_v103/src/city_v103.h", + "third_party/icu/icu_utf.cc", + "third_party/icu/icu_utf.h", +- "third_party/nspr/prtime.cc", +- "third_party/nspr/prtime.h", + "third_party/superfasthash/superfasthash.c", + "thread_annotations.h", + "threading/hang_watcher.cc", +--- a/tools/gn/build/gen.py ++++ b/tools/gn/build/gen.py +@@ -339,6 +339,9 @@ def WriteGNNinja(path, platform, host, o + if not options.no_static_libstdcpp: + ldflags.append('-static-libstdc++') + ++ # Additional system libraries that are used. ++ libs.append('-lnspr4') ++ + # This is needed by libc++. + if not platform.is_mingw(): + libs.append('-ldl') +--- a/third_party/blink/renderer/platform/BUILD.gn ++++ b/third_party/blink/renderer/platform/BUILD.gn +@@ -103,6 +103,9 @@ + "//build/win:default_exe_manifest", + "//third_party/icu", + ] ++ ldflags = [ ++ "-lnspr4" ++ ] + } + + # This isn't strictly necessary since we can just add the deps to "platform", +--- a/third_party/crashpad/crashpad/handler/BUILD.gn ++++ b/third_party/crashpad/crashpad/handler/BUILD.gn +@@ -140,6 +140,9 @@ + "../third_party/mini_chromium:base", + "../tools:tool_support", + ] ++ ldflags = [ ++ "-lnspr4" ++ ] + + if (crashpad_is_win) { + if (crashpad_is_in_chromium || crashpad_is_in_dart) { +--- a/chrome/common/search/BUILD.gn ++++ b/chrome/common/search/BUILD.gn +@@ -20,6 +20,9 @@ + "//chrome/common/themes:autogenerated_theme_util", + "//skia", + ] ++ ldflags = [ ++ "-lnspr4" ++ ] + } + + compiled_action("generate_chrome_colors_info") { +--- a/components/url_formatter/spoof_checks/top_domains/BUILD.gn ++++ b/components/url_formatter/spoof_checks/top_domains/BUILD.gn +@@ -31,6 +31,9 @@ + "//net/tools/huffman_trie:huffman_trie_generator_sources", + "//url:url", + ] ++ ldflags = [ ++ "-lnspr4", ++ ] + if (is_ios) { + libs = [ "UIKit.framework" ] + } +--- a/components/schema_org/BUILD.gn ++++ b/components/schema_org/BUILD.gn +@@ -33,6 +33,9 @@ + "//base", + "//url", + ] ++ ldflags = [ ++ "-lnspr4", ++ ] + } + + compiled_action("schema_org_name_data") { diff --git a/gnu/packages/patches/ungoogled-chromium-system-zlib.patch b/gnu/packages/patches/ungoogled-chromium-system-zlib.patch deleted file mode 100644 index b6e3c0f075..0000000000 --- a/gnu/packages/patches/ungoogled-chromium-system-zlib.patch +++ /dev/null @@ -1,47 +0,0 @@ -Use zlib instead of the bundled lzma_sdk. - -Adapted from Debian: -https://salsa.debian.org/chromium-team/chromium/-/blob/master/debian/patches/system/zlib.patch - -diff --git a/courgette/BUILD.gn b/courgette/BUILD.gn ---- a/courgette/BUILD.gn -+++ b/courgette/BUILD.gn -@@ -58,7 +58,6 @@ static_library("courgette_lib") { - - deps = [ - "//base", -- "//third_party/lzma_sdk", - ] - - public_deps = [ -@@ -79,7 +78,6 @@ source_set("courgette_common") { - ] - deps = [ - "//base", -- "//third_party/lzma_sdk", - ] - } - -diff --git a/courgette/crc.cc b/courgette/crc.cc ---- a/courgette/crc.cc -+++ b/courgette/crc.cc -@@ -7,6 +7,8 @@ - #include - #include - -+#define COURGETTE_USE_CRC_LIB -+ - #ifdef COURGETTE_USE_CRC_LIB - # include "zlib.h" - #else -diff --git a/third_party/perfetto/gn/BUILD.gn b/third_party/perfetto/gn/BUILD.gn ---- a/third_party/perfetto/gn/BUILD.gn -+++ b/third_party/perfetto/gn/BUILD.gn -@@ -304,7 +304,6 @@ if (enable_perfetto_zlib) { - public_configs = [ "//buildtools:zlib_config" ] - public_deps = [ "//buildtools:zlib" ] - } else { -- public_configs = [ "//third_party/zlib:zlib_config" ] - public_deps = [ "//third_party/zlib" ] - } - } -- cgit v1.2.3 From 66c3a35b1bad6060a9b9af78b764449dbfdededf Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Mon, 20 Jul 2020 17:03:12 +0200 Subject: gnu: ungoogled-chromium: Add VA-API fix for some Intel systems. * gnu/packages/chromium.scm (%arch-patches): New variable. (ungoogled-chromium-snippet): Use it. --- gnu/packages/chromium.scm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'gnu/packages/chromium.scm') diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index 7ce9b65abf..e4d6503dbb 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -310,6 +310,17 @@ (debian-patch "system/openjpeg.patch" %debian-revision "0zd6v5njx1pc7i0y6mslxvpx5j4cq01mmyx55qcqx8qzkm0gm48j"))) +(define %arch-patches + (list (origin + (method url-fetch) + (uri "https://git.archlinux.org/svntogit/packages.git/plain/trunk/\ +chromium-fix-vaapi-on-intel.patch?h=packages/chromium\ +&id=93b5b90621b4827084288197c6e0e09b987b372a") + (file-name "ungoogled-chromium-fix-vaapi-on-intel.patch") + (sha256 + (base32 + "16jbjjf4d9jp52rdrrxx5vm69nx3w0qrijgjpwapnmcif13z55g4"))))) + (define %ungoogled-origin (origin (method git-fetch) @@ -343,7 +354,7 @@ (invoke "patch" "-p1" "--force" "--input" patch "--no-backup-if-mismatch")) (append - '#+%gentoo-patches '#+%debian-patches + '#+%gentoo-patches '#+%debian-patches '#+%arch-patches (find-files #$%chromium-gcc-patches "\\.patch$") '#+(list (local-file (search-patch -- cgit v1.2.3 From 71c237bdc88426c7b654f48a38c25b66dadee040 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Tue, 21 Jul 2020 16:51:00 +0200 Subject: gnu: ungoogled-chromium: Enable all release optimizations. * gnu/packages/chromium.scm (ungoogled-chromium-snippet): Add substitution to allow using unbundled dependencies in "official" builds. (lld-as-ld, lld-wrapper, lld/wrapped): New variables. (ungoogled-chromium)[arguments]: Add "is_official_build" to #:configure-flags. Remove redundant or unnecessary flags, disable system protobuf. Use llvm-ar and llvm-nm instead of their binutils equivalents. [native-inputs]: Add LLD/WRAPPED. [inputs]: Remove PROTOBUF. --- gnu/packages/chromium.scm | 49 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 8 deletions(-) (limited to 'gnu/packages/chromium.scm') diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index e4d6503dbb..7955981261 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -385,6 +385,13 @@ chromium-fix-vaapi-on-intel.patch?h=packages/chromium\ (format #t "Replacing GN files...~%") (force-output) + (substitute* "tools/generate_shim_headers/generate_shim_headers.py" + ;; The "is_official_build" configure option enables certain + ;; release optimizations like those used in the commercial + ;; Chrome browser. Unfortunately it also requires using the + ;; bundled libraries: lose that restriction. + (("#if defined\\(OFFICIAL_BUILD\\)") + "#if 0")) (invoke "python" "build/linux/unbundle/replace_gn_files.py" "--system-libraries" "ffmpeg" "flac" "fontconfig" "freetype" "harfbuzz-ng" "icu" "libdrm" "libevent" @@ -414,6 +421,31 @@ chromium-fix-vaapi-on-intel.patch?h=packages/chromium\ `(("pkg-config" ,pkg-config) ("python" ,python-2))))) +;; 'make-ld-wrapper' can only work with an 'ld' executable, so we need +;; this trick to make it wrap 'lld'. +(define lld-as-ld + (computed-file "lld-ld" + #~(begin + (mkdir #$output) + (mkdir (string-append #$output "/bin")) + (symlink #$(file-append lld "/bin/lld") + (string-append #$output "/bin/ld"))))) + +;; Create a wrapper for LLD that inserts appropriate -rpath entries. +(define lld-wrapper + (make-ld-wrapper "lld-wrapper" + #:binutils lld-as-ld)) + +;; Clang looks for an 'ld.lld' executable, so we need to symlink it back. +(define lld/wrapped + (computed-file "lld-wrapped" + #~(begin + (mkdir #$output) + (mkdir (string-append #$output "/bin")) + (symlink #$(file-append lld-wrapper "/bin/ld") + (string-append #$output "/bin/lld")) + (symlink "lld" (string-append #$output "/bin/ld.lld"))))) + (define-public ungoogled-chromium (package (name "ungoogled-chromium") @@ -447,16 +479,14 @@ chromium-fix-vaapi-on-intel.patch?h=packages/chromium\ ;; directory for an exhaustive list of supported flags. ;; (Note: The 'configure' phase will do that for you.) (list "is_debug=false" - "is_unsafe_developer_build=false" - "use_gold=false" - "use_lld=false" + ;; Use the "official" release optimizations, as opposed to + ;; a developer build. + "is_official_build=true" (string-append "max_jobs_per_link=" (number->string (parallel-job-count))) - "exclude_unwind_tables=true" "clang_use_chrome_plugins=false" "use_custom_libcxx=false" "use_sysroot=false" - "enable_precompiled_headers=false" "goma_dir=\"\"" "enable_nacl=false" "enable_nacl_nonsfi=false" @@ -499,7 +529,10 @@ chromium-fix-vaapi-on-intel.patch?h=packages/chromium\ "use_pulseaudio=true" "link_pulseaudio=true" "icu_use_data_file=false" - "perfetto_use_system_protobuf=true" + + ;; FIXME: Using system protobuf with "is_official_build" causes an + ;; invalid opcode and "protoc-gen-plugin: Plugin killed by signal 4". + ;;"perfetto_use_system_protobuf=true" ;; VA-API acceleration is currently only supported on x86_64-linux. ,@(if (string-prefix? "x86_64" (or (%current-target-system) @@ -628,7 +661,7 @@ chromium-fix-vaapi-on-intel.patch?h=packages/chromium\ (lambda* (#:key inputs #:allow-other-keys) ;; Make sure the right build tools are used. - (setenv "AR" "ar") (setenv "NM" "nm") + (setenv "AR" "llvm-ar") (setenv "NM" "llvm-nm") (setenv "CC" "clang") (setenv "CXX" "clang++") (setenv "CXXFLAGS" @@ -755,6 +788,7 @@ chromium-fix-vaapi-on-intel.patch?h=packages/chromium\ ("clang" ,clang-10) ("gn" ,gn) ("gperf" ,gperf) + ("ld-wrapper" ,lld/wrapped) ("ninja" ,ninja) ("node" ,node) ("pkg-config" ,pkg-config) @@ -816,7 +850,6 @@ chromium-fix-vaapi-on-intel.patch?h=packages/chromium\ ("opus" ,opus+custom) ("pango" ,pango) ("pciutils" ,pciutils) - ("protobuf" ,protobuf) ("pulseaudio" ,pulseaudio) ("re2" ,re2) ("snappy" ,snappy) -- cgit v1.2.3 From e165a2492d73d37c8b95d6970d453b9d88911ee6 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Thu, 23 Jul 2020 19:35:53 +0200 Subject: gnu: ungoogled-chromium: Avoid top-level reference to LLD. * gnu/packages/chromium.scm (lld-as-ld, lld-wrapper, lld/wrapped): Move into ... (make-lld-wrapper): ... here. New procedure. --- gnu/packages/chromium.scm | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'gnu/packages/chromium.scm') diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index 7955981261..d828c25bc2 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -423,21 +423,21 @@ chromium-fix-vaapi-on-intel.patch?h=packages/chromium\ ;; 'make-ld-wrapper' can only work with an 'ld' executable, so we need ;; this trick to make it wrap 'lld'. -(define lld-as-ld - (computed-file "lld-ld" - #~(begin - (mkdir #$output) - (mkdir (string-append #$output "/bin")) - (symlink #$(file-append lld "/bin/lld") - (string-append #$output "/bin/ld"))))) - -;; Create a wrapper for LLD that inserts appropriate -rpath entries. -(define lld-wrapper - (make-ld-wrapper "lld-wrapper" - #:binutils lld-as-ld)) - -;; Clang looks for an 'ld.lld' executable, so we need to symlink it back. -(define lld/wrapped +(define (make-lld-wrapper lld) + (define lld-as-ld + (computed-file "lld-ld" + #~(begin + (mkdir #$output) + (mkdir (string-append #$output "/bin")) + (symlink #$(file-append lld "/bin/lld") + (string-append #$output "/bin/ld"))))) + + ;; Create a wrapper for LLD that inserts appropriate -rpath entries. + (define lld-wrapper + (make-ld-wrapper "lld-wrapper" + #:binutils lld-as-ld)) + + ;; Clang looks for an 'ld.lld' executable, so we need to symlink it back. (computed-file "lld-wrapped" #~(begin (mkdir #$output) @@ -788,7 +788,7 @@ chromium-fix-vaapi-on-intel.patch?h=packages/chromium\ ("clang" ,clang-10) ("gn" ,gn) ("gperf" ,gperf) - ("ld-wrapper" ,lld/wrapped) + ("ld-wrapper" ,(make-lld-wrapper lld)) ("ninja" ,ninja) ("node" ,node) ("pkg-config" ,pkg-config) -- cgit v1.2.3