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:
parent
f6134ca5ff
commit
4b4ea1669d
1 changed files with 309 additions and 304 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
Reference in a new issue