Archived
1
0
Fork 0

gnu: ungoogled-chromium: Convert arguments to G-expression.

* gnu/packages/chromium.scm (ungoogled-chromium)[native-inputs]: Remove
the "master-preferences" gexp input.  Remove all labels.
[arguments]: Convert to gexp.  Inline the above-mentioned gexp.  Remove one
usage of "gcc" label while at it.
This commit is contained in:
Marius Bakke 2022-01-10 18:35:12 +01:00
parent f6134ca5ff
commit 4b4ea1669d
No known key found for this signature in database
GPG key ID: A2A06DF2A33A54FA

View file

@ -485,344 +485,349 @@
(snippet (force ungoogled-chromium-snippet)))) (snippet (force ungoogled-chromium-snippet))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:tests? #f (list
#:modules ((guix build gnu-build-system) #:tests? #f
#:modules '((guix build gnu-build-system)
(guix build utils) (guix build utils)
(srfi srfi-26)) (srfi srfi-26))
#:configure-flags #:configure-flags
;; See tools/gn/docs/cookbook.md and ;; See tools/gn/docs/cookbook.md and
;; https://www.chromium.org/developers/gn-build-configuration ;; https://www.chromium.org/developers/gn-build-configuration
;; for usage. Run "gn args . --list" in the Release ;; for usage. Run "gn args . --list" in the Release
;; directory for an exhaustive list of supported flags. ;; directory for an exhaustive list of supported flags.
;; (Note: The 'configure' phase will do that for you.) ;; (Note: The 'configure' phase will do that for you.)
(list "is_debug=false" #~(list "is_debug=false"
;; Use the "official" release optimizations, as opposed to ;; Use the "official" release optimizations, as opposed to
;; a developer build. ;; a developer build.
"is_official_build=true" "is_official_build=true"
"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
"chrome_pgo_phase=0" "chrome_pgo_phase=0"
"use_sysroot=false" "use_sysroot=false"
"goma_dir=\"\"" "goma_dir=\"\""
"enable_nacl=false" "enable_nacl=false"
"enable_nacl_nonsfi=false" "enable_nacl_nonsfi=false"
"use_unofficial_version_number=false" "use_unofficial_version_number=false"
"treat_warnings_as_errors=false" "treat_warnings_as_errors=false"
"use_official_google_api_keys=false" "use_official_google_api_keys=false"
"disable_fieldtrial_testing_config=true" "disable_fieldtrial_testing_config=true"
"safe_browsing_mode=0" "safe_browsing_mode=0"
"enable_mdns=false" "enable_mdns=false"
"enable_one_click_signin=false" "enable_one_click_signin=false"
"enable_reading_list=false" "enable_reading_list=false"
"enable_remoting=false" "enable_remoting=false"
"enable_reporting=false" "enable_reporting=false"
"enable_service_discovery=false" "enable_service_discovery=false"
"enable_vr=false" "enable_vr=false"
"enable_widevine=false" "enable_widevine=false"
;; Disable type-checking for the Web UI to avoid a Java dependency. ;; Disable type-checking for the Web UI to avoid a Java dependency.
"enable_js_type_check=false" "enable_js_type_check=false"
;; Disable code using TensorFlow until it has been scrutinized ;; Disable code using TensorFlow until it has been scrutinized
;; by the ungoogled project. ;; by the ungoogled project.
"build_with_tflite_lib=false" "build_with_tflite_lib=false"
;; Avoid dependency on code formatting tools. ;; Avoid dependency on code formatting tools.
"blink_enable_generated_code_formatting=false" "blink_enable_generated_code_formatting=false"
;; Define a custom toolchain that simply looks up CC, AR and ;; Define a custom toolchain that simply looks up CC, AR and
;; friends from the environment. ;; friends from the environment.
"custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" "custom_toolchain=\"//build/toolchain/linux/unbundle:default\""
"host_toolchain=\"//build/toolchain/linux/unbundle:default\"" "host_toolchain=\"//build/toolchain/linux/unbundle:default\""
;; Prefer system libraries. ;; Prefer system libraries.
"use_system_freetype=true" "use_system_freetype=true"
"use_system_harfbuzz=true" "use_system_harfbuzz=true"
"use_system_lcms2=true" "use_system_lcms2=true"
"use_system_libdrm=true" "use_system_libdrm=true"
"use_system_libjpeg=true" "use_system_libjpeg=true"
"use_system_libopenjpeg2=true" "use_system_libopenjpeg2=true"
"use_system_libpng=true" "use_system_libpng=true"
"use_system_wayland_scanner=true" "use_system_wayland_scanner=true"
(string-append "system_wayland_scanner_path=\"" (string-append "system_wayland_scanner_path=\""
(search-input-file %build-inputs (search-input-file %build-inputs
"/bin/wayland-scanner") "/bin/wayland-scanner")
"\"") "\"")
"use_system_zlib=true" "use_system_zlib=true"
"use_gnome_keyring=false" ;deprecated by libsecret "use_gnome_keyring=false" ;deprecated by libsecret
"use_pulseaudio=true" "use_pulseaudio=true"
"link_pulseaudio=true" "link_pulseaudio=true"
"icu_use_data_file=false" "icu_use_data_file=false"
;; FIXME: Using system protobuf with "is_official_build" causes an ;; FIXME: Using system protobuf with "is_official_build" causes an
;; invalid opcode and "protoc-gen-plugin: Plugin killed by signal 4". ;; invalid opcode and "protoc-gen-plugin: Plugin killed by signal 4".
;;"perfetto_use_system_protobuf=true" ;;"perfetto_use_system_protobuf=true"
;; VA-API acceleration is currently only supported on x86_64-linux. ;; VA-API acceleration is currently only supported on x86_64-linux.
,@(if (string-prefix? "x86_64" (or (%current-target-system) #$@(if (string-prefix? "x86_64" (or (%current-target-system)
(%current-system))) (%current-system)))
'("use_vaapi=true") '("use_vaapi=true")
'()) '())
"media_use_ffmpeg=true" "media_use_ffmpeg=true"
"media_use_libvpx=true" "media_use_libvpx=true"
"media_use_openh264=true" "media_use_openh264=true"
;; Do not artifically restrict formats supported by system ffmpeg. ;; Do not artifically restrict formats supported by system ffmpeg.
"proprietary_codecs=true" "proprietary_codecs=true"
"ffmpeg_branding=\"Chrome\"" "ffmpeg_branding=\"Chrome\""
;; WebRTC stuff. ;; WebRTC stuff.
"rtc_use_h264=true" "rtc_use_h264=true"
"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=true" ;FIXME: libc++ std::string ABI difference
"rtc_build_libevent=false" "rtc_build_libevent=false"
"rtc_build_libvpx=false" "rtc_build_libvpx=false"
"rtc_build_opus=false" "rtc_build_opus=false"
"rtc_build_libsrtp=true" ;FIXME: fails to find headers "rtc_build_libsrtp=true" ;FIXME: fails to find headers
"rtc_build_usrsctp=true" ;TODO: package this "rtc_build_usrsctp=true" ;TODO: package this
"rtc_build_ssl=true") ;XXX: the bundled BoringSSL is required? "rtc_build_ssl=true") ;XXX: requires BoringSSL
#:phases #:phases
(modify-phases %standard-phases #~(modify-phases %standard-phases
(add-after 'unpack 'patch-stuff (add-after 'unpack 'patch-stuff
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
(let ((openjpeg (search-input-directory (let ((openjpeg (search-input-directory
inputs "include/openjpeg-2.4"))) inputs "include/openjpeg-2.4")))
(substitute* "third_party/pdfium/BUILD.gn" (substitute* "third_party/pdfium/BUILD.gn"
;; This include path is added by Debians openjpeg patch. ;; This include path is added by Debians openjpeg patch.
(("/usr/include/openjpeg-2.4") openjpeg))) (("/usr/include/openjpeg-2.4") openjpeg))
(substitute* (substitute*
'("base/process/launch_posix.cc" '("base/process/launch_posix.cc"
"base/third_party/dynamic_annotations/dynamic_annotations.c" "base/third_party/dynamic_annotations/dynamic_annotations.c"
"sandbox/linux/seccomp-bpf/sandbox_bpf.cc" "sandbox/linux/seccomp-bpf/sandbox_bpf.cc"
"sandbox/linux/services/credentials.cc" "sandbox/linux/services/credentials.cc"
"sandbox/linux/services/namespace_utils.cc" "sandbox/linux/services/namespace_utils.cc"
"sandbox/linux/services/syscall_wrappers.cc" "sandbox/linux/services/syscall_wrappers.cc"
"sandbox/linux/syscall_broker/broker_host.cc") "sandbox/linux/syscall_broker/broker_host.cc")
(("include \"base/third_party/valgrind/") "include \"valgrind/")) (("include \"base/third_party/valgrind/") "include \"valgrind/"))
(for-each (lambda (file) (for-each (lambda (file)
(substitute* file (substitute* file
;; Fix opus include path. ;; Fix opus include path.
;; Do not substitute opus_private.h. ;; Do not substitute opus_private.h.
(("#include \"opus\\.h\"") (("#include \"opus\\.h\"")
"#include \"opus/opus.h\"") "#include \"opus/opus.h\"")
(("#include \"opus_custom\\.h\"") (("#include \"opus_custom\\.h\"")
"#include \"opus/opus_custom.h\"") "#include \"opus/opus_custom.h\"")
(("#include \"opus_defines\\.h\"") (("#include \"opus_defines\\.h\"")
"#include \"opus/opus_defines.h\"") "#include \"opus/opus_defines.h\"")
(("#include \"opus_multistream\\.h\"") (("#include \"opus_multistream\\.h\"")
"#include \"opus/opus_multistream.h\"") "#include \"opus/opus_multistream.h\"")
(("#include \"opus_types\\.h\"") (("#include \"opus_types\\.h\"")
"#include \"opus/opus_types.h\""))) "#include \"opus/opus_types.h\"")))
(find-files (string-append "third_party/webrtc/modules" (find-files (string-append "third_party/webrtc/modules"
"/audio_coding/codecs/opus"))) "/audio_coding/codecs/opus")))
;; 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$")
(("third_party/icu/source/(common|i18n)/") (("third_party/icu/source/(common|i18n)/")
"")) ""))
;; XXX: Should be unnecessary when use_system_lcms2=true. ;; XXX: Should be unnecessary when use_system_lcms2=true.
(substitute* "third_party/pdfium/core/fxcodec/icc/icc_transform.h" (substitute* "third_party/pdfium/core/fxcodec/icc/icc_transform.h"
(("include \"third_party/lcms/include/lcms2\\.h\"") (("include \"third_party/lcms/include/lcms2\\.h\"")
"include \"lcms2.h\"")) "include \"lcms2.h\""))
(substitute* (substitute*
"third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h" "third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h"
(("include \"third_party/curl") (("include \"third_party/curl")
"include \"curl")) "include \"curl"))
(substitute* '("components/viz/common/gpu/vulkan_context_provider.h" (substitute* '("components/viz/common/gpu/vulkan_context_provider.h"
"components/viz/common/resources/resource_format_utils.h" "components/viz/common/resources/resource_format_utils.h"
"gpu/config/gpu_util.cc") "gpu/config/gpu_util.cc")
(("third_party/vulkan_headers/include/") "")) (("third_party/vulkan_headers/include/") ""))
(substitute* "third_party/skia/include/gpu/vk/GrVkVulkan.h" (substitute* "third_party/skia/include/gpu/vk/GrVkVulkan.h"
(("include/third_party/vulkan/") "")))) (("include/third_party/vulkan/") "")))))
(add-after 'patch-stuff 'add-absolute-references (add-after 'patch-stuff 'add-absolute-references
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
(let ((cups-config (search-input-file inputs "/bin/cups-config")) (let ((cups-config (search-input-file inputs "/bin/cups-config"))
(libnssckbi.so (search-input-file inputs "/lib/nss/libnssckbi.so")) (libnssckbi.so (search-input-file inputs
(libudev.so.1 (search-input-file inputs "/lib/libudev.so.1")) "/lib/nss/libnssckbi.so"))
(libvulkan.so.1 (search-input-file inputs "/lib/libvulkan.so.1")) (libudev.so.1 (search-input-file inputs "/lib/libudev.so.1"))
(mesa-lib (dirname (search-input-file inputs "/lib/libGL.so.1")))) (libvulkan.so.1 (search-input-file inputs
(substitute* "printing/cups_config_helper.py" "/lib/libvulkan.so.1"))
(("cups_config =.*") (mesa-lib (dirname (search-input-file inputs
(string-append "cups_config = '" cups-config "'\n"))) "/lib/libGL.so.1"))))
(substitute* "crypto/nss_util.cc" (substitute* "printing/cups_config_helper.py"
(("libnssckbi\\.so") libnssckbi.so)) (("cups_config =.*")
(substitute* "device/udev_linux/udev1_loader.cc" (string-append "cups_config = '" cups-config "'\n")))
(("libudev\\.so\\.1") libudev.so.1)) (substitute* "crypto/nss_util.cc"
(substitute* "third_party/dawn/src/dawn_native/vulkan/BackendVk.cpp" (("libnssckbi\\.so") libnssckbi.so))
(("libvulkan\\.so\\.1") libvulkan.so.1)) (substitute* "device/udev_linux/udev1_loader.cc"
(substitute* (("libudev\\.so\\.1") libudev.so.1))
'("ui/ozone/platform/x11/gl_ozone_glx.cc" (substitute* "third_party/dawn/src/dawn_native/vulkan/BackendVk.cpp"
"ui/ozone/common/egl_util.cc" (("libvulkan\\.so\\.1") libvulkan.so.1))
"ui/gl/init/gl_initializer_linux_x11.cc" (substitute*
"third_party/angle/src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp") '("ui/ozone/platform/x11/gl_ozone_glx.cc"
(("libGL\\.so\\.1") "ui/ozone/common/egl_util.cc"
(string-append mesa-lib "/libGL.so.1")) "ui/gl/init/gl_initializer_linux_x11.cc"
(("libEGL\\.so\\.1") "third_party/angle/src/libANGLE/renderer/gl/glx\
(string-append mesa-lib "/libEGL.so.1")) /FunctionsGLX.cpp")
(("libGLESv2\\.so\\.2") (("libGL\\.so\\.1")
(string-append mesa-lib "/libGLESv2.so.2")))))) (string-append mesa-lib "/libGL.so.1"))
(add-before 'configure 'prepare-build-environment (("libEGL\\.so\\.1")
(lambda* (#:key inputs #:allow-other-keys) (string-append mesa-lib "/libEGL.so.1"))
(("libGLESv2\\.so\\.2")
(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)
"/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++")
(let ((gcc (assoc-ref inputs "gcc"))) ;; TODO: pre-compile instead. Avoids a race condition.
;; Remove the default compiler from CPLUS_INCLUDE_PATH to (setenv "PYTHONDONTWRITEBYTECODE" "1")
;; prevent header conflict with the bundled libcxx.
(setenv "CPLUS_INCLUDE_PATH"
(string-join
(delete (string-append gcc "/include/c++")
(string-split (getenv "CPLUS_INCLUDE_PATH")
#\:))
":"))
(format #t
"environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%"
(getenv "CPLUS_INCLUDE_PATH")))
;; TODO: pre-compile instead. Avoids a race condition. ;; XXX: How portable is this.
(setenv "PYTHONDONTWRITEBYTECODE" "1") (mkdir-p "third_party/node/linux/node-linux-x64")
(symlink (dirname node)
"third_party/node/linux/node-linux-x64/bin"))))
(replace 'configure
(lambda* (#:key configure-flags #:allow-other-keys)
(let ((args (string-join configure-flags " ")))
;; Generate ninja build files.
(invoke "gn" "gen" "out/Release"
(string-append "--args=" args))
;; XXX: How portable is this. ;; Print the full list of supported arguments as well as
(mkdir-p "third_party/node/linux/node-linux-x64") ;; their current status for convenience.
(symlink (dirname (search-input-file inputs "/bin/node")) (format #t "Dumping configure flags...\n")
"third_party/node/linux/node-linux-x64/bin"))) (invoke "gn" "args" "out/Release" "--list"))))
(replace 'configure (add-before 'build 'increase-resource-limits
(lambda* (#:key configure-flags #:allow-other-keys) (lambda _
(let ((args (string-join configure-flags " "))) ;; XXX: Chromiums linking step requires a lot of simultaneous file
;; Generate ninja build files. ;; accesses. Having a too low ulimit will result in bogus linker
(invoke "gn" "gen" "out/Release" ;; errors such as "foo.a: error adding symbols: malformed archive".
(string-append "--args=" args))
;; Print the full list of supported arguments as well as ;; Try increasing the soft resource limit of max open files to 2048,
;; their current status for convenience. ;; or equal to the hard limit, whichever is lower.
(format #t "Dumping configure flags...\n") (call-with-values (lambda () (getrlimit 'nofile))
(invoke "gn" "args" "out/Release" "--list")))) (lambda (soft hard)
(add-before 'build 'increase-resource-limits (when (and soft (< soft 2048))
(lambda _ (if hard
;; XXX: Chromiums linking step requires a lot of simultaneous file (setrlimit 'nofile (min hard 2048) hard)
;; accesses. Having a too low ulimit will result in bogus linker (setrlimit 'nofile 2048 #f))
;; errors such as "foo.a: error adding symbols: malformed archive". (format #t
"increased maximum number of open files from ~d to ~d~%"
soft (if hard (min hard 2048) 2048)))))))
(replace 'build
(lambda* (#:key (parallel-build? #t) #:allow-other-keys)
(invoke "ninja" "-C" "out/Release"
"-j" (if parallel-build?
(number->string (parallel-job-count))
"1")
"chrome"
"chromedriver")))
(replace 'install
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(exe (string-append bin "/chromium"))
(lib (string-append out "/lib"))
(man (string-append out "/share/man/man1"))
(applications (string-append out "/share/applications"))
(libs '("chrome_100_percent.pak"
"chrome_200_percent.pak"
"resources.pak"
"v8_context_snapshot.bin"
;; Try increasing the soft resource limit of max open files to 2048, ;; Swiftshader ICD.
;; or equal to the hard limit, whichever is lower. "libvk_swiftshader.so"
(call-with-values (lambda () (getrlimit 'nofile)) "vk_swiftshader_icd.json"
(lambda (soft hard)
(when (and soft (< soft 2048))
(if hard
(setrlimit 'nofile (min hard 2048) hard)
(setrlimit 'nofile 2048 #f))
(format #t
"increased maximum number of open files from ~d to ~d~%"
soft (if hard (min hard 2048) 2048)))))))
(replace 'build
(lambda* (#:key (parallel-build? #t) #:allow-other-keys)
(invoke "ninja" "-C" "out/Release"
"-j" (if parallel-build?
(number->string (parallel-job-count))
"1")
"chrome"
"chromedriver")))
(replace 'install
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(exe (string-append bin "/chromium"))
(lib (string-append out "/lib"))
(man (string-append out "/share/man/man1"))
(applications (string-append out "/share/applications"))
(libs '("chrome_100_percent.pak"
"chrome_200_percent.pak"
"resources.pak"
"v8_context_snapshot.bin"
;; Swiftshader ICD. ;; Chromium ships its own libGL
"libvk_swiftshader.so" ;; implementation called ANGLE.
"vk_swiftshader_icd.json" "libEGL.so" "libGLESv2.so"))
(locales (string-append lib "/locales"))
(resources (string-append lib "/resources"))
(preferences
;; This file contains defaults for new user profiles.
#$(local-file "aux-files/chromium/master-preferences.json"))
(gtk+ (assoc-ref inputs "gtk+"))
(xdg-utils (assoc-ref inputs "xdg-utils")))
;; Chromium ships its own libGL (substitute* '("chrome/app/resources/manpage.1.in"
;; implementation called ANGLE. "chrome/installer/linux/common/desktop.template")
"libEGL.so" "libGLESv2.so")) (("@@MENUNAME@@") "Chromium")
(locales (string-append lib "/locales")) (("@@PACKAGE@@") "chromium")
(resources (string-append lib "/resources")) (("/usr/bin/@@USR_BIN_SYMLINK_NAME@@") exe))
(preferences (assoc-ref inputs "master-preferences"))
(gtk+ (assoc-ref inputs "gtk+"))
(xdg-utils (assoc-ref inputs "xdg-utils")))
(substitute* '("chrome/app/resources/manpage.1.in" (mkdir-p man)
"chrome/installer/linux/common/desktop.template") (copy-file "chrome/app/resources/manpage.1.in"
(("@@MENUNAME@@") "Chromium") (string-append man "/chromium.1"))
(("@@PACKAGE@@") "chromium")
(("/usr/bin/@@USR_BIN_SYMLINK_NAME@@") exe))
(mkdir-p man) (mkdir-p applications)
(copy-file "chrome/app/resources/manpage.1.in" (copy-file "chrome/installer/linux/common/desktop.template"
(string-append man "/chromium.1")) (string-append applications "/chromium.desktop"))
(mkdir-p applications) (mkdir-p lib)
(copy-file "chrome/installer/linux/common/desktop.template" (copy-file preferences (string-append lib "/master_preferences"))
(string-append applications "/chromium.desktop"))
(mkdir-p lib) (with-directory-excursion "out/Release"
(copy-file preferences (string-append lib "/master_preferences")) (for-each (cut install-file <> lib) libs)
(copy-file "chrome" (string-append lib "/chromium"))
(with-directory-excursion "out/Release" (copy-recursively "locales" locales)
(for-each (cut install-file <> lib) libs) (copy-recursively "resources" resources)
(copy-file "chrome" (string-append lib "/chromium"))
(copy-recursively "locales" locales) (mkdir-p bin)
(copy-recursively "resources" resources) (symlink "../lib/chromium" exe)
(install-file "chromedriver" bin)
(mkdir-p bin) (for-each (lambda (so)
(symlink "../lib/chromium" exe) (install-file so (string-append lib "/swiftshader")))
(install-file "chromedriver" bin) (find-files "swiftshader" "\\.so$"))
(for-each (lambda (so) (wrap-program exe
(install-file so (string-append lib "/swiftshader"))) ;; Avoid file manager crash. See <https://bugs.gnu.org/26593>.
(find-files "swiftshader" "\\.so$")) `("XDG_DATA_DIRS" ":" prefix (,(string-append gtk+ "/share")))
`("PATH" ":" prefix (,(string-append xdg-utils "/bin")))))
(wrap-program exe (with-directory-excursion "chrome/app/theme/chromium"
;; Avoid file manager crash. See <https://bugs.gnu.org/26593>. (for-each
`("XDG_DATA_DIRS" ":" prefix (,(string-append gtk+ "/share"))) (lambda (size)
`("PATH" ":" prefix (,(string-append xdg-utils "/bin"))))) (let ((icons (string-append out "/share/icons/hicolor/"
size "x" size "/apps")))
(with-directory-excursion "chrome/app/theme/chromium" (mkdir-p icons)
(for-each (copy-file (string-append "product_logo_" size ".png")
(lambda (size) (string-append icons "/chromium.png"))))
(let ((icons (string-append out "/share/icons/hicolor/" '("24" "48" "64" "128" "256")))))))))
size "x" size "/apps")))
(mkdir-p icons)
(copy-file (string-append "product_logo_" size ".png")
(string-append icons "/chromium.png"))))
'("24" "48" "64" "128" "256")))))))))
(native-inputs (native-inputs
`(("bison" ,bison) (list bison
("clang" ,clang-13) clang-13
("gn" ,gn) gn
("gperf" ,gperf) gperf
("ld-wrapper" ,lld-as-ld-wrapper) lld-as-ld-wrapper
("ninja" ,ninja) ninja
("node" ,node-lts) node-lts
("pkg-config" ,pkg-config) pkg-config
("which" ,which) which
python-beautifulsoup4
;; This file contains defaults for new user profiles. python-html5lib
("master-preferences" ,(local-file "aux-files/chromium/master-preferences.json")) python-wrapper
wayland))
("python-beautifulsoup4" ,python-beautifulsoup4)
("python-html5lib" ,python-html5lib)
("python" ,python-wrapper)
("wayland-scanner" ,wayland)))
(inputs (inputs
(list alsa-lib (list alsa-lib
atk atk
@ -866,7 +871,7 @@
mit-krb5 mit-krb5
nss nss
openh264 openh264
openjpeg ;PDFium only openjpeg ;PDFium only
opus+custom opus+custom
pango pango
pciutils pciutils