mirror of
https://codeberg.org/guix/guix.git
synced 2026-04-28 06:34:05 +00:00
Compare commits
81 Commits
go-team
...
haskell-te
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4c8736cc64 | ||
|
|
0a2dba4538 | ||
|
|
c531c5c494 | ||
|
|
e6baa8e9fa | ||
|
|
9ca97d8c39 | ||
|
|
2689a01e71 | ||
|
|
7b37197dce | ||
|
|
711089969a | ||
|
|
511c15701c | ||
|
|
358f464159 | ||
|
|
f4a364611b | ||
|
|
8e4ecef1c5 | ||
|
|
3ae74b3d97 | ||
|
|
b787d733f4 | ||
|
|
dad77aa713 | ||
|
|
ea7e135271 | ||
|
|
c205e41353 | ||
|
|
86825be2ab | ||
|
|
975aa48cae | ||
|
|
6acf7a9c06 | ||
|
|
0fff5dd5ce | ||
|
|
236903e218 | ||
|
|
3e5df68673 | ||
|
|
e298edb28e | ||
|
|
86aa4e3bfc | ||
|
|
88aff62d8e | ||
|
|
05c8e8cb3d | ||
|
|
36b9ed4445 | ||
|
|
6ed858c4c0 | ||
|
|
42faa9d63a | ||
|
|
fcb7e4f0a3 | ||
|
|
2624a1b3b1 | ||
|
|
614cd94444 | ||
|
|
af1ff7b4f8 | ||
|
|
429f17e5ca | ||
|
|
91dad5a1a1 | ||
|
|
226a3509b8 | ||
|
|
199270ef19 | ||
|
|
0cc7ff6864 | ||
|
|
aac95cc67f | ||
|
|
96af3e9bb4 | ||
|
|
42697f220f | ||
|
|
93f6400631 | ||
|
|
cc5edbcc1d | ||
|
|
fdd6e9391f | ||
|
|
125d05a3f8 | ||
|
|
d1b6ae6922 | ||
|
|
76c137ebfa | ||
|
|
f0a9b062ac | ||
|
|
03401147f2 | ||
|
|
b4f7c683cd | ||
|
|
b87ca9a3d5 | ||
|
|
97f8dd37cd | ||
|
|
f63700e8d3 | ||
|
|
e8c35a2d49 | ||
|
|
eda1a86685 | ||
|
|
10ea4f874e | ||
|
|
c5280fd612 | ||
|
|
ed63c9e8f7 | ||
|
|
297b593f62 | ||
|
|
07ecb050c0 | ||
|
|
ac316e522a | ||
|
|
99fdbdef6a | ||
|
|
101b12a54a | ||
|
|
aafdf7ecf7 | ||
|
|
0999b3268c | ||
|
|
e296f3f012 | ||
|
|
759bdcb469 | ||
|
|
ee985ff4d6 | ||
|
|
4fdaa6e2f2 | ||
|
|
445e61337e | ||
|
|
d632b423d5 | ||
|
|
4a4ef229e6 | ||
|
|
2c51b803e3 | ||
|
|
6690bf46c6 | ||
|
|
58266bb4ba | ||
|
|
69f512e520 | ||
|
|
83e5fe437f | ||
|
|
ef81d340cd | ||
|
|
5ce1b4a3e3 | ||
|
|
e155ef7c4b |
@@ -26,7 +26,6 @@
|
||||
|
||||
(define %sundry-texlive-packages
|
||||
(list bibtool
|
||||
dvisvgm
|
||||
rubber
|
||||
texmaker
|
||||
texstudio
|
||||
|
||||
17
gnu/local.mk
17
gnu/local.mk
@@ -1453,6 +1453,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/ghc-aeson-encodeDouble.patch \
|
||||
%D%/packages/patches/ghc-basement-fix-32bit.patch \
|
||||
%D%/packages/patches/ghc-bytestring-handle-ghc9.patch \
|
||||
%D%/packages/patches/ghc-chell-quickcheck-enable-qc-2.15.patch \
|
||||
%D%/packages/patches/ghc-clock-realfrag.patch \
|
||||
%D%/packages/patches/ghc-language-haskell-extract-ghc-8.10.patch \
|
||||
%D%/packages/patches/ghc-memory-fix-32bit.patch \
|
||||
@@ -2114,6 +2115,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/python-random2-getrandbits-test.patch \
|
||||
%D%/packages/patches/python-pillow-use-zlib-1.3.patch \
|
||||
%D%/packages/patches/python-pydocstyle-add-support-for-pep701.patch \
|
||||
%D%/packages/patches/python-pynvim-fix-test-command-error.patch \
|
||||
%D%/packages/patches/python-pypytools-python-3-fixes.patch \
|
||||
%D%/packages/patches/python-pyreadstat-link-libiconv.patch \
|
||||
%D%/packages/patches/python-sip-include-dirs.patch \
|
||||
@@ -2386,6 +2388,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/rust-1.70-fix-rustix-build.patch \
|
||||
%D%/packages/patches/rust-1.78-unwinding-fix.patch \
|
||||
%D%/packages/patches/rust-1.81-fix-riscv64-bootstrap.patch \
|
||||
%D%/packages/patches/rust-candle-0.9.1-add-candle-onnx-to-workspace.patch \
|
||||
%D%/packages/patches/rust-codex-0.98.0-core-remove-self-dep.patch \
|
||||
%D%/packages/patches/rust-codex-0.98.0-test-shebangs.patch \
|
||||
%D%/packages/patches/rust-codex-0.98.0-test-timeout.patch \
|
||||
@@ -2520,10 +2523,11 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/ultrastar-deluxe-no-freesans.patch \
|
||||
%D%/packages/patches/unity-test-set-subdir-correctly.patch \
|
||||
%D%/packages/patches/unity-test-support-int64.patch \
|
||||
%D%/packages/patches/ungoogled-chromium-custom-compiler.patch \
|
||||
%D%/packages/patches/ungoogled-chromium-empty-parsed-rustc-args.patch \
|
||||
%D%/packages/patches/ungoogled-chromium-extension-search-path.patch \
|
||||
%D%/packages/patches/ungoogled-chromium-RUNPATH.patch \
|
||||
%D%/packages/patches/ungoogled-chromium-system-nspr.patch \
|
||||
%D%/packages/patches/ungoogled-chromium-unbundle-icu-target.patch \
|
||||
%D%/packages/patches/unknown-horizons-python-3.8-distro.patch \
|
||||
%D%/packages/patches/unknown-horizons-python-3.9.patch \
|
||||
%D%/packages/patches/unknown-horizons-python-3.10.patch \
|
||||
@@ -2624,6 +2628,17 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/yggdrasil-extra-config.patch \
|
||||
%D%/packages/patches/ypsilon-Use-GNU-toolchain-as-default.patch \
|
||||
%D%/packages/patches/zabbix-agent2-test-timezone-fix.patch \
|
||||
%D%/packages/patches/zed-0.225.10-add-message-notification-action.patch \
|
||||
%D%/packages/patches/zed-0.225.10-add-guix-container-support.patch \
|
||||
%D%/packages/patches/zed-0.225.10-collapse-multiline-git-deps.patch \
|
||||
%D%/packages/patches/zed-0.225.10-exclude-libwebrtc-from-audio.patch \
|
||||
%D%/packages/patches/zed-0.225.10-disable-dlopen.patch \
|
||||
%D%/packages/patches/zed-0.225.10-fix-sqlite-memory-mode.patch \
|
||||
%D%/packages/patches/zed-0.225.10-fix-test-db-isolation.patch \
|
||||
%D%/packages/patches/zed-0.225.10-fix-workspace-race.patch \
|
||||
%D%/packages/patches/zed-0.225.10-keep-regular-file-workspaces.patch \
|
||||
%D%/packages/patches/zed-0.225.10-remove-patch-crates-io.patch \
|
||||
%D%/packages/patches/zed-0.225.10-use-mock-livekit-on-linux.patch \
|
||||
%D%/packages/patches/zig-0.9-build-respect-PKG_CONFIG-env-var.patch \
|
||||
%D%/packages/patches/zig-0.9-fix-runpath.patch \
|
||||
%D%/packages/patches/zig-0.9-riscv-support.patch \
|
||||
|
||||
@@ -62,6 +62,7 @@
|
||||
;;; Copyright © 2026 Luis Guilherme Coelho <lgcoelho@disroot.org>
|
||||
;;; Copyright © 2026 Noé Lopez <noelopez@free.fr>
|
||||
;;; Copyright © 2026 Carlos Durán Domínguez <wurt@wurt.eu>
|
||||
;;; Copyright © 2026 Daniel Martins <email@danielfm.me>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -3703,6 +3704,44 @@ compensation, (de)interleaving, and byte-swapping
|
||||
;; original developer.
|
||||
(license license:expat)))
|
||||
|
||||
(define-public rtcqs
|
||||
(package
|
||||
(name "rtcqs")
|
||||
(version "0.6.7")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://codeberg.org/rtcqs/rtcqs")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1kc3niyaq4m8di68832pgfb1b0m54q5gm68dwlzwwilgxi61ifzc"))))
|
||||
(build-system pyproject-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f ;no test suite
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'remove-gui
|
||||
(lambda _
|
||||
(substitute* "pyproject.toml"
|
||||
(("\"FreeSimpleGUI\",?")
|
||||
"")
|
||||
(("rtcqs_gui = \"rtcqs\\.rtcqs_gui:main\"")
|
||||
""))
|
||||
(delete-file "src/rtcqs/rtcqs_gui.py")
|
||||
(delete-file "src/rtcqs/rtcqs_qt_gui.py"))))))
|
||||
(native-inputs (list python-setuptools))
|
||||
(home-page "https://codeberg.org/rtcqs/rtcqs")
|
||||
(synopsis "Linux audio real-time performance analyzer")
|
||||
(description
|
||||
"rtcqs analyzes a Linux system to detect possible bottlenecks that could
|
||||
have a negative impact on real-time audio performance. It checks kernel
|
||||
configuration, IRQ priorities, CPU governor, swappiness, and other settings
|
||||
relevant to low-latency audio work.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public rtosc
|
||||
(package
|
||||
(name "rtosc")
|
||||
|
||||
@@ -95,8 +95,8 @@ supported content to the Kodi media center.")
|
||||
;; Arbitrary commit of branch master,
|
||||
;; Update when updating uBlockOrigin.
|
||||
(let* ((name "ublock-main-assets")
|
||||
(commit "011eef4a5b36a7ebf4adedc486d96b77cfa25c54")
|
||||
(revision "5")
|
||||
(commit "004af606e6a0efc22bc65ab1016b553441cacb71")
|
||||
(revision "6")
|
||||
(version (git-version "0" revision commit)))
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -105,14 +105,14 @@ supported content to the Kodi media center.")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0ng8a88zdvrxg30fz83gswjy27b3hfx9q11n2i715id7az7kqf9x")))))
|
||||
(base32 "1bfd2d53flrkgvjcr1kj9nbxj4y9a4pcr7m3dycccdhd21x6k0ln")))))
|
||||
|
||||
(define ublock-prod-assets
|
||||
;; Arbitrary commit of branch gh-pages,
|
||||
;; Update when updating uBlockOrigin.
|
||||
(let* ((name "ublock-prod-assets")
|
||||
(commit "6844322800de647da0c4fe06dd6a0b212a3942e4")
|
||||
(revision "5")
|
||||
(commit "6c15e4ef91888c610caf73829dc78ae9549ed24a")
|
||||
(revision "6")
|
||||
(version (git-version "0" revision commit)))
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -121,12 +121,12 @@ supported content to the Kodi media center.")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "13vxq4z1wxivz5xklncxd2sj5aqkyhq919vzbbfp0fgh0imhikib")))))
|
||||
(base32 "0n2h6drqh44b1zgl729bfr70n08mkm536a2vqgivw7dm5dmi8zd3")))))
|
||||
|
||||
(define ublock-origin
|
||||
(package
|
||||
(name "ublock-origin")
|
||||
(version "1.66.2")
|
||||
(version "1.70.0")
|
||||
(home-page "https://github.com/gorhill/uBlock")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
@@ -136,7 +136,7 @@ supported content to the Kodi media center.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"16ph031hb8bf4rxyxvm6jr0bxmy0snza11jfrbjgfb390gax9r63"))))
|
||||
"0j1m80nz86yc69c42hv5di5zza0vkycqmjaydb9jgx0abcvi19x5"))))
|
||||
(build-system gnu-build-system)
|
||||
(outputs '("xpi" "firefox" "chromium"))
|
||||
(properties '((addon-id . "uBlock0@raymondhill.net")))
|
||||
|
||||
@@ -345,8 +345,8 @@ programs and other files depend.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public gn
|
||||
(let ((commit "ee5b7e32b961a9da1933e9f46a018ba6cac8ef60")
|
||||
(revision "2277")) ;as returned by `git describe`, used below
|
||||
(let ((commit "6e8dcdebbadf4f8aa75e6a4b6e0bdf89dce1513a")
|
||||
(revision "2354")) ;as returned by `git describe`, used below
|
||||
(package
|
||||
(name "gn")
|
||||
(version (git-version "0.0" revision commit))
|
||||
@@ -356,7 +356,7 @@ programs and other files depend.")
|
||||
(uri (git-reference (url home-page) (commit commit)))
|
||||
(sha256
|
||||
(base32
|
||||
"19kkvwxl66vlzlfppbq03fmi59i5g8a1yc71fsfgwqqmx4wywd6w"))
|
||||
"0yz38czmbc72q1hkiv3cwxqh2i8ji2vkkvvk5ws2cjplmn2vj0x9"))
|
||||
(file-name (git-file-name name version))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
@@ -366,7 +366,8 @@ programs and other files depend.")
|
||||
(lambda _
|
||||
(setenv "CC" "gcc")
|
||||
(setenv "CXX" "g++")
|
||||
(setenv "CXXFLAGS" "-g -O2 -Wno-error=redundant-move")
|
||||
(setenv "CXXFLAGS"
|
||||
"-g -O2 -Wno-error=redundant-move -Wno-error=comment")
|
||||
(setenv "AR" "ar")))
|
||||
(replace 'configure
|
||||
(lambda _
|
||||
|
||||
@@ -79,11 +79,13 @@
|
||||
'("base/third_party/cityhash" ;Expat
|
||||
"base/third_party/double_conversion" ;BSD-3
|
||||
"base/third_party/icu" ;Unicode, X11-style
|
||||
"base/third_party/nspr" ;MPL-2.0
|
||||
"base/third_party/superfasthash" ;BSD-3
|
||||
"base/third_party/symbolize" ;BSD-3
|
||||
"base/third_party/xdg_user_dirs" ;Expat
|
||||
"buildtools/third_party/libc++" ;BSD
|
||||
"buildtools/third_party/libc++abi" ;BSD
|
||||
"net/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+
|
||||
"net/third_party/nss" ;MPL-2.0
|
||||
"net/third_party/quiche" ;BSD-3
|
||||
"net/third_party/uri_template" ;ASL2.0
|
||||
"third_party/abseil-cpp" ;ASL2.0
|
||||
@@ -104,8 +106,11 @@
|
||||
"third_party/catapult" ;BSD-3
|
||||
"third_party/catapult/common/py_vulcanize/third_party/rcssmin" ;ASL2.0
|
||||
"third_party/catapult/common/py_vulcanize/third_party/rjsmin" ;ASL2.0
|
||||
"third_party/catapult/third_party/beautifulsoup4-4.9.3" ;Expat
|
||||
"third_party/catapult/third_party/html5lib-1.1" ;Expat
|
||||
"third_party/catapult/third_party/polymer" ;BSD-3
|
||||
"third_party/catapult/third_party/six" ;Expat
|
||||
"third_party/catapult/third_party/typ" ;ASL2.0
|
||||
;; XXX: This is a minified version of <https://d3js.org/>.
|
||||
"third_party/catapult/tracing/third_party/d3" ;BSD-3
|
||||
"third_party/catapult/tracing/third_party/gl-matrix" ;Expat
|
||||
@@ -120,19 +125,12 @@
|
||||
"third_party/cld_3" ;ASL2.0
|
||||
"third_party/closure_compiler" ;ASL2.0
|
||||
"third_party/compiler-rt" ;ASL2.0
|
||||
"third_party/compiler-rt/src/lib" ;ASL2.0
|
||||
"third_party/compiler-rt/src/lib/builtins" ;ASL2.0
|
||||
"third_party/content_analysis_sdk" ;BSD-3
|
||||
"third_party/cpuinfo" ;BSD-2
|
||||
"third_party/crabbyavif" ;ASL2.0
|
||||
"third_party/crabbyavif/src/sys/dav1d-sys" ;ASL2.0
|
||||
"third_party/crabbyavif/src/sys/aom-sys" ;ASL2.0
|
||||
"third_party/crabbyavif/src/sys/libgav1-sys" ;ASL2.0
|
||||
"third_party/crabbyavif/src/sys/libyuv-sys" ;ASL2.0
|
||||
"third_party/crabbyavif/src/sys/ndk-sys" ;ASL2.0
|
||||
"third_party/crashpad" ;ASL2.0
|
||||
"third_party/crashpad/crashpad/third_party/lss" ;ASL2.0
|
||||
"third_party/crashpad/crashpad/third_party/zlib/zlib_crashpad.h" ;Zlib
|
||||
"third_party/crashpad/crashpad/third_party/zlib" ;Zlib
|
||||
"third_party/crc32c" ;BSD-3
|
||||
"third_party/cros_system_api" ;BSD-3
|
||||
"third_party/dav1d" ;BSD-2
|
||||
@@ -140,19 +138,25 @@
|
||||
;; TODO: can likely be unbundled when Vulkan is updated.
|
||||
"third_party/dawn/third_party/khronos" ;ASL2.0
|
||||
"third_party/dawn/third_party/gn/webgpu-cts" ;BSD-3
|
||||
"third_party/dawn/third_party/renderdoc" ;Expat
|
||||
"third_party/dawn/third_party/webgpu-headers" ;BSD-3
|
||||
"third_party/depot_tools" ;BSD-3
|
||||
"third_party/devscripts" ;GPL2.0
|
||||
"third_party/devtools-frontend" ;BSD-3
|
||||
"third_party/devtools-frontend/src/front_end"
|
||||
"third_party/devtools-frontend/src/front_end/third_party"
|
||||
"third_party/devtools-frontend/src/front_end/third_party/acorn" ;Expat
|
||||
"third_party/devtools-frontend/src/front_end/third_party\
|
||||
/additional_readme_paths.json" ;no explicit license; trivial
|
||||
"third_party/devtools-frontend/src/front_end/third_party/json5" ;Expat
|
||||
"third_party/devtools-frontend/src/front_end/third_party/axe-core" ;MPL2.0
|
||||
"third_party/devtools-frontend/src/front_end/third_party/chromium" ;BSD-3
|
||||
"third_party/devtools-frontend/src/front_end/third_party/codemirror" ;Expat
|
||||
"third_party/devtools-frontend/src/front_end/third_party/csp_evaluator" ;BSD-3
|
||||
"third_party/devtools-frontend/src/front_end/third_party/diff" ;ASL2.0
|
||||
"third_party/devtools-frontend/src/front_end/third_party/i18n" ;ASL2.0
|
||||
"third_party/devtools-frontend/src/front_end/third_party/intl-messageformat" ;BSD-3
|
||||
"third_party/devtools-frontend/src/front_end/third_party/json5" ;Expat
|
||||
"third_party/devtools-frontend/src/front_end/third_party/legacy-javascript" ;ASL-2.0
|
||||
"third_party/devtools-frontend/src/front_end/third_party/lighthouse" ;ASL2.0
|
||||
"third_party/devtools-frontend/src/front_end/third_party/lit" ;BSD-3
|
||||
"third_party/devtools-frontend/src/front_end/third_party/marked" ;Expat, BSD-3
|
||||
@@ -164,10 +168,12 @@
|
||||
"third_party/devtools-frontend/src/front_end/third_party/puppeteer/third_party/parsel" ; Expat
|
||||
"third_party/devtools-frontend/src/front_end/third_party/puppeteer/third_party/rxjs" ; ASL2.0
|
||||
"third_party/devtools-frontend/src/front_end/third_party/puppeteer-replay" ;ASL2.0
|
||||
"third_party/devtools-frontend/src/front_end/third_party/source-map-scopes-codec" ;BSD-3
|
||||
"third_party/devtools-frontend/src/front_end/third_party\
|
||||
/vscode.web-custom-data" ;Expat
|
||||
"third_party/devtools-frontend/src/front_end/third_party/third-party-web" ;Expat
|
||||
"third_party/devtools-frontend/src/front_end/third_party/wasmparser" ;ASL2.0
|
||||
"third_party/devtools-frontend/src/front_end/third_party/web-vitals" ;Expat
|
||||
"third_party/devtools-frontend/src/third_party/i18n" ;ASL2.0
|
||||
"third_party/devtools-frontend/src/third_party/pyjson5" ;ASL2.0
|
||||
|
||||
@@ -179,6 +185,7 @@
|
||||
"third_party/farmhash" ;Expat
|
||||
"third_party/fast_float" ;ASL2.0, Boost1.0, Expat
|
||||
"third_party/fdlibm" ;non-copyleft
|
||||
"third_party/federated_compute/chromium/fcp/confidentialcompute" ;ASL2.0
|
||||
"third_party/federated_compute/src/fcp/base" ;ASL2.0
|
||||
"third_party/federated_compute/src/fcp/confidentialcompute" ;ASL2.0
|
||||
"third_party/federated_compute/src/fcp/protos/confidentialcompute" ;ASL2.0
|
||||
@@ -187,7 +194,9 @@
|
||||
"third_party/fft2d" ;non-copyleft
|
||||
"third_party/flatbuffers" ;ASL2.0
|
||||
"third_party/fp16" ;Expat
|
||||
"third_party/freetype" ;GPL2.0
|
||||
"third_party/fusejs" ;ASL2.0
|
||||
"third_party/fxdiv" ;Expat
|
||||
"third_party/gemmlowp" ;ASL2.0
|
||||
"third_party/google_input_tools" ;ASL2.0
|
||||
"third_party/google_input_tools/third_party/closure_library" ;ASL2.0
|
||||
@@ -196,6 +205,9 @@
|
||||
"third_party/harfbuzz-ng" ;Expat
|
||||
"third_party/highway" ;ASL2.0
|
||||
"third_party/hunspell" ;MPL1.1/GPL2+/LGPL2.1+
|
||||
"third_party/hyphenation-patterns" ;Expat
|
||||
;; FIXME: Our icu does not have some headers such as udatamem.h.
|
||||
"third_party/icu" ;Unicode3.0
|
||||
"third_party/ink" ;ASL2.0
|
||||
"third_party/ink_stroke_modeler" ;ASL2.0
|
||||
"third_party/inspector_protocol" ;BSD-3
|
||||
@@ -208,12 +220,14 @@
|
||||
"third_party/libaddressinput" ;ASL2.0
|
||||
"third_party/libaom" ;BSD-2 or "Alliance for Open Media Patent License 1.0"
|
||||
"third_party/libaom/source/libaom/third_party/fastfeat" ;BSD-3
|
||||
"third_party/libaom/source/libaom/third_party/SVT-AV1" ;BSD-3
|
||||
"third_party/libaom/source/libaom/third_party/vector" ;Expat
|
||||
"third_party/libaom/source/libaom/third_party/x86inc" ;ISC
|
||||
"third_party/libc++" ;Expat
|
||||
"third_party/libdrm" ; Expat
|
||||
"third_party/libgav1" ;ASL2.0
|
||||
"third_party/libjingle_xmpp" ;BSD-3
|
||||
"third_party/libpfm4" ;BSD
|
||||
"third_party/libpng" ;PNG2.0
|
||||
"third_party/libphonenumber" ;ASL2.0
|
||||
"third_party/libsecret" ;LGPL2.1+
|
||||
"third_party/libsrtp" ;BSD-3
|
||||
@@ -227,11 +241,15 @@
|
||||
"third_party/libvpx/source/libvpx/third_party/x86inc" ;Expat
|
||||
|
||||
"third_party/libwebm" ;BSD-3
|
||||
"third_party/libx11" ;BSD
|
||||
"third_party/libxcb-keysyms" ;BSD
|
||||
"third_party/libxml/chromium" ;BSD-3
|
||||
"third_party/libyuv" ;BSD-3
|
||||
"third_party/libzip" ;BSD-3
|
||||
"third_party/lit" ;BSD-3
|
||||
"third_party/lit/v3_0" ;BSD-3
|
||||
"third_party/llvm-libc" ;ASL2.0
|
||||
"third_party/llvm-libc/src/shared" ;ASL2.0
|
||||
"third_party/lottie" ;Expat
|
||||
"third_party/lss" ;BSD-3
|
||||
"third_party/lzma_sdk" ;public domain
|
||||
@@ -244,6 +262,7 @@
|
||||
"third_party/modp_b64" ;BSD-3
|
||||
"third_party/nasm" ;BSD-2
|
||||
"third_party/nearby" ;ASL2.0
|
||||
"third_party/neon_2_sse" ;BSD-2
|
||||
"third_party/node" ;Expat
|
||||
"third_party/oak/chromium/proto" ;ASL2.0
|
||||
"third_party/oak/chromium/proto/attestation" ;ASL2.0
|
||||
@@ -251,14 +270,20 @@
|
||||
"third_party/one_euro_filter" ;BSD-3
|
||||
"third_party/openscreen" ;BSD-3
|
||||
"third_party/openscreen/src/third_party/tinycbor" ;Expat
|
||||
"third_party/opus" ;BSD-3
|
||||
"third_party/ots" ;BSD-3
|
||||
"third_party/pdfium" ;BSD-3
|
||||
"third_party/pdfium/third_party/agg23" ;Expat
|
||||
"third_party/pdfium/third_party/bigint" ;Public domain, BSD-3
|
||||
"third_party/pdfium/third_party/lcms" ;Expat
|
||||
"third_party/pdfium/third_party/libopenjpeg" ;BDS-2
|
||||
"third_party/pdfium/third_party/libtiff" ;non-copyleft
|
||||
"third_party/pdfium/third_party/freetype/include/pstables.h" ;FreeType
|
||||
"third_party/perfetto" ;ASL2.0
|
||||
"third_party/perfetto/protos/third_party/chromium" ;BSD-3
|
||||
"third_party/perfetto/protos/third_party/pprof" ;ASL2.0
|
||||
"third_party/perfetto/protos/third_party/primes" ;ASL2.0
|
||||
"third_party/perfetto/protos/third_party/simpleperf" ;ASL2.0
|
||||
"third_party/pffft" ;the "FFTPACK" license
|
||||
"third_party/ply" ;BSD-3
|
||||
"third_party/polymer" ;BSD-3
|
||||
@@ -268,6 +293,7 @@
|
||||
"third_party/protobuf/third_party/utf8_range" ; Expat
|
||||
"third_party/pthreadpool" ;BSD-2
|
||||
"third_party/puffin" ;Non-copyleft
|
||||
"third_party/pyyaml" ;Expat
|
||||
"third_party/pyjson5" ;ASL2.0
|
||||
"third_party/rapidhash" ;BSD-2
|
||||
"third_party/readability" ;ASL2.0
|
||||
@@ -279,11 +305,14 @@
|
||||
"third_party/search_engines_data" ;BSD-3
|
||||
"third_party/securemessage" ;ASL2.0
|
||||
"third_party/selenium-atoms" ;ASL2.0
|
||||
"third_party/sentencepiece" ;ASL2.0
|
||||
"third_party/sentencepiece/src/third_party/darts_clone" ;BSD-3
|
||||
"third_party/shell-encryption" ;ASL2.0
|
||||
"third_party/simdutf" ;Non-copyleft
|
||||
"third_party/simplejson" ; Non-copyleft
|
||||
"third_party/six" ;Expat
|
||||
"third_party/skia" ;BSD-3
|
||||
"third_party/skia/third_party/vulkanmemoryallocator" ;BSD-3, Expat
|
||||
"third_party/skia/include/third_party/vulkan" ;BSD-3
|
||||
"third_party/smhasher" ;Expat, public domain
|
||||
|
||||
;; FIXME: the snappy "replacement" shim (see replace_gn_files.py below) does
|
||||
@@ -338,7 +367,6 @@
|
||||
"third_party/webrtc/modules/third_party/fft" ;Non-copyleft
|
||||
"third_party/webrtc/modules/third_party/g711" ;Public domain
|
||||
"third_party/webrtc/modules/third_party/g722" ;Public domain
|
||||
"third_party/webrtc/rtc_base/third_party/sigslot" ;Public domain
|
||||
"third_party/widevine/cdm/widevine_cdm_common.h" ;BSD-3
|
||||
"third_party/woff2" ;ASL2.0
|
||||
"third_party/wuffs" ;ASL2.0
|
||||
@@ -372,7 +400,7 @@
|
||||
;; run the Blink performance tests, just remove everything to save ~70MiB.
|
||||
'("third_party/blink/perf_tests"))
|
||||
|
||||
(define %chromium-version "141.0.7390.65")
|
||||
(define %chromium-version "147.0.7727.55")
|
||||
(define %ungoogled-revision (string-append %chromium-version "-1"))
|
||||
(define %debian-revision (string-append "debian/" %ungoogled-revision))
|
||||
|
||||
@@ -384,7 +412,7 @@
|
||||
(file-name (git-file-name "ungoogled-chromium" %ungoogled-revision))
|
||||
(sha256
|
||||
(base32
|
||||
"1hk4rww2gccly1qv0xnswd77haj02rlza82403dxdjm8fkdfndy6"))))
|
||||
"0l6v4wf16067igawjlh90f3d287mkw0cq4j5lvrxxy17y1skynzc"))))
|
||||
|
||||
(define %debian-origin
|
||||
(origin
|
||||
@@ -397,7 +425,7 @@
|
||||
((_ version) version))))
|
||||
(sha256
|
||||
(base32
|
||||
"06s3kvwb3490xb28n6r3q5n1c0ylsvchiw6s4h1rrp8jqzwjbmc6"))))
|
||||
"0gqarll08i7rcs1amapciv263xvzglc8p44ikavq3xd12yyvcd98"))))
|
||||
|
||||
(define (origin-file origin file)
|
||||
(computed-file
|
||||
@@ -410,26 +438,38 @@
|
||||
|
||||
(define %debian-patches
|
||||
(map debian-patch
|
||||
'("bookworm/clang19.patch"
|
||||
"bookworm/foreach.patch"
|
||||
'("bookworm/foreach.patch"
|
||||
"debianization/safe-libcxx.patch"
|
||||
"disable/enterprise-tests.patch"
|
||||
"disable/node-version-ck.patch"
|
||||
"disable/rustc-allow-features.patch"
|
||||
"fixes/bytemuck.patch"
|
||||
"fixes/gentoo-stylesheet.patch"
|
||||
"fixes/libcpp-headers.patch"
|
||||
"fixes/libpng-testonly.patch"
|
||||
"fixes/rust-clanglib.patch"
|
||||
"llvm-19/clang19.patch"
|
||||
"llvm-19/clone-traits.patch"
|
||||
"llvm-19/keyfactory.patch"
|
||||
"llvm-19/value-or.patch"
|
||||
"llvm-22/ignore-for-ubsan.patch"
|
||||
"system/openjpeg.patch"
|
||||
;; Remove after rust is past
|
||||
;; <https://github.com/rust-lang/rust/pull/141061>.
|
||||
"trixie/rust-no-alloc-shim.patch")))
|
||||
"trixie/cookie-string-view.patch"
|
||||
"trixie/nodejs-main.patch")))
|
||||
|
||||
(define %guix-patches
|
||||
(list (local-file
|
||||
(assume-valid-file-name
|
||||
(search-patch
|
||||
"ungoogled-chromium-extension-search-path.patch")))
|
||||
"ungoogled-chromium-custom-compiler.patch")))
|
||||
(local-file
|
||||
(assume-valid-file-name
|
||||
(search-patch
|
||||
"ungoogled-chromium-unbundle-icu-target.patch")))
|
||||
"ungoogled-chromium-empty-parsed-rustc-args.patch")))
|
||||
(local-file
|
||||
(assume-valid-file-name
|
||||
(search-patch
|
||||
"ungoogled-chromium-extension-search-path.patch")))
|
||||
(local-file
|
||||
(assume-valid-file-name
|
||||
(search-patch
|
||||
@@ -500,9 +540,8 @@
|
||||
"#if 0"))
|
||||
(invoke "python" "build/linux/unbundle/replace_gn_files.py"
|
||||
"--system-libraries" "flac" "fontconfig" "freetype"
|
||||
"harfbuzz-ng" "icu" "libjpeg"
|
||||
"libpng" "libwebp" "libxml" "libxslt" "openh264" "opus"
|
||||
"zlib")))))
|
||||
"harfbuzz-ng" "libjpeg" "libpng" "libwebp" "libxml"
|
||||
"libxslt" "openh264" "opus" "zlib")))))
|
||||
|
||||
(define opus+custom
|
||||
(package/inherit opus
|
||||
@@ -531,7 +570,7 @@
|
||||
%chromium-version "-lite.tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"09iwglswnr6d45zz3zsjw7jpm1xlwwkxlz9h5nlhqxyd933a04fq"))
|
||||
"1salvlw5sykx3zmsbp7cgmf7y8yy6jlgb4b4zswzsbjrprk4jnap"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet (force ungoogled-chromium-snippet))))
|
||||
(build-system gnu-build-system)
|
||||
@@ -548,6 +587,7 @@
|
||||
;; directory for an exhaustive list of supported flags.
|
||||
;; (Note: The 'configure' phase will do that for you.)
|
||||
#~(list "is_debug=false"
|
||||
"is_component_build=false"
|
||||
;; Use the "official" release optimizations, as opposed to
|
||||
;; a developer build.
|
||||
"is_official_build=true"
|
||||
@@ -555,6 +595,7 @@
|
||||
"use_clang_modules=false"
|
||||
"use_custom_libcxx=false" ; support for this is deprecated and to be removed.
|
||||
"optimize_webui=false"
|
||||
"webnn_use_tflite=false"
|
||||
"safe_browsing_use_unrar=false"
|
||||
"chrome_pgo_phase=0"
|
||||
"use_sysroot=false"
|
||||
@@ -572,12 +613,10 @@
|
||||
"enable_service_discovery=false"
|
||||
"enable_vr=false"
|
||||
"enable_enterprise_companion=false"
|
||||
"enable_glic=false"
|
||||
"enable_iterator_debugging=false"
|
||||
"enable_hangout_services_extension=false"
|
||||
"enable_widevine=false"
|
||||
;; Disable type-checking for the Web UI to avoid a Java dependency.
|
||||
"enable_js_type_check=false"
|
||||
"fatal_linker_warnings=false"
|
||||
;; Disable code using TensorFlow until it has been scrutinized
|
||||
;; by the ungoogled project.
|
||||
"build_with_tflite_lib=false"
|
||||
@@ -589,6 +628,11 @@
|
||||
"angle_has_histograms=false"
|
||||
"angle_build_tests=false"
|
||||
"build_angle_perftests=false"
|
||||
"enable_perfetto_unittests=false"
|
||||
"skia_enable_skshapper_tests=false"
|
||||
"tint_build_unittests=false"
|
||||
"enable_nocompile_tests=false"
|
||||
"enable_screen_ai_browsertests=false"
|
||||
|
||||
"clang_warning_suppression_file=\"\""
|
||||
|
||||
@@ -597,6 +641,8 @@
|
||||
"is_cfi=false"
|
||||
|
||||
"symbol_level=0"
|
||||
"blink_symbol_level=0"
|
||||
"v8_symbol_level=0"
|
||||
"v8_enable_backtrace=false"
|
||||
|
||||
;; Define a custom toolchain that simply looks up CC, AR and
|
||||
@@ -628,26 +674,10 @@
|
||||
;; invokation and fails if it's just the version number.
|
||||
" (f6e511eec 2024-10-15) (built from a source tarball)\"")
|
||||
|
||||
;; Chromium's build/rust/std/BUILD.gn has a hardcoded
|
||||
;; list of stdlib rlibs (stdlib_files) that GN uses to
|
||||
;; declare build outputs. GN requires static output
|
||||
;; declarations, so the list must exactly match what
|
||||
;; rlibs exist in the Rust sysroot. Chromium's list
|
||||
;; includes unicode_width because their bundled
|
||||
;; toolchain (Rust 1.89) ships it as a dependency of
|
||||
;; getopts 0.2.23. Our Rust 1.93 has getopts 0.2.24
|
||||
;; which dropped that dependency, so unicode_width is
|
||||
;; not in our sysroot. This GN arg removes it from
|
||||
;; the list. (Chromium's own use of unicode_width via
|
||||
;; codespan-reporting is a separate vendored copy under
|
||||
;; third_party/rust/chromium_crates_io/ and is
|
||||
;; unaffected.)
|
||||
"removed_rust_stdlib_libs=[\"unicode_width\"]"
|
||||
|
||||
;; Prefer system libraries.
|
||||
"use_system_freetype=true"
|
||||
"use_system_harfbuzz=true"
|
||||
"use_system_icu=true"
|
||||
"use_system_icu=false"
|
||||
"use_system_lcms2=true"
|
||||
"use_system_libffi=true"
|
||||
"use_system_libjpeg=true"
|
||||
@@ -713,9 +743,9 @@
|
||||
|
||||
;; Many files try to include ICU headers from "third_party/icu/...".
|
||||
;; Remove the "third_party/" prefix to use system headers instead.
|
||||
(substitute* (find-files "chrome" "\\.cc$")
|
||||
(("third_party/icu/source/(common|i18n)/")
|
||||
""))
|
||||
;(substitute* (find-files "chrome" "\\.cc$")
|
||||
; (("third_party/icu/source/(common|i18n)/")
|
||||
; ""))
|
||||
|
||||
;; XXX: Should be unnecessary when use_system_lcms2=true.
|
||||
(substitute* "third_party/pdfium/core/fxcodec/icc/icc_transform.h"
|
||||
@@ -732,16 +762,19 @@
|
||||
(("include \"third_party/curl")
|
||||
"include \"curl"))
|
||||
|
||||
;; Unknown flags as of clang-19, can be removed when building with
|
||||
;; newer clang.
|
||||
(substitute* "build/config/compiler/BUILD.gn"
|
||||
(("-gsimple-template-names") ""))
|
||||
|
||||
;; Clang libs are not under bindgen root directory.
|
||||
(substitute* "build/rust/rust_bindgen_generator.gni"
|
||||
;; Our clang libs and rustfmt are not under bindgen root directory.
|
||||
(substitute* '("build/rust/rust_bindgen_generator.gni"
|
||||
"build/rust/rust_bindgen.gni")
|
||||
(("(_libclang_path = )rust_bindgen_root" _ libclang)
|
||||
(string-append libclang "clang_base_path"))))))
|
||||
(add-after 'patch-stuff 'add-absolute-references
|
||||
(string-append libclang "clang_base_path"))
|
||||
(("(_rustfmt_path = \")\\$\\{rust_bindgen_root\\}" _ rustfmt)
|
||||
(string-append rustfmt "${rust_sysroot_absolute}"))))))
|
||||
(add-after 'patch-stuff 'include-pthreadpool
|
||||
;; FIXME: Somehow the build system cannot locate this header.
|
||||
(lambda _
|
||||
(copy-file "third_party/pthreadpool/src/include/pthreadpool.h"
|
||||
"pthreadpool.h")))
|
||||
(add-after 'include-pthreadpool 'add-absolute-references
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((cups-config (search-input-file inputs "/bin/cups-config"))
|
||||
(libnssckbi.so (search-input-file inputs
|
||||
@@ -763,13 +796,22 @@
|
||||
(add-after 'add-absolute-references 'adjust-CPLUS_INCLUDE_PATH
|
||||
;; The libcxx include/c++/v1 directory is not exposed via
|
||||
;; CPLUS_INCLUDE_PATH by default, causing errors like
|
||||
;; "fatal error: 'format' file not found".
|
||||
;; "fatal error: 'format' file not found". Also clang is
|
||||
;; unable to find gcc's bits/c++config.h which is machine
|
||||
;; dependent.
|
||||
(lambda* (#:key native-inputs inputs #:allow-other-keys)
|
||||
(setenv "CPLUS_INCLUDE_PATH"
|
||||
(string-append
|
||||
(search-input-directory inputs
|
||||
"/include/c++/v1")
|
||||
":" (getenv "CPLUS_INCLUDE_PATH")))))
|
||||
(let* ((libcxx-v1 (search-input-directory inputs
|
||||
"include/c++/v1"))
|
||||
(target-system #$(nix-system->gnu-triplet
|
||||
(or (%current-target-system)
|
||||
(%current-system))))
|
||||
(target-include (string-append "include/c++/"
|
||||
target-system))
|
||||
(gcc-bits (search-input-directory inputs
|
||||
target-include)))
|
||||
(setenv "CPLUS_INCLUDE_PATH"
|
||||
(string-append libcxx-v1 ":" gcc-bits ":"
|
||||
(getenv "CPLUS_INCLUDE_PATH"))))))
|
||||
(add-before 'configure 'prepare-build-environment
|
||||
(lambda* (#:key native-inputs inputs #:allow-other-keys)
|
||||
(let ((node (search-input-file (or native-inputs inputs)
|
||||
@@ -955,7 +997,7 @@
|
||||
glib
|
||||
gtk+
|
||||
harfbuzz
|
||||
icu4c
|
||||
icu4c-77
|
||||
lcms
|
||||
libcxx
|
||||
libffi
|
||||
|
||||
@@ -714,7 +714,7 @@ Its main purpose is to support the key usage by @code{docker-init}:
|
||||
(define-public podman
|
||||
(package
|
||||
(name "podman")
|
||||
(version "5.8.1")
|
||||
(version "5.8.2")
|
||||
(outputs '("out" "docker"))
|
||||
(properties
|
||||
`((output-synopsis "docker" "docker alias for podman")
|
||||
@@ -727,7 +727,7 @@ Its main purpose is to support the key usage by @code{docker-init}:
|
||||
(url "https://github.com/containers/podman")
|
||||
(commit (string-append "v" version))))
|
||||
(sha256
|
||||
(base32 "1wdsdc0nj4m1v8mn95dhavi87ad0adqmld70da59gvp2abff5f0f"))
|
||||
(base32 "12bmzbfyjsf0mwnam38cw9ib54wj1znh5b7lxzdyll9cvvkhqisr"))
|
||||
(file-name (git-file-name name version))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
|
||||
@@ -42,20 +42,24 @@
|
||||
#:use-module (guix utils)
|
||||
#:use-module (srfi srfi-26))
|
||||
|
||||
(define %coreboot-version "26.03")
|
||||
|
||||
(define %coreboot-origin
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://review.coreboot.org/coreboot")
|
||||
(commit %coreboot-version)))
|
||||
(file-name (git-file-name "coreboot" %coreboot-version))
|
||||
(sha256
|
||||
(base32
|
||||
"0436rr0vibh35phvkxrc939njvrmnfq9xw87y1b0nlllglvq07kk"))))
|
||||
|
||||
(define-public bincfg
|
||||
(package
|
||||
(name "bincfg")
|
||||
(version "25.09")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://review.coreboot.org/coreboot")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1a1n64dwr5fzdnaj45bjci85ap5yra5gwz4x056zn6481xwvbsmv"))))
|
||||
(version %coreboot-version)
|
||||
(source %coreboot-origin)
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
@@ -126,17 +130,8 @@ It also comes with example files generated by bincfg.")
|
||||
(define-public ifdtool
|
||||
(package
|
||||
(name "ifdtool")
|
||||
(version "25.09")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://review.coreboot.org/coreboot")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1a1n64dwr5fzdnaj45bjci85ap5yra5gwz4x056zn6481xwvbsmv"))))
|
||||
(version %coreboot-version)
|
||||
(source %coreboot-origin)
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
@@ -160,16 +155,8 @@ dump Intel Firmware Descriptor data of an image file.")
|
||||
(define-public intelmetool
|
||||
(package
|
||||
(name "intelmetool")
|
||||
(version "25.09")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://review.coreboot.org/coreboot")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1a1n64dwr5fzdnaj45bjci85ap5yra5gwz4x056zn6481xwvbsmv"))))
|
||||
(version %coreboot-version)
|
||||
(source %coreboot-origin)
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
@@ -201,17 +188,8 @@ Management Engine (ME). You need to @code{sudo rmmod mei_me} and
|
||||
(define-public nvramtool
|
||||
(package
|
||||
(name "nvramtool")
|
||||
(version "25.09")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://review.coreboot.org/coreboot")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1a1n64dwr5fzdnaj45bjci85ap5yra5gwz4x056zn6481xwvbsmv"))))
|
||||
(version %coreboot-version)
|
||||
(source %coreboot-origin)
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
|
||||
@@ -31,13 +31,13 @@
|
||||
(define-public dhall
|
||||
(package
|
||||
(name "dhall")
|
||||
(version "1.41.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "dhall" version))
|
||||
(sha256
|
||||
(base32
|
||||
"14m5rrvkid76qnvg0l14xw1mnqclhip3gjrz20g1lp4fd5p056ka"))))
|
||||
(version "1.42.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "dhall" version))
|
||||
(sha256
|
||||
(base32 "0fvvqvh6diqi55dmncfs06rvcw8k0a1hs2gq228yxvsfbzcpv44s"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "dhall")))
|
||||
(inputs (list ghc-aeson
|
||||
@@ -73,8 +73,8 @@
|
||||
ghc-text-manipulate
|
||||
ghc-text-short
|
||||
ghc-th-lift-instances
|
||||
ghc-unix-compat
|
||||
ghc-unordered-containers
|
||||
ghc-uri-encode
|
||||
ghc-vector
|
||||
ghc-cryptohash-sha256
|
||||
ghc-http-types
|
||||
@@ -86,7 +86,6 @@
|
||||
ghc-quickcheck-instances
|
||||
ghc-special-values
|
||||
ghc-spoon
|
||||
ghc-system-filepath
|
||||
ghc-tasty
|
||||
ghc-tasty-expected-failure
|
||||
ghc-tasty-hunit
|
||||
@@ -97,9 +96,8 @@
|
||||
ghc-mockery
|
||||
ghc-doctest))
|
||||
(arguments
|
||||
`(#:tests? #f ; Tries to access httpbin.org
|
||||
#:cabal-revision ("4"
|
||||
"0innb3cn98ynb8bd83jdyrm64ij7wcvajg5qcwzdwbyzpr62anfx")))
|
||||
`(#:cabal-revision ("2"
|
||||
"1h9kxpn3kzwmxj07mqc0cxjj2ak3dyxnifb78z5vn34xn747j5bk")))
|
||||
(home-page "http://hackage.haskell.org/package/dhall")
|
||||
(synopsis "Configuration language guaranteed to terminate")
|
||||
(description
|
||||
|
||||
@@ -323,37 +323,41 @@ based on Qt.")
|
||||
(define-public ghc-hledger
|
||||
(package
|
||||
(name "ghc-hledger")
|
||||
(version "1.27.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hledger" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0qdg87m7ys2ykqqq32p7h7aw827w4f5bcqx4dspxxq6zqlvzddqb"))))
|
||||
(version "1.43.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hledger" version))
|
||||
(sha256
|
||||
(base32 "043gw3amc29fbjxlzyc4m97bw5i5462352lmk61adlxcd12l47i1"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "hledger")))
|
||||
(inputs (list ghc-decimal
|
||||
ghc-diff
|
||||
ghc-aeson
|
||||
ghc-ansi-terminal
|
||||
ghc-breakpoint
|
||||
ghc-cmdargs
|
||||
ghc-data-default
|
||||
ghc-extra
|
||||
ghc-githash
|
||||
ghc-hashable
|
||||
ghc-hledger-lib
|
||||
ghc-http-client
|
||||
ghc-http-types
|
||||
ghc-lucid
|
||||
ghc-math-functions
|
||||
ghc-megaparsec
|
||||
ghc-microlens
|
||||
ghc-modern-uri
|
||||
ghc-regex-tdfa
|
||||
ghc-req
|
||||
ghc-safe
|
||||
ghc-shakespeare
|
||||
ghc-split
|
||||
ghc-tabular
|
||||
ghc-tasty
|
||||
ghc-temporary
|
||||
ghc-text-ansi
|
||||
ghc-timeit
|
||||
ghc-unordered-containers
|
||||
ghc-utf8-string
|
||||
@@ -384,8 +388,8 @@ Accounting.")
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'install 'install-doc
|
||||
(lambda _
|
||||
(install-file "hledger.info" (string-append #$output "/share/info"))
|
||||
(install-file "hledger.1" (string-append #$output "/man/man1"))))
|
||||
(install-file "embeddedfiles/hledger.info" (string-append #$output "/share/info"))
|
||||
(install-file "embeddedfiles/hledger.1" (string-append #$output "/man/man1"))))
|
||||
(add-after 'register 'remove-libraries
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(delete-file-recursively (string-append (assoc-ref outputs "out") "/lib")))))))))
|
||||
@@ -2308,13 +2312,13 @@ textual ledgers to Beancount files.")
|
||||
(define-public hledger-web
|
||||
(package
|
||||
(name "hledger-web")
|
||||
(version "1.27.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hledger-web" version))
|
||||
(sha256
|
||||
(base32
|
||||
"151dxci7dld8626dzw823sr3d9iaac92wfzbfcbdz4jh9f7n07wa"))))
|
||||
(version "1.43.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hledger-web" version))
|
||||
(sha256
|
||||
(base32 "0d4sv9k3m7s0764lbq2l8w9p2p47cby177l0avl5w3fa9y8d0gyd"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "hledger-web")))
|
||||
(inputs (list ghc-decimal
|
||||
@@ -2322,7 +2326,6 @@ textual ledgers to Beancount files.")
|
||||
ghc-base64
|
||||
ghc-blaze-html
|
||||
ghc-blaze-markup
|
||||
ghc-breakpoint
|
||||
ghc-case-insensitive
|
||||
ghc-clientsession
|
||||
ghc-cmdargs
|
||||
@@ -2330,6 +2333,8 @@ textual ledgers to Beancount files.")
|
||||
ghc-conduit-extra
|
||||
ghc-data-default
|
||||
ghc-extra
|
||||
ghc-file-embed
|
||||
ghc-githash
|
||||
ghc-hjsmin
|
||||
ghc-hledger
|
||||
ghc-hledger-lib
|
||||
@@ -2339,6 +2344,7 @@ textual ledgers to Beancount files.")
|
||||
ghc-http-types
|
||||
ghc-megaparsec
|
||||
ghc-network
|
||||
ghc-safe
|
||||
ghc-shakespeare
|
||||
ghc-unix-compat
|
||||
ghc-unordered-containers
|
||||
|
||||
@@ -5521,7 +5521,7 @@ falling, themeable graphics and sounds, and replays.")
|
||||
(name "wesnoth")
|
||||
;; Even-numbered minor versions indicate stable versions:
|
||||
;; https://wiki.wesnoth.org/ReleasingWesnoth#Version_numbering
|
||||
(version "1.18.6")
|
||||
(version "1.18.7")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -5530,7 +5530,7 @@ falling, themeable graphics and sounds, and replays.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0cdlczxczqgzdaqwydb9gfgi7d9jc39li72p2rb5nk1rlgfff79s"))))
|
||||
"0hdrp4xm9d8kj8id2g5q0wwdwykx4a0f1cs8a7fghmv0czryfv7f"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list #:tests? #f ;no test target
|
||||
|
||||
@@ -19,10 +19,12 @@
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages gkrellm)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
@@ -31,32 +33,27 @@
|
||||
(define-public gkrellm
|
||||
(package
|
||||
(name "gkrellm")
|
||||
(version "2.3.11")
|
||||
(version "2.5.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://gkrellm.srcbox.net/releases/gkrellm-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32 "01lccz4fga40isv09j8rjgr0qy10rff9vj042n6gi6gdv4z69q0y"))))
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://gkrellm.srcbox.net/releases/gkrellm-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32 "0qvy2xmwmfy5f0g09yn9lr262shnx82ba04r5il2wj4qscg3r7h8"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("gettext" ,gettext-minimal)
|
||||
("gtk+" ,gtk+-2)
|
||||
("libice" ,libice)
|
||||
("libsm" ,libsm)))
|
||||
(native-inputs
|
||||
(list pkg-config))
|
||||
(inputs (list gtk+-2 libsm))
|
||||
(native-inputs (list gettext-minimal pkg-config))
|
||||
(arguments
|
||||
`(#:tests? #f ; there is no check target
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure)) ; no configure script
|
||||
#:make-flags
|
||||
(let ((out (assoc-ref %outputs "out")))
|
||||
(list (string-append "INSTALLROOT=" out)
|
||||
"CC=gcc"))))
|
||||
(home-page "http://gkrellm.srcbox.net/")
|
||||
(list
|
||||
#:tests? #f ;there is no check target
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(delete 'configure)) ;no configure script
|
||||
#:make-flags
|
||||
#~(list (string-append "INSTALLROOT=" #$output)
|
||||
(string-append "CC=" #$(cc-for-target)))))
|
||||
(home-page "https://gkrellm.srcbox.net/")
|
||||
(synopsis "System monitors")
|
||||
(description
|
||||
"GKrellM is a single process stack of system monitors which supports
|
||||
|
||||
@@ -165,14 +165,14 @@ tool to extract metadata from a file and print the results.")
|
||||
(define-public libmicrohttpd
|
||||
(package
|
||||
(name "libmicrohttpd")
|
||||
(version "1.0.2")
|
||||
(version "1.0.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1ix843yqhcl8d5gh5652pw2scx4p5n836ca80ymms5rl136lycnz"))))
|
||||
"0shj6kk4xp3k45vv696bzgx4s2jzpvhp11syck1zb70rmrxba5kq"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list #:configure-flags
|
||||
|
||||
@@ -1249,13 +1249,13 @@ testing.")
|
||||
(cpe-name . "firefox_esr")
|
||||
(cpe-version . ,(first (string-split version #\-)))))))
|
||||
|
||||
(define %icedove-build-id "20260324000000") ;must be of the form YYYYMMDDhhmmss
|
||||
(define %icedove-build-id "20260403000000") ;must be of the form YYYYMMDDhhmmss
|
||||
;;; See <https://product-details.mozilla.org/1.0/thunderbird_versions.json>
|
||||
;;; for the source of truth regarding Thunderbird releases.
|
||||
;;; Please keep these version numbers in sync with icecat.
|
||||
;;; Please also update thunderbird-comm-source and thunderbird-comm-l10n to
|
||||
;;; the icedove version.
|
||||
(define %icedove-version "140.9.0")
|
||||
(define %icedove-version "140.9.1")
|
||||
|
||||
;; Provides the "comm" folder which is inserted into the icecat source.
|
||||
;; Avoids the duplication of Icecat's source tarball. Pick the changeset that
|
||||
@@ -1267,11 +1267,11 @@ testing.")
|
||||
(method hg-fetch)
|
||||
(uri (hg-reference
|
||||
(url "https://hg.mozilla.org/releases/comm-esr140")
|
||||
(changeset "8be9f2d3072c225a1e5f153745a18984c2babf8f")))
|
||||
(changeset "427d792f23672fc4adbe9436ce7dddbb2bfb287a")))
|
||||
(file-name (string-append "thunderbird-" %icedove-version "-checkout"))
|
||||
(sha256
|
||||
(base32
|
||||
"04j35957x03m5x7mhh8zxa86mwjy0is2vb614sr4inkvvz4rs2hg"))
|
||||
"09fj375a0zb5kgvw94f13997zhcj67a4g5ylpdbjzfql0chh572p"))
|
||||
(patches (search-patches "icedove-observer-fix.patch"))))
|
||||
|
||||
;;; To regenerate, see the `format-locales' helper defined above.
|
||||
|
||||
@@ -5787,6 +5787,43 @@ reading and writing PNG data, as well as some graphic primitives and basic image
|
||||
processing filters.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public guile-pnm
|
||||
(package
|
||||
(name "guile-pnm")
|
||||
(version "0.1.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/artyom-poptsov/guile-pnm")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1yvsni4hll20g99zq4wl734f9i8gpjr1sqsnk3a93k2dd7b6ymac"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:make-flags
|
||||
#~(list "GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
|
||||
(native-inputs (list autoconf
|
||||
automake
|
||||
pkg-config
|
||||
texinfo
|
||||
;; needed when cross-compiling.
|
||||
guile-3.0
|
||||
guile-lib
|
||||
guile-smc))
|
||||
(inputs (list guile-3.0 guile-lib))
|
||||
(propagated-inputs (list guile-smc))
|
||||
(home-page "https://github.com/artyom-poptsov/guile-pnm")
|
||||
(synopsis "NetBPM (PNM) library for GNU Guile")
|
||||
(description
|
||||
"@code{guile-pnm} is a GNU Guile library for working with the
|
||||
@url{https://en.wikipedia.org/wiki/Netpbm, NetPBM} format (also known as PNM),
|
||||
including portable bitmap (PBM), portable graymap (PGM) and portable
|
||||
pixel (PPM) variants.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public guile-cv
|
||||
(package
|
||||
(name "guile-cv")
|
||||
|
||||
@@ -64,16 +64,17 @@
|
||||
(define-public apply-refact
|
||||
(package
|
||||
(name "apply-refact")
|
||||
(version "0.10.0.0")
|
||||
(version "0.15.0.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "apply-refact" version))
|
||||
(sha256
|
||||
(base32
|
||||
"129bf8n66kpwh5420rxprngg43bqr2agyd8q8d7l49k2rxsjl1fb"))))
|
||||
"0iny8ynxx46afbzjp14rvpd4sqk8c1p5883mbln53gmlxcm8zq53"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "apply-refact")))
|
||||
(inputs (list ghc-refact
|
||||
ghc-data-default
|
||||
ghc-exactprint
|
||||
ghc-paths
|
||||
ghc-extra
|
||||
@@ -96,13 +97,13 @@ library. It is primarily used with HLint's @code{--refactor} flag.")
|
||||
(define-public cabal-install
|
||||
(package
|
||||
(name "cabal-install")
|
||||
(version "3.6.2.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "cabal-install" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0dihpm4h3xh13vnpvwflnb7v614qdvljycc6ffg5cvhwbwfrxyfw"))))
|
||||
(version "3.12.1.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "cabal-install" version))
|
||||
(sha256
|
||||
(base32 "1cmifq189i4x0r0yha3dl8nrzzfh92bnd2saak7dqvvjkkysqj38"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "cabal-install")))
|
||||
(inputs (list ghc-async
|
||||
@@ -117,13 +118,35 @@ library. It is primarily used with HLint's @code{--refactor} flag.")
|
||||
ghc-tar
|
||||
ghc-zlib
|
||||
ghc-hackage-security
|
||||
ghc-open-browser
|
||||
ghc-regex-base
|
||||
ghc-regex-posix
|
||||
ghc-safe-exceptions
|
||||
ghc-semaphore-compat
|
||||
ghc-resolv
|
||||
ghc-lukko))
|
||||
(native-inputs (list ghc-tasty
|
||||
ghc-tasty-golden
|
||||
ghc-tasty-quickcheck
|
||||
ghc-tasty-expected-failure
|
||||
ghc-tasty-hunit
|
||||
ghc-tree-diff
|
||||
ghc-quickcheck
|
||||
ghc-tasty
|
||||
ghc-tasty-hunit
|
||||
ghc-tasty
|
||||
ghc-tasty-hunit
|
||||
ghc-tagged
|
||||
ghc-tagged
|
||||
ghc-tasty
|
||||
ghc-tasty-expected-failure
|
||||
ghc-tasty-hunit
|
||||
ghc-tasty-quickcheck
|
||||
ghc-quickcheck
|
||||
ghc-pretty-show))
|
||||
(arguments
|
||||
`(#:cabal-revision ("2"
|
||||
"1kpgyfl5njxp4c8ax5ziag1bhqvph3h0pn660v3vpxalz8d1j6xv")))
|
||||
"0fdzqdkg2vbyg0lnbk9bdskr2d23hwjpmnc7jnvpzkcmxmcvl99n")))
|
||||
(home-page "https://www.haskell.org/cabal/")
|
||||
(synopsis "Command-line interface for Cabal and Hackage")
|
||||
(description
|
||||
@@ -145,11 +168,10 @@ installation of Haskell libraries and programs.")
|
||||
"17wi7fma2qaqdm1hwgaam3fd140v9bpa8ky0wg708h1pqc5v2nbz"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "cpphs")))
|
||||
(inputs
|
||||
(list ghc-polyparse ghc-old-locale ghc-old-time))
|
||||
(inputs (list ghc-polyparse))
|
||||
(arguments
|
||||
`(#:cabal-revision ("1"
|
||||
"1f8jzs8zdh4wwbcq8fy6qqxkv75ypnvsm4yzw49wpr3b9vpnzlha")))
|
||||
`(#:cabal-revision ("2"
|
||||
"0vxav36p0kplp4dpd17i4cfzrsl3r437d840xwv83lf1bqp7mrxc")))
|
||||
(home-page "https://projects.haskell.org/cpphs/")
|
||||
(synopsis "Liberalised re-implementation of cpp, the C pre-processor")
|
||||
(description "Cpphs is a re-implementation of the C pre-processor that is
|
||||
@@ -269,20 +291,18 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
|
||||
(define-public ghcid
|
||||
(package
|
||||
(name "ghcid")
|
||||
(version "0.8.7")
|
||||
(version "0.8.9")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "ghcid" version))
|
||||
(sha256
|
||||
(base32 "0yqc1pkfajnr56gnh43sbj50r7c3r41b2jfz07ivgl6phi4frjbq"))))
|
||||
(base32 "1dq8lc0dwzib8y21279q4j54cmm7lvx64b3hw2yiym1kzi9rrhj4"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "ghcid")))
|
||||
(inputs
|
||||
(list ghc-extra ghc-ansi-terminal ghc-cmdargs ghc-fsnotify
|
||||
ghc-terminal-size))
|
||||
(native-inputs
|
||||
(list ghc-tasty ghc-tasty-hunit))
|
||||
(inputs (list ghc-extra ghc-ansi-terminal ghc-cmdargs ghc-fsnotify
|
||||
ghc-terminal-size))
|
||||
(native-inputs (list ghc-tasty ghc-tasty-hunit))
|
||||
(home-page "https://github.com/ndmitchell/ghcid#readme")
|
||||
(synopsis "GHCi based bare bones IDE")
|
||||
(description
|
||||
@@ -404,95 +424,97 @@ to @code{cabal repl}).")
|
||||
(string-append bin "/git-remote-annex"))
|
||||
(symlink (string-append bin "/git-annex")
|
||||
(string-append bin "/git-remote-tor-annex"))))))))
|
||||
(inputs
|
||||
(list curl
|
||||
ghc-aeson
|
||||
ghc-ansi-terminal
|
||||
ghc-async
|
||||
ghc-attoparsec
|
||||
ghc-aws
|
||||
ghc-bloomfilter
|
||||
ghc-byteable
|
||||
ghc-case-insensitive
|
||||
ghc-clientsession
|
||||
ghc-concurrent-output
|
||||
ghc-conduit
|
||||
ghc-connection
|
||||
ghc-crypto-api
|
||||
ghc-cryptonite
|
||||
ghc-data-default
|
||||
ghc-dav
|
||||
ghc-dbus
|
||||
ghc-disk-free-space
|
||||
ghc-dlist
|
||||
ghc-edit-distance
|
||||
ghc-exceptions
|
||||
ghc-fdo-notify
|
||||
ghc-feed
|
||||
ghc-filepath-bytestring
|
||||
ghc-free
|
||||
ghc-git-lfs
|
||||
ghc-hinotify
|
||||
ghc-http-client
|
||||
ghc-http-client-tls
|
||||
ghc-http-client-restricted
|
||||
ghc-http-conduit
|
||||
ghc-http-types
|
||||
ghc-ifelse
|
||||
ghc-magic
|
||||
ghc-memory
|
||||
ghc-microlens
|
||||
ghc-monad-control
|
||||
ghc-monad-logger
|
||||
ghc-mountpoints
|
||||
ghc-network
|
||||
ghc-network-bsd
|
||||
ghc-network-info
|
||||
ghc-network-multicast
|
||||
ghc-network-uri
|
||||
ghc-old-locale
|
||||
ghc-optparse-applicative
|
||||
ghc-persistent
|
||||
ghc-persistent-sqlite
|
||||
ghc-persistent-template
|
||||
ghc-quickcheck
|
||||
ghc-random
|
||||
ghc-regex-tdfa
|
||||
ghc-resourcet
|
||||
ghc-safesemaphore
|
||||
ghc-sandi
|
||||
ghc-securemem
|
||||
ghc-servant-client
|
||||
ghc-servant-server
|
||||
ghc-socks
|
||||
ghc-split
|
||||
ghc-stm-chans
|
||||
ghc-tagsoup
|
||||
ghc-torrent
|
||||
ghc-transformers
|
||||
ghc-unbounded-delays
|
||||
ghc-unix-compat
|
||||
ghc-unliftio-core
|
||||
ghc-unordered-containers
|
||||
ghc-utf8-string
|
||||
ghc-uuid
|
||||
ghc-vector
|
||||
ghc-wai
|
||||
ghc-wai-extra
|
||||
ghc-warp
|
||||
ghc-warp-tls
|
||||
ghc-yesod
|
||||
ghc-yesod-core
|
||||
ghc-yesod-form
|
||||
ghc-yesod-static
|
||||
lsof
|
||||
rsync
|
||||
xdg-utils))
|
||||
(inputs (list ghc-network-uri
|
||||
ghc-optparse-applicative
|
||||
ghc-uuid
|
||||
ghc-data-default
|
||||
ghc-case-insensitive
|
||||
ghc-random
|
||||
ghc-dlist
|
||||
ghc-unix-compat
|
||||
ghc-safesemaphore
|
||||
ghc-async
|
||||
ghc-disk-free-space
|
||||
ghc-ifelse
|
||||
ghc-monad-logger
|
||||
ghc-free
|
||||
ghc-utf8-string
|
||||
ghc-sandi
|
||||
ghc-monad-control
|
||||
ghc-bloomfilter
|
||||
ghc-edit-distance
|
||||
ghc-resourcet
|
||||
ghc-http-client
|
||||
ghc-http-client-tls
|
||||
ghc-http-types
|
||||
ghc-http-conduit
|
||||
ghc-http-client-restricted
|
||||
ghc-conduit
|
||||
ghc-old-locale
|
||||
ghc-persistent-sqlite
|
||||
ghc-persistent
|
||||
ghc-persistent-template
|
||||
ghc-unliftio-core
|
||||
ghc-microlens
|
||||
ghc-aeson
|
||||
ghc-vector
|
||||
ghc-tagsoup
|
||||
ghc-unordered-containers
|
||||
ghc-feed
|
||||
ghc-regex-tdfa
|
||||
ghc-socks
|
||||
ghc-byteable
|
||||
ghc-stm-chans
|
||||
ghc-securemem
|
||||
ghc-crypto-api
|
||||
ghc-memory
|
||||
ghc-split
|
||||
ghc-attoparsec
|
||||
ghc-concurrent-output
|
||||
ghc-unbounded-delays
|
||||
ghc-quickcheck
|
||||
ghc-tasty
|
||||
ghc-tasty-hunit
|
||||
ghc-tasty-quickcheck
|
||||
ghc-tasty-rerun
|
||||
ghc-ansi-terminal
|
||||
ghc-aws
|
||||
ghc-dav
|
||||
ghc-network
|
||||
ghc-network-bsd
|
||||
ghc-git-lfs
|
||||
ghc-clock
|
||||
ghc-crypton
|
||||
ghc-servant
|
||||
ghc-servant-server
|
||||
ghc-servant-client
|
||||
ghc-servant-client-core
|
||||
ghc-warp
|
||||
ghc-warp-tls
|
||||
ghc-os-string
|
||||
ghc-file-io
|
||||
ghc-mountpoints
|
||||
ghc-yesod
|
||||
ghc-yesod-static
|
||||
ghc-yesod-form
|
||||
ghc-yesod-core
|
||||
ghc-path-pieces
|
||||
ghc-wai
|
||||
ghc-wai-extra
|
||||
ghc-blaze-builder
|
||||
ghc-clientsession
|
||||
ghc-shakespeare
|
||||
ghc-hinotify
|
||||
ghc-dbus
|
||||
ghc-fdo-notify
|
||||
ghc-network-multicast
|
||||
ghc-network-info
|
||||
ghc-torrent
|
||||
ghc-magic
|
||||
ghc-criterion))
|
||||
(propagated-inputs
|
||||
(list git))
|
||||
(native-inputs
|
||||
(list ghc-tasty ghc-tasty-hunit ghc-tasty-quickcheck ghc-tasty-rerun
|
||||
perl))
|
||||
(native-inputs (list ghc-filepath-bytestring))
|
||||
(home-page "https://git-annex.branchable.com/")
|
||||
(synopsis "Manage files with Git, without checking in their contents")
|
||||
(description "This package allows managing files with Git, without
|
||||
@@ -513,13 +535,13 @@ used to keep a folder in sync between computers.")
|
||||
(define-public hlint
|
||||
(package
|
||||
(name "hlint")
|
||||
(version "3.4.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hlint" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0bkk03c9hacvfd73dk89g4r81b50g7pjgw5pavldali4qwss34cz"))))
|
||||
(version "3.10")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hlint" version))
|
||||
(sha256
|
||||
(base32 "0dzy7spc45v88yplczhd3la464bhcbaihi619a45bd06ghrp55nr"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "hlint")))
|
||||
(inputs (list ghc-unordered-containers
|
||||
@@ -536,12 +558,10 @@ used to keep a folder in sync between computers.")
|
||||
ghc-aeson
|
||||
ghc-deriving-aeson
|
||||
ghc-filepattern
|
||||
ghc-lib-parser
|
||||
ghc-lib-parser-ex
|
||||
hscolour
|
||||
ghc-yaml))
|
||||
(arguments
|
||||
`(#:cabal-revision ("1"
|
||||
"1rdaffg5n179yfcn5zjwjb0bki09qy13gz2ijky455y9pbaz8yz9")))
|
||||
(home-page "https://github.com/ndmitchell/hlint#readme")
|
||||
(synopsis "Suggest improvements for Haskell source code")
|
||||
(description
|
||||
@@ -553,13 +573,13 @@ unwanted suggestions, and to add your own custom suggestions.")
|
||||
(define-public hoogle
|
||||
(package
|
||||
(name "hoogle")
|
||||
(version "5.0.18.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hoogle" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0v6k75w0an9pqgb7a6cicnpf9rz77xd2lmxfbafc5l4f99jg83bn"))))
|
||||
(version "5.0.18.4")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hoogle" version))
|
||||
(sha256
|
||||
(base32 "08z32d87vqzhapb2vw21h25jb2g74csxlpvd8f54xl91k3ijs3wx"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "hoogle")))
|
||||
(inputs (list ghc-quickcheck
|
||||
@@ -569,7 +589,7 @@ unwanted suggestions, and to add your own custom suggestions.")
|
||||
ghc-cmdargs
|
||||
ghc-conduit
|
||||
ghc-conduit-extra
|
||||
ghc-connection
|
||||
ghc-crypton-connection
|
||||
ghc-extra
|
||||
ghc-foundation
|
||||
ghc-old-locale
|
||||
@@ -582,6 +602,7 @@ unwanted suggestions, and to add your own custom suggestions.")
|
||||
ghc-mmap
|
||||
ghc-process-extras
|
||||
ghc-resourcet
|
||||
ghc-safe
|
||||
ghc-storable-tuple
|
||||
ghc-tar
|
||||
ghc-uniplate
|
||||
@@ -593,6 +614,9 @@ unwanted suggestions, and to add your own custom suggestions.")
|
||||
ghc-warp-tls
|
||||
ghc-zlib
|
||||
ghc-semigroups))
|
||||
(arguments
|
||||
`(#:cabal-revision ("1"
|
||||
"1129flhhb1992rijw46dclvmpqlylmbrzl4swsnk2knylx6jgw5a")))
|
||||
(home-page "https://hoogle.haskell.org/")
|
||||
(synopsis "Haskell API Search")
|
||||
(description
|
||||
@@ -604,14 +628,13 @@ or by approximate type signature.")
|
||||
(define-public hscolour
|
||||
(package
|
||||
(name "hscolour")
|
||||
(version "1.24.4")
|
||||
(version "1.25")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hscolour" version))
|
||||
(sha256
|
||||
(base32
|
||||
"079jwph4bwllfp03yfr26s5zc6m6kw3nhb1cggrifh99haq34cr4"))))
|
||||
(base32 "0z679khnmb6as1zcdb44n9qjk7in32jpm4ldscpqg7jrapd31kjl"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "hscolour")))
|
||||
(home-page "https://hackage.haskell.org/package/hscolour")
|
||||
@@ -760,12 +783,12 @@ Wayland, and Linux console environments alike.")
|
||||
ghc-text-zipper
|
||||
ghc-timezone-olson
|
||||
ghc-timezone-series
|
||||
ghc-unix-compat-7
|
||||
ghc-unix-compat
|
||||
ghc-unordered-containers
|
||||
ghc-utf8-string
|
||||
ghc-uuid
|
||||
ghc-vector
|
||||
ghc-vty-6
|
||||
ghc-vty
|
||||
ghc-vty-crossplatform
|
||||
ghc-word-wrap
|
||||
ghc-xdg-basedir))
|
||||
@@ -811,20 +834,31 @@ Wayland, and Linux console environments alike.")
|
||||
(define-public nixfmt
|
||||
(package
|
||||
(name "nixfmt")
|
||||
(version "0.5.0")
|
||||
(version "1.1.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "nixfmt" version))
|
||||
(method git-fetch)
|
||||
(uri
|
||||
(git-reference
|
||||
(url "https://github.com/NixOS/nixfmt")
|
||||
(commit (string-append "v" version))))
|
||||
(sha256
|
||||
(base32 "0rxi8zrd2xr72w673nvgnhb0g3r7rssc1ahlhz8rmdpc6c1a82wl"))))
|
||||
(base32 "19sydkdw1579qmvzx0zq06s23bm6m6l9wp1kvsfhxawk8pkz2pc2"))
|
||||
(snippet
|
||||
#~(substitute* "nixfmt.cabal"
|
||||
(("(megaparsec|filepath) *[0-9<>=^&|. ]*" _ package)
|
||||
package)))
|
||||
(modules '((guix build utils)))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "nixfmt")))
|
||||
(inputs
|
||||
(list ghc-megaparsec ghc-parser-combinators ghc-cmdargs
|
||||
ghc-safe-exceptions))
|
||||
(home-page "https://github.com/serokell/nixfmt")
|
||||
(synopsis "Opinionated formatter for Nix")
|
||||
(inputs (list ghc-megaparsec
|
||||
ghc-parser-combinators
|
||||
ghc-scientific
|
||||
ghc-pretty-simple
|
||||
ghc-cmdargs
|
||||
ghc-file-embed
|
||||
ghc-safe-exceptions))
|
||||
(home-page "https://github.com/NixOS/nixfmt")
|
||||
(synopsis "Official formatter for Nix code")
|
||||
(description
|
||||
"Nixfmt is a formatter for Nix that ensures consistent and clear
|
||||
formatting by forgetting all existing formatting during parsing.")
|
||||
@@ -954,6 +988,7 @@ too slow and you'll get wound up in the scroll and crushed.")
|
||||
(build-system haskell-build-system)
|
||||
(arguments
|
||||
(list #:haddock? #f ; TODO: Fails to build.
|
||||
#:cabal-revision '("1" "1935jrzy1r3g9cc74b330fmxnz2i1j8hsdk9jnl557qgk6xjqzs7")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'build 'build-man-page
|
||||
@@ -993,13 +1028,13 @@ advanced user's otherwise working script to fail under future circumstances.
|
||||
(define-public shelltestrunner
|
||||
(package
|
||||
(name "shelltestrunner")
|
||||
(version "1.9")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "shelltestrunner" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1a5kzqbwg6990249ypw0cx6cqj6663as1kbj8nzblcky8j6kbi6b"))))
|
||||
(version "1.10")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "shelltestrunner" version))
|
||||
(sha256
|
||||
(base32 "1c6bjyxqa4mgnh3w4pqp6sbr5cf160n7jf9i1b4b9sdxzdjk7g87"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "shelltestrunner")))
|
||||
(arguments
|
||||
@@ -1022,17 +1057,19 @@ advanced user's otherwise working script to fail under future circumstances.
|
||||
"tests/examples")
|
||||
(format #t "test suite not run~%"))
|
||||
#t))))))
|
||||
(inputs
|
||||
(list ghc-diff
|
||||
ghc-cmdargs
|
||||
ghc-filemanip
|
||||
ghc-hunit
|
||||
ghc-pretty-show
|
||||
ghc-regex-tdfa
|
||||
ghc-safe
|
||||
ghc-utf8-string
|
||||
ghc-test-framework
|
||||
ghc-test-framework-hunit))
|
||||
(inputs (list ghc-diff
|
||||
ghc-filemanip
|
||||
ghc-hunit
|
||||
ghc-cmdargs
|
||||
ghc-pretty-show
|
||||
ghc-regex-tdfa
|
||||
ghc-safe
|
||||
ghc-test-framework
|
||||
ghc-test-framework-hunit
|
||||
ghc-utf8-string
|
||||
ghc-hspec
|
||||
ghc-hspec-core
|
||||
ghc-hspec-contrib))
|
||||
(home-page "https://github.com/simonmichael/shelltestrunner")
|
||||
(synopsis "Test CLI programs")
|
||||
(description
|
||||
@@ -1045,13 +1082,13 @@ output, stderr, and exit status.")
|
||||
(define-public stylish-haskell
|
||||
(package
|
||||
(name "stylish-haskell")
|
||||
(version "0.14.3.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "stylish-haskell" version))
|
||||
(sha256
|
||||
(base32
|
||||
"17w92v0qnwj7m6yqdq5cxbr04xiz0yfnnyx5q54218wdl7n5lf6d"))))
|
||||
(version "0.15.1.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "stylish-haskell" version))
|
||||
(sha256
|
||||
(base32 "06y6f7bv5j5k7q81194v9jqcbmmqcv7h8ii3lq1783bpfnyd6h19"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "stylish-haskell")))
|
||||
(inputs (list ghc-aeson
|
||||
@@ -1061,6 +1098,7 @@ output, stderr, and exit status.")
|
||||
ghc-hsyaml-aeson
|
||||
ghc-hsyaml
|
||||
ghc-semigroups
|
||||
ghc-lib-parser
|
||||
ghc-lib-parser-ex
|
||||
ghc-strict
|
||||
ghc-optparse-applicative))
|
||||
|
||||
@@ -45,22 +45,18 @@
|
||||
(define-public ghc-tasty-ant-xml
|
||||
(package
|
||||
(name "ghc-tasty-ant-xml")
|
||||
(version "1.1.8")
|
||||
(version "1.1.9")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty-ant-xml" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0h9mllhw9cd0rn34xhj8grwmbny7z7hpd8qmp9lfcdj0s4qx9vx8"))))
|
||||
(base32 "00zgsd6jjfwasr69d0y781vhjr7d8p1jbaaz4pn75ljf33akd92l"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "tasty-ant-xml")))
|
||||
(inputs
|
||||
(list ghc-generic-deriving ghc-xml ghc-tagged ghc-tasty))
|
||||
(home-page
|
||||
"https://github.com/ocharles/tasty-ant-xml")
|
||||
(synopsis
|
||||
"Render tasty output to XML for Jenkins")
|
||||
(inputs (list ghc-generic-deriving ghc-tagged ghc-tasty ghc-xml))
|
||||
(home-page "http://github.com/ocharles/tasty-ant-xml")
|
||||
(synopsis "Render tasty output to XML for Jenkins")
|
||||
(description
|
||||
"A tasty ingredient to output test results in XML, using the Ant
|
||||
schema. This XML can be consumed by the Jenkins continuous integration
|
||||
@@ -76,33 +72,37 @@ framework.")
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty-smallcheck" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0csgwn3vch0jnpqyyfnrfjq4z0dpl67imh5a7byll3hhlyidgjym"))))
|
||||
(base32 "0csgwn3vch0jnpqyyfnrfjq4z0dpl67imh5a7byll3hhlyidgjym"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "tasty-smallcheck")))
|
||||
(inputs
|
||||
(list ghc-tasty ghc-smallcheck ghc-async ghc-tagged))
|
||||
(home-page "https://documentup.com/feuerbach/tasty")
|
||||
(inputs (list ghc-tasty ghc-smallcheck ghc-tagged ghc-optparse-applicative))
|
||||
(arguments
|
||||
`(#:cabal-revision ("1"
|
||||
"0033ha2w9rzc1rxpzh1dkfdrn256i5lvb41pqbdh2i6kli0v5vmh")))
|
||||
(home-page "https://github.com/feuerbach/tasty")
|
||||
(synopsis "SmallCheck support for the Tasty test framework")
|
||||
(description "This package provides SmallCheck support for the Tasty
|
||||
Haskell test framework.")
|
||||
(license license:bsd-3)))
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ghc-tasty-quickcheck
|
||||
(package
|
||||
(name "ghc-tasty-quickcheck")
|
||||
(version "0.10.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty-quickcheck" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1qnc6rdvjvlw08q6sln2n98rvj0s0pp689h6w4z58smjbn0lr25l"))))
|
||||
(version "0.11.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty-quickcheck" version))
|
||||
(sha256
|
||||
(base32 "0si4ccgqlv8h33d6310rrqba7f4pz3g8cinqfj42yd7damsdxm73"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "tasty-quickcheck")))
|
||||
(inputs (list ghc-tagged ghc-tasty ghc-random ghc-quickcheck
|
||||
ghc-optparse-applicative))
|
||||
(native-inputs (list ghc-tasty-hunit ghc-pcre-light))
|
||||
(native-inputs (list ghc-regex-tdfa ghc-tasty-hunit))
|
||||
(arguments
|
||||
`(#:cabal-revision ("3"
|
||||
"1wzvha4xam8npx5mk33c056grmrqnjd6m38nnm6d7y99w2mn1a7w")))
|
||||
(home-page "https://github.com/UnkindPartition/tasty")
|
||||
(synopsis "QuickCheck support for the Tasty test framework")
|
||||
(description "This package provides QuickCheck support for the Tasty
|
||||
@@ -140,22 +140,23 @@ contains the correct result for the test.")
|
||||
(define-public ghc-tasty
|
||||
(package
|
||||
(name "ghc-tasty")
|
||||
(version "1.4.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty" version))
|
||||
(sha256
|
||||
(base32
|
||||
"006bf4gyc30i2gvb17hj1mzrh1kwnwf7l050x3f72wi6c2axl87l"))))
|
||||
(version "1.5.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty" version))
|
||||
(sha256
|
||||
(base32 "10076vlklbcyiz7plakrihava5sy3dvwhskjldqzhfl18jvcg82l"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "tasty")))
|
||||
(inputs
|
||||
(append
|
||||
(list ghc-tagged ghc-optparse-applicative ghc-ansi-terminal)
|
||||
;; TODO: Add ghc-unbounded-delays unconditionally on next rebuild cycle.
|
||||
(if (member (%current-system) '("i686-linux"))
|
||||
(list ghc-unbounded-delays)
|
||||
'())))
|
||||
(list ghc-tagged
|
||||
ghc-optparse-applicative
|
||||
ghc-ansi-terminal
|
||||
ghc-unbounded-delays)) ; needed on 32-bit architectures
|
||||
(arguments
|
||||
`(#:cabal-revision ("2"
|
||||
"04llcf1i3gawdik0bjhxdgls2wkiqlx0gi76nfh784nv2qzxlpbb")))
|
||||
(home-page "https://github.com/UnkindPartition/tasty")
|
||||
(synopsis "Modern and extensible testing framework")
|
||||
(description
|
||||
@@ -167,17 +168,20 @@ and any other types of tests into a single test suite.")
|
||||
(define-public ghc-tasty-hedgehog
|
||||
(package
|
||||
(name "ghc-tasty-hedgehog")
|
||||
(version "1.3.1.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty-hedgehog" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1iq452mvd9wc9pfmjsmm848jwp3cvsk1faf2mlr21vcs0yaxvq3m"))))
|
||||
(version "1.4.0.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty-hedgehog" version))
|
||||
(sha256
|
||||
(base32 "0lki03z0p38x0dkqx5cqga30zy5m31gxn1saqylja9bi6bbq8d25"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "tasty-hedgehog")))
|
||||
(inputs (list ghc-tagged ghc-tasty ghc-hedgehog))
|
||||
(native-inputs (list ghc-tasty-expected-failure))
|
||||
(arguments
|
||||
`(#:cabal-revision ("6"
|
||||
"1rb8ncp6xyy7jr6v0hyls9m529ba0djndsxgxmkgr52rk3qq8lrc")))
|
||||
(home-page "https://github.com/qfpl/tasty-hedgehog")
|
||||
(synopsis "Integration for tasty and hedgehog")
|
||||
(description
|
||||
@@ -190,22 +194,25 @@ framework}.")
|
||||
(define-public ghc-tasty-hspec
|
||||
(package
|
||||
(name "ghc-tasty-hspec")
|
||||
(version "1.2.0.2")
|
||||
(version "1.2.0.4")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty-hspec" version))
|
||||
(sha256
|
||||
(base32 "0cfcpi25jmnmzfzsx364qsj68q6gyph5z112kl8ja222hnhhr2n2"))))
|
||||
(base32 "1hk1nkjvhp89xxgzj6dhbgw0fknnghpng6afq4i39hjkwv5p78ni"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "tasty-hspec")))
|
||||
(inputs (list ghc-hspec
|
||||
ghc-hspec-api
|
||||
ghc-hspec-core
|
||||
ghc-quickcheck
|
||||
ghc-tasty
|
||||
ghc-tasty-smallcheck
|
||||
ghc-tasty-quickcheck
|
||||
ghc-tagged))
|
||||
ghc-tasty-quickcheck))
|
||||
(arguments
|
||||
`(#:cabal-revision ("7"
|
||||
"0s1y34i8g7fva0z10ws3ipcy2jmlvqk0v4hdbx8rqnby5n0l5kay")))
|
||||
(home-page "https://github.com/mitchellwrosen/tasty-hspec")
|
||||
(synopsis "Hspec support for the Tasty test framework")
|
||||
(description
|
||||
@@ -215,19 +222,17 @@ framework}.")
|
||||
(define-public ghc-tasty-hunit
|
||||
(package
|
||||
(name "ghc-tasty-hunit")
|
||||
(version "0.10.0.3")
|
||||
(version "0.10.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty-hunit" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0gz6zz3w7s44pymw33xcxnawryl27zk33766sab96nz2xh91kvxp"))))
|
||||
(base32 "1xh33ss7dncm7zanzkzh7ywb3a46k7vkcbh6v8jb767gq6kizw2s"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "tasty-hunit")))
|
||||
(inputs
|
||||
(list ghc-call-stack-boot ghc-tasty))
|
||||
(home-page "http://documentup.com/feuerbach/tasty")
|
||||
(inputs (list ghc-tasty ghc-call-stack-boot))
|
||||
(home-page "https://github.com/UnkindPartition/tasty")
|
||||
(synopsis "HUnit support for the Tasty test framework")
|
||||
(description "This package provides HUnit support for the Tasty Haskell
|
||||
test framework.")
|
||||
@@ -257,13 +262,13 @@ tasty.")
|
||||
(define-public ghc-tasty-lua
|
||||
(package
|
||||
(name "ghc-tasty-lua")
|
||||
(version "1.0.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty-lua" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1vnyvgcjsvqhwwyqkbgqksr9ppj5whiihpwcqkg33sl7jj3ysdwv"))))
|
||||
(version "1.1.1.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty-lua" version))
|
||||
(sha256
|
||||
(base32 "03b2n3gw2w70cnl57w3sh3cv5ka270sf07jlxpb4zs0z5gh83p1r"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "tasty-lua")))
|
||||
(inputs (list ghc-hslua-core
|
||||
@@ -288,16 +293,15 @@ from Lua.")
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty-th" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0b2ivrw2257m4cy4rjnkwqlarh83j1y3zywnmaqqqbvy667sqnj3"))))
|
||||
(base32 "0b2ivrw2257m4cy4rjnkwqlarh83j1y3zywnmaqqqbvy667sqnj3"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "tasty-th")))
|
||||
(inputs
|
||||
(list ghc-haskell-src-exts ghc-tasty ghc-tasty-hunit))
|
||||
(inputs (list ghc-haskell-src-exts ghc-tasty))
|
||||
(native-inputs (list ghc-tasty-hunit))
|
||||
(home-page "https://github.com/bennofs/tasty-th")
|
||||
(synopsis "Automatically generate tasty TestTrees")
|
||||
(description
|
||||
"Tasty-th automatically generates tasty TestTrees from functions of the
|
||||
"Tasty-th automatically generates tasty TestTrees from functions of the
|
||||
current module, using TemplateHaskell. This is a fork the original
|
||||
test-framework-th package, modified to work with tasty instead of
|
||||
test-framework.")
|
||||
@@ -306,28 +310,27 @@ test-framework.")
|
||||
(define-public ghc-tasty-rerun
|
||||
(package
|
||||
(name "ghc-tasty-rerun")
|
||||
(version "1.1.18")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty-rerun" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0sccp5zx9v2rx741nbmgd8mzjhy5m4v74hk26d23xz93ph8aqx7s"))))
|
||||
(version "1.1.20")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty-rerun" version))
|
||||
(sha256
|
||||
(base32 "0px58jm1yqbg32qf2s0yk09d2qdjxkkz9df89f31q3nzw85jv2ky"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "tasty-rerun")))
|
||||
(inputs
|
||||
(list ghc-optparse-applicative ghc-reducers ghc-split ghc-tagged
|
||||
ghc-tasty))
|
||||
(inputs (list ghc-optparse-applicative ghc-split ghc-tagged ghc-tasty))
|
||||
(arguments
|
||||
`(#:cabal-revision ("3"
|
||||
"0091arn90cx5rzn5n2bpb9alzybwraf9yj7hb0bwdfyamzpf3pkb")))
|
||||
`(#:cabal-revision ("1"
|
||||
"13xmx91hp7i0qzrhada9ckliqkynwlwa8x6pjbvxjcy1y0qsd7hk")))
|
||||
(home-page "https://github.com/ocharles/tasty-rerun")
|
||||
(synopsis "Run tests by filtering the test tree")
|
||||
(description "This package adds the ability to run tests by filtering the
|
||||
(description
|
||||
"This package adds the ability to run tests by filtering the
|
||||
test tree based on the result of a previous test run. You can use this to run
|
||||
only those tests that failed in the last run, or to only run the tests that have
|
||||
been added since previous test run.")
|
||||
(license license:bsd-3)))
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public ghc-tasty-expected-failure
|
||||
(package
|
||||
@@ -362,17 +365,17 @@ development.")
|
||||
(define-public ghc-quickcheck-instances
|
||||
(package
|
||||
(name "ghc-quickcheck-instances")
|
||||
(version "0.3.29.1")
|
||||
(version "0.3.33")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "quickcheck-instances" version))
|
||||
(sha256
|
||||
(base32 "0jx2wfy7y5dr14s9i457g2aah4isjxry4mlbqhj7vlav6ib84gdj"))))
|
||||
(base32 "0rl8y3rb4fm4nqz122bp5f2aya4f8bc9m9i9n2vwlyq2gdacs0v8"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "quickcheck-instances")))
|
||||
(inputs (list ghc-quickcheck
|
||||
ghc-splitmix
|
||||
ghc-splitmix-bootstrap
|
||||
ghc-case-insensitive
|
||||
ghc-data-fix
|
||||
ghc-hashable
|
||||
@@ -383,17 +386,15 @@ development.")
|
||||
ghc-scientific
|
||||
ghc-strict
|
||||
ghc-tagged
|
||||
ghc-text-short
|
||||
ghc-these
|
||||
ghc-time-compat
|
||||
ghc-transformers-compat
|
||||
ghc-unordered-containers
|
||||
ghc-uuid-types
|
||||
ghc-vector
|
||||
ghc-data-array-byte
|
||||
ghc-text-short))
|
||||
ghc-vector))
|
||||
(arguments
|
||||
`(#:cabal-revision ("2"
|
||||
"118xy4z4dy4bpkzsp98daiv3l4n5j7ph9my0saca7cqjybqwkcip")))
|
||||
`(#:cabal-revision ("1"
|
||||
"1xkc7rsfgya4rwiizh0yfincws3knpdnh08m280v1dgik4kv37vh")))
|
||||
(home-page "https://github.com/haskellari/qc-instances")
|
||||
(synopsis "Common quickcheck instances")
|
||||
(description "This package provides QuickCheck instances for types
|
||||
@@ -409,17 +410,38 @@ provided by the Haskell Platform.")
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "quickcheck-unicode" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0s43s1bzbg3gwsjgm7fpyksd1339f0m26dlw2famxwyzgvm0a80k"))))
|
||||
(base32 "0s43s1bzbg3gwsjgm7fpyksd1339f0m26dlw2famxwyzgvm0a80k"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "quickcheck-unicode")))
|
||||
(inputs (list ghc-quickcheck))
|
||||
(home-page
|
||||
"https://github.com/bos/quickcheck-unicode")
|
||||
(home-page "https://github.com/bos/quickcheck-unicode")
|
||||
(synopsis "Generator functions Unicode-related tests")
|
||||
(description "This package provides generator and shrink functions for
|
||||
testing Unicode-related software.")
|
||||
(license license:bsd-3)))
|
||||
(license license:bsd-2)))
|
||||
|
||||
(define-public ghc-quickcheck-text
|
||||
(package
|
||||
(name "ghc-quickcheck-text")
|
||||
(version "0.1.2.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "quickcheck-text" version))
|
||||
(sha256
|
||||
(base32 "02dbs0k6igmsa1hcw8yfvp09v7038vp4zlsp9706km3cmswgshj4"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "quickcheck-text")))
|
||||
(inputs (list ghc-quickcheck))
|
||||
(home-page "https://github.com/olorin/quickcheck-text")
|
||||
(synopsis "Alternative arbitrary instance for Text")
|
||||
(description
|
||||
"The usual Arbitrary instance for Text (in
|
||||
<https://hackage.haskell.org/package/quickcheck-instances quickcheck-instances>)
|
||||
only has single-byte instances and so isn't an ideal representation of a valid
|
||||
UTF-8 character. This package has generators for one-, two- and three-byte
|
||||
UTF-8 characters (all that are currently in use).")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ghc-quickcheck-io
|
||||
(package
|
||||
@@ -446,17 +468,19 @@ use HUnit assertions as QuickCheck properties.")
|
||||
(define-public ghc-quickcheck
|
||||
(package
|
||||
(name "ghc-quickcheck")
|
||||
(version "2.14.3")
|
||||
(version "2.15.0.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "QuickCheck" version))
|
||||
(sha256
|
||||
(base32 "0085lwy14r7hk7ibmv8d7d54ja9zin0ijf0b27xai898dfrj43sw"))))
|
||||
(base32 "0zvfydg44ibs1br522rzvdlxj9mpz0h62js1hay1sj5gvdnj3cm3"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "QuickCheck")))
|
||||
(inputs
|
||||
(list ghc-random ghc-splitmix-bootstrap))
|
||||
(inputs (list ghc-random-bootstrap ghc-splitmix-bootstrap))
|
||||
(arguments
|
||||
`(#:cabal-revision ("1"
|
||||
"0cgfp4s51cjphsn9cls6rndisvqmi94vn95xan9g1yz6p5xk7z8c")))
|
||||
(home-page "https://github.com/nick8325/quickcheck")
|
||||
(synopsis "Automatic testing of Haskell programs")
|
||||
(description
|
||||
@@ -479,10 +503,8 @@ expressed in Haskell, using combinators defined in the QuickCheck library.")
|
||||
(base32 "1kyam4cy7qmnizjwjm8jamq43w7f0fs6ljfplwj0ib6wi2kjh0wv"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "quickcheck-assertions")))
|
||||
(native-inputs
|
||||
(list ghc-hspec))
|
||||
(inputs
|
||||
(list ghc-ieee754 ghc-pretty-show ghc-quickcheck))
|
||||
(inputs (list ghc-quickcheck ghc-ieee754 ghc-pretty-show))
|
||||
(native-inputs (list ghc-hspec))
|
||||
(home-page "https://github.com/s9gf4ult/quickcheck-assertions")
|
||||
(synopsis "HUnit-like assertions for QuickCheck")
|
||||
(description
|
||||
@@ -494,33 +516,27 @@ HUnit.")
|
||||
(define-public ghc-test-framework
|
||||
(package
|
||||
(name "ghc-test-framework")
|
||||
(version "0.8.2.0")
|
||||
(version "0.8.2.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "test-framework" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1hhacrzam6b8f10hyldmjw8pb7frdxh04rfg3farxcxwbnhwgbpm"))))
|
||||
(base32 "04ijf5x6xx8i5lqv9ir33zs1rfzc4qkwwz8c1fdycnzvydcv4dnp"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "test-framework")))
|
||||
(inputs (list ghc-ansi-terminal
|
||||
ghc-ansi-wl-pprint
|
||||
ghc-random
|
||||
ghc-regex-posix
|
||||
ghc-old-locale
|
||||
ghc-xml
|
||||
ghc-hostname))
|
||||
(native-inputs (list ghc-hunit ghc-quickcheck ghc-semigroups-bootstrap))
|
||||
(arguments
|
||||
`(#:tests? #f ; FIXME: Tests do not build.
|
||||
#:cabal-revision
|
||||
("6" "0wbq9wiaag69nsqxwijzhs5y1hb9kbpkp1x65dvx158cxp8i9w9r")))
|
||||
;(native-inputs
|
||||
; (list ghc-hunit ghc-quickcheck))
|
||||
(inputs
|
||||
`(("ghc-ansi-terminal" ,ghc-ansi-terminal)
|
||||
("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint)
|
||||
("ghc-hostname" ,ghc-hostname)
|
||||
("ghc-old-locale" ,ghc-old-locale)
|
||||
("ghc-random" ,ghc-random)
|
||||
("ghc-regex-posix" ,ghc-regex-posix)
|
||||
("ghc-xml" ,ghc-xml)
|
||||
("ghc-libxml" ,ghc-libxml)
|
||||
("ghc-semigroups" ,ghc-semigroups-bootstrap)))
|
||||
(home-page "https://batterseapower.github.io/test-framework/")
|
||||
`(#:cabal-revision ("1"
|
||||
"1yv1qsr6bxphxk9430id9bqhfmkffdqmfg0k017dp9pnn4pqj0zh")))
|
||||
(home-page "https://github.com/haskell/test-framework#readme")
|
||||
(synopsis "Framework for running and organising tests")
|
||||
(description
|
||||
"This package allows tests such as QuickCheck properties and HUnit test
|
||||
@@ -557,23 +573,21 @@ reporting and test statistics output.")
|
||||
(define-public ghc-test-framework-quickcheck2
|
||||
(package
|
||||
(name "ghc-test-framework-quickcheck2")
|
||||
(version "0.3.0.5")
|
||||
(version "0.3.0.6")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "test-framework-quickcheck2" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0ngf9vvby4nrdf1i7dxf5m9jn0g2pkq32w48xdr92n9hxka7ixn9"))))
|
||||
(base32 "1d0w2q9sm8aayk0aj1zr2irpnqwpzixn6pdfq1i904vs1kkb2xin"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "test-framework-quickcheck2")))
|
||||
(inputs (list ghc-test-framework ghc-quickcheck ghc-extensible-exceptions
|
||||
ghc-random))
|
||||
(arguments
|
||||
`(#:cabal-revision
|
||||
("3" "0mglqfimla4vvv80mg08aj76zf4993wmngqlirh05h8i9nmgv6lh")))
|
||||
(inputs
|
||||
(list ghc-extensible-exceptions ghc-quickcheck ghc-random
|
||||
ghc-test-framework))
|
||||
(home-page "https://batterseapower.github.io/test-framework/")
|
||||
`(#:cabal-revision ("1"
|
||||
"1af2gw9gvq143jdqmsnxj23cgss9ffdyr67951a5x151aps04y7z")))
|
||||
(home-page "https://github.com/haskell/test-framework")
|
||||
(synopsis "QuickCheck2 support for test-framework")
|
||||
(description
|
||||
"This package provides QuickCheck2 support for the test-framework
|
||||
@@ -592,9 +606,8 @@ package.")
|
||||
(base32 "1xpgpk1gp4w7w46b4rhj80fa0bcyz8asj2dcjb5x1c37b7rw90b0"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "test-framework-smallcheck")))
|
||||
(inputs
|
||||
(list ghc-smallcheck ghc-test-framework))
|
||||
(home-page "https://github.com/Bodigrim/smallcheck")
|
||||
(inputs (list ghc-test-framework ghc-smallcheck))
|
||||
(home-page "https://github.com/feuerbach/smallcheck")
|
||||
(synopsis "SmallCheck support for test-framework")
|
||||
(description
|
||||
"This package lets programmers use SmallCheck properties in Haskell's
|
||||
@@ -660,17 +673,17 @@ JUnit tool for Java.")
|
||||
(define-public hspec-discover
|
||||
(package
|
||||
(name "hspec-discover")
|
||||
(version "2.9.7")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hspec-discover" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0536kdxjw6p8b6gcwvmr22jbmb6cgzbddi0fkd01b2m847z37sb5"))))
|
||||
(version "2.11.12")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hspec-discover" version))
|
||||
(sha256
|
||||
(base32 "044vgsy45ff00h9z2k3jgn2m37npcjiacc4cifahrjlmwa7a7ylp"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "hspec-discover")))
|
||||
(native-inputs (list ghc-quickcheck ghc-hspec-meta ghc-mockery-bootstrap))
|
||||
(home-page "http://hspec.github.io/")
|
||||
(home-page "https://hspec.github.io/")
|
||||
(synopsis "Automatically discover and run Hspec tests")
|
||||
(description "hspec-discover is a tool which automatically discovers and
|
||||
runs Hspec tests.")
|
||||
@@ -679,28 +692,30 @@ runs Hspec tests.")
|
||||
(define-public ghc-hspec-core
|
||||
(package
|
||||
(name "ghc-hspec-core")
|
||||
(version "2.9.7")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hspec-core" version))
|
||||
(sha256
|
||||
(base32
|
||||
"040rzqiqwkp373jjpij8lkmv08pp2ya92zzcf95bw8px215rp08n"))))
|
||||
(version "2.11.12")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hspec-core" version))
|
||||
(sha256
|
||||
(base32 "030400w95775jrivbi7n1nnx6j5z717rqd3986ggklb8h9hjalfc"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "hspec-core")))
|
||||
(inputs (list ghc-hunit
|
||||
ghc-quickcheck
|
||||
ghc-ansi-terminal
|
||||
ghc-call-stack
|
||||
ghc-clock
|
||||
ghc-haskell-lexer
|
||||
ghc-hspec-expectations
|
||||
ghc-quickcheck-io
|
||||
ghc-random
|
||||
ghc-setenv
|
||||
ghc-tf-random))
|
||||
(native-inputs (list ghc-base-orphans-bootstrap ghc-hspec-meta
|
||||
ghc-silently-bootstrap ghc-temporary))
|
||||
(home-page "http://hspec.github.io/")
|
||||
ghc-silently-bootstrap ghc-temporary-bootstrap))
|
||||
(arguments
|
||||
`(#:cabal-revision ("1"
|
||||
"0yq9nnawcgbgxiz4ymfa8k66jrvgrhmv8j7g880x8k6q8q4ncqlq")))
|
||||
(home-page "https://hspec.github.io/")
|
||||
(synopsis "Testing framework for Haskell")
|
||||
(description "This library exposes internal types and functions that can
|
||||
be used to extend Hspec's functionality.")
|
||||
@@ -709,23 +724,28 @@ be used to extend Hspec's functionality.")
|
||||
(define-public ghc-hspec-meta
|
||||
(package
|
||||
(name "ghc-hspec-meta")
|
||||
(version "2.9.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hspec-meta" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1raxwpsmcijl3x2h5naw6aydhbiknxvhj3x7v384bi1rqi51ainm"))))
|
||||
(version "2.11.12")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hspec-meta" version))
|
||||
(sha256
|
||||
(base32 "1612pg5gihqjxrzqqvbbgckaqiwq3rmz3rg07lrjhzklg975nj69"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "hspec-meta")))
|
||||
(inputs (list ghc-quickcheck
|
||||
(inputs (list ghc-hunit
|
||||
ghc-quickcheck
|
||||
ghc-ansi-terminal
|
||||
ghc-call-stack-boot
|
||||
ghc-clock
|
||||
ghc-haskell-lexer
|
||||
ghc-hspec-expectations
|
||||
ghc-quickcheck-io
|
||||
ghc-random
|
||||
ghc-setenv))
|
||||
(home-page "http://hspec.github.io/")
|
||||
ghc-tf-random))
|
||||
(arguments
|
||||
`(#:cabal-revision ("2"
|
||||
"1jrk14s51psb0zjici56220iyb98i3q06sd3rsyx594s3cddgn5d")))
|
||||
(home-page "https://hspec.github.io/")
|
||||
(synopsis "Version of Hspec to test Hspec itself")
|
||||
(description "This library provides a stable version of Hspec which is
|
||||
used to test the in-development version of Hspec.")
|
||||
@@ -734,38 +754,58 @@ used to test the in-development version of Hspec.")
|
||||
(define-public ghc-hspec
|
||||
(package
|
||||
(name "ghc-hspec")
|
||||
(version "2.9.7")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hspec" version))
|
||||
(sha256
|
||||
(base32
|
||||
"092sfqjkargxxszp9jjqa8ldjz0xv34jwn6k21q59ys5ckvsrpc1"))))
|
||||
(version "2.11.12")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hspec" version))
|
||||
(sha256
|
||||
(base32 "1zdgkn0gkcphcsfqcqwcfqiqvkz12ljks46v3czpaysndz8icfip"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "hspec")))
|
||||
(inputs (list ghc-quickcheck ghc-hspec-core hspec-discover
|
||||
ghc-hspec-expectations))
|
||||
(home-page "http://hspec.github.io/")
|
||||
(home-page "https://hspec.github.io/")
|
||||
(synopsis "Testing Framework for Haskell")
|
||||
(description "This library provides the Hspec testing framework for
|
||||
Haskell, inspired by the Ruby library RSpec.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ghc-hspec-api
|
||||
(package
|
||||
(name "ghc-hspec-api")
|
||||
(version "2.11.12")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hspec-api" version))
|
||||
(sha256
|
||||
(base32 "1xn2b2hafyq6qm3zaia9nw27ir4cg8v2qn499bz2zwnp2vkjra07"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "hspec-api")))
|
||||
(inputs (list ghc-hspec-core))
|
||||
(native-inputs (list ghc-hspec))
|
||||
(home-page "https://hspec.github.io/")
|
||||
(synopsis "A Testing Framework for Haskell")
|
||||
(description
|
||||
"This package provides a stable API that can be used to extend Hspec's
|
||||
functionality.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ghc-hspec-contrib
|
||||
(package
|
||||
(name "ghc-hspec-contrib")
|
||||
(version "0.5.1.1")
|
||||
(version "0.5.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hspec-contrib" version))
|
||||
(sha256
|
||||
(base32 "1nyb5n2jiq920yyf3flzyxrs5xpfyppl3jn18zhviyysjjk5drpx"))))
|
||||
(base32 "0002xzvyh790iwf1y33d4nflrbp5sxvpsp010srcfryf1n3qx2b0"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "hspec-contrib")))
|
||||
(inputs (list ghc-hunit ghc-call-stack ghc-hspec-core))
|
||||
(native-inputs (list ghc-quickcheck ghc-hspec hspec-discover))
|
||||
(arguments (list #:tests? #f)) ; Fail to build.
|
||||
(home-page "https://hspec.github.io/")
|
||||
(synopsis "Contributed functionality for Hspec")
|
||||
(description "This package provides contributed Hspec extensions.")
|
||||
@@ -774,22 +814,25 @@ Haskell, inspired by the Ruby library RSpec.")
|
||||
(define-public ghc-hspec-expectations
|
||||
(package
|
||||
(name "ghc-hspec-expectations")
|
||||
(version "0.8.2")
|
||||
(version "0.8.4")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hspec-expectations" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1vxl9zazbaapijr6zmcj72j9wf7ka1pirrjbwddwwddg3zm0g5l1"))))
|
||||
(base32 "1zr1pqchcwglfr5dvcrgc1l5x924n9w09n2zr68dmkqf4dzdx3bv"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "hspec-expectations")))
|
||||
(inputs (list ghc-hunit ghc-call-stack))
|
||||
(arguments
|
||||
;; Tests depend on ghc-nanospec.
|
||||
(arguments '(#:tests? #f))
|
||||
(inputs (list ghc-hunit))
|
||||
(home-page "https://github.com/sol/hspec-expectations")
|
||||
`(#:tests? #f
|
||||
#:cabal-revision ("2"
|
||||
"14zzsjqcz1zbnvi50i82lx84nc8b5da7ar5cazzh44lklyag0ds2")))
|
||||
(home-page "https://github.com/hspec/hspec-expectations#readme")
|
||||
(synopsis "Catchy combinators for HUnit")
|
||||
(description "This library provides catchy combinators for HUnit, see
|
||||
(description
|
||||
"This library provides catchy combinators for HUnit, see
|
||||
@uref{https://github.com/sol/hspec-expectations#readme, the README}.")
|
||||
(license license:expat)))
|
||||
|
||||
@@ -854,13 +897,13 @@ implementations of cryptographic ciphers.")
|
||||
(define-public ghc-hedgehog
|
||||
(package
|
||||
(name "ghc-hedgehog")
|
||||
(version "1.1.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hedgehog" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0dbk75hk6hqpzkjdlpw3s63qhm42kqigij33p321by6xndb59jg1"))))
|
||||
(version "1.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "hedgehog" version))
|
||||
(sha256
|
||||
(base32 "0sl6x9q9kyrpv73565w9na9dm10wzxdl0qgiraqarffynfgn0hg9"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "hedgehog")))
|
||||
(inputs (list ghc-ansi-terminal
|
||||
@@ -875,8 +918,12 @@ implementations of cryptographic ciphers.")
|
||||
ghc-primitive
|
||||
ghc-random
|
||||
ghc-resourcet
|
||||
ghc-safe-exceptions
|
||||
ghc-transformers-base
|
||||
ghc-wl-pprint-annotated))
|
||||
(arguments
|
||||
`(#:cabal-revision ("2"
|
||||
"1m0b9m8dw5nw4b3w1jbp5fd0b0kqlyvvy3qsfxc7md77iafxq169")))
|
||||
(home-page "https://hedgehog.qa")
|
||||
(synopsis "Property-based testing in the spirt of QuickCheck")
|
||||
(description
|
||||
@@ -892,26 +939,16 @@ To get started quickly, see the examples:
|
||||
(define-public cabal-doctest
|
||||
(package
|
||||
(name "cabal-doctest")
|
||||
(version "1.0.9")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "cabal-doctest" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0wxs0xkspc80h0g8ks792lrzldxvcnhc9rja1j0k678ijs20hmjm"))))
|
||||
(version "1.0.11")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "cabal-doctest" version))
|
||||
(sha256
|
||||
(base32 "0gwjpwv2v7c7gs2dvf7ixsxx6likmgw5yi0fy4bqc0i7nkqg4bfw"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "cabal-doctest")))
|
||||
(arguments
|
||||
`(#:cabal-revision ("2"
|
||||
"0868js0qgfhvmyw4hjzrvmlzyqsm8dfsbmqhybxb90x44xi3r0i1")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'configure 'update-constraints
|
||||
(lambda _
|
||||
(substitute* "cabal-doctest.cabal"
|
||||
(("\\b(Cabal|base)\\s+[^,]+" all dep)
|
||||
dep)))))))
|
||||
(home-page "https://github.com/haskellari/cabal-doctest")
|
||||
(home-page "https://github.com/ulidtko/cabal-doctest")
|
||||
(synopsis "Setup.hs helper for running doctests")
|
||||
(description
|
||||
"To properly work, the @code{doctest} package needs plenty of
|
||||
@@ -971,13 +1008,13 @@ random testing, and hybrids of the two.")
|
||||
(define-public ghc-inspection-testing
|
||||
(package
|
||||
(name "ghc-inspection-testing")
|
||||
(version "0.4.6.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "inspection-testing" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0mxff0v3ciccbk4b8kxnh4752fzbwn7213qd8xji0csv6gi2w83y"))))
|
||||
(version "0.6.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "inspection-testing" version))
|
||||
(sha256
|
||||
(base32 "0zi1q86sd9jy5dpqfs2j71acdl7kvik0ps78xirpdhyldhwwyqws"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "inspection-testing")))
|
||||
(home-page "https://github.com/nomeata/inspection-testing")
|
||||
@@ -1010,33 +1047,33 @@ examples and more information.")
|
||||
(name "ghc-quickcheck-classes")
|
||||
(version "0.6.5.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "quickcheck-classes" version))
|
||||
(sha256
|
||||
(base32 "19iw15mvb7gws3ljdxqwsbb4pmfc0sfflf8szgmrhiqr3k82mqv2"))))
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "quickcheck-classes" version))
|
||||
(sha256
|
||||
(base32 "19iw15mvb7gws3ljdxqwsbb4pmfc0sfflf8szgmrhiqr3k82mqv2"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "quickcheck-classes")))
|
||||
(inputs
|
||||
(list ghc-quickcheck
|
||||
ghc-primitive
|
||||
ghc-primitive-addr
|
||||
ghc-quickcheck-classes-base
|
||||
ghc-aeson
|
||||
ghc-semigroupoids
|
||||
ghc-semirings
|
||||
ghc-vector))
|
||||
(native-inputs
|
||||
(list ghc-base-orphans
|
||||
ghc-tagged
|
||||
ghc-base-orphans
|
||||
ghc-tagged
|
||||
ghc-tasty
|
||||
ghc-tasty-quickcheck))
|
||||
(inputs (list ghc-quickcheck
|
||||
ghc-primitive
|
||||
ghc-primitive-addr
|
||||
ghc-quickcheck-classes-base
|
||||
ghc-semigroups-bootstrap
|
||||
ghc-fail
|
||||
ghc-tagged
|
||||
ghc-aeson
|
||||
ghc-semigroupoids
|
||||
ghc-semirings
|
||||
ghc-vector))
|
||||
(native-inputs (list ghc-base-orphans ghc-base-orphans ghc-tasty
|
||||
ghc-tasty-quickcheck))
|
||||
(arguments
|
||||
`(#:cabal-revision ("3"
|
||||
"1pawam5rsdcdv21fqc87khzqjm0ixwzklfxd6gk3b2qrr5q66bn5")))
|
||||
(home-page "https://github.com/andrewthad/quickcheck-classes#readme")
|
||||
(synopsis "QuickCheck common typeclasses")
|
||||
(description
|
||||
"This library provides QuickCheck properties to ensure that typeclass
|
||||
"This library provides QuickCheck properties to ensure that typeclass
|
||||
instances adhere to the set of laws that they are supposed to. There are
|
||||
other libraries that do similar things, such as @code{genvalidity-hspec} and
|
||||
@code{checkers}. This library differs from other solutions by not introducing
|
||||
@@ -1052,24 +1089,26 @@ constraints more cleanly.")
|
||||
(name "ghc-quickcheck-classes-base")
|
||||
(version "0.6.2.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "quickcheck-classes-base" version))
|
||||
(sha256
|
||||
(base32 "16c6gq4cqpkwnq1pzkhm6r7mrwk4an50ha5w77bmiia2qkhla6ch"))))
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "quickcheck-classes-base" version))
|
||||
(sha256
|
||||
(base32 "16c6gq4cqpkwnq1pzkhm6r7mrwk4an50ha5w77bmiia2qkhla6ch"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "quickcheck-classes-base")))
|
||||
(inputs
|
||||
(list ghc-quickcheck
|
||||
ghc-contravariant
|
||||
ghc-bifunctors
|
||||
ghc-semigroups
|
||||
ghc-fail
|
||||
ghc-tagged))
|
||||
(inputs (list ghc-quickcheck
|
||||
ghc-contravariant
|
||||
ghc-bifunctors
|
||||
ghc-semigroups-bootstrap
|
||||
ghc-fail
|
||||
ghc-tagged))
|
||||
(arguments
|
||||
`(#:cabal-revision ("1"
|
||||
"1p3v38jhpx0r6rnvaspkkivl8xyq2mq4xnmycgmkj1gr77vplkdr")))
|
||||
(home-page "https://github.com/andrewthad/quickcheck-classes#readme")
|
||||
(synopsis "QuickCheck common typeclasses from `base`")
|
||||
(description
|
||||
"This library is a minimal variant of `quickcheck-classes` that only
|
||||
"This library is a minimal variant of `quickcheck-classes` that only
|
||||
provides laws for typeclasses from `base`. The main purpose of splitting this
|
||||
out is so that `primitive` can depend on `quickcheck-classes-base` in its test
|
||||
suite, avoiding the circular dependency that arises if `quickcheck-classes` is
|
||||
@@ -1087,67 +1126,61 @@ this library uses the higher-kinded typeclasses
|
||||
(define-public ghc-doctest-lib
|
||||
(package
|
||||
(name "ghc-doctest-lib")
|
||||
(version "0.1")
|
||||
(version "0.1.1.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "doctest-lib" version))
|
||||
(sha256
|
||||
(base32 "1vswam0dhw52dihgnzirh18gqs8rj8h6jd7pl6y1mg2f9f9zmih2"))))
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "doctest-lib" version))
|
||||
(sha256
|
||||
(base32 "1hb3zx1xzib3v41blnwcbhc2v0rzwdzq7gm4sajqndimwjkkxc67"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "doctest-lib")))
|
||||
(home-page "https://hub.darcs.net/thielema/doctest-lib/")
|
||||
(synopsis "Parts of doctest exposed as library")
|
||||
(description
|
||||
"Parts of doctest exposed as library. For use with the doctest-extract utility.")
|
||||
"Parts of doctest exposed as library. For use with the doctest-extract utility.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ghc-doctest-exitcode-stdio
|
||||
(package
|
||||
(name "ghc-doctest-exitcode-stdio")
|
||||
(version "0.0")
|
||||
(version "0.0.0.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "doctest-exitcode-stdio" version))
|
||||
(sha256
|
||||
(base32 "1g3c7yrqq2mwqbmvs8vkx1a3cf0p0x74b7fnn344dsk7bsfpgv0x"))))
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "doctest-exitcode-stdio" version))
|
||||
(sha256
|
||||
(base32 "0kg5xiw4giyvqpcj6cxqqnysvixhxlwm0pbg3qks8dzwb5w79dvk"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "doctest-exitcode-stdio")))
|
||||
(inputs
|
||||
(list ghc-doctest-lib ghc-quickcheck ghc-semigroups))
|
||||
(arguments
|
||||
`(#:cabal-revision ("1"
|
||||
"1065s8bch6zhl6mc8nhvfpwd1irmjd04z7xgycbpihc14x4ijim3")))
|
||||
(inputs (list ghc-doctest-lib ghc-quickcheck ghc-semigroups))
|
||||
(home-page "https://hub.darcs.net/thielema/doctest-exitcode-stdio/")
|
||||
(synopsis "Run Doctests in a @code{Cabal.Test.exitcode-stdio} environment")
|
||||
(description
|
||||
"This package allows on to run Doctests in a Cabal.Test.exitcode-stdio
|
||||
"This package allows on to run Doctests in a Cabal.Test.exitcode-stdio
|
||||
environment.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public ghc-tasty-silver
|
||||
(package
|
||||
(name "ghc-tasty-silver")
|
||||
(version "3.3.1.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty-silver" version))
|
||||
(sha256
|
||||
(base32
|
||||
"13j0zs0ciijv9q2nncna1gbgsgw2g7xc228hzmqic1750n3ybz9m"))))
|
||||
(version "3.3.2.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty-silver" version))
|
||||
(sha256
|
||||
(base32 "01w3576kymglcddinh10m1wgy71dia49k2pnw5y1c97jjrhanf17"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "tasty-silver")))
|
||||
(inputs (list ghc-ansi-terminal
|
||||
ghc-async
|
||||
ghc-optparse-applicative
|
||||
ghc-process-extras
|
||||
ghc-regex-tdfa
|
||||
ghc-silently
|
||||
ghc-tagged
|
||||
ghc-tasty
|
||||
ghc-temporary
|
||||
ghc-semigroups))
|
||||
ghc-temporary))
|
||||
(native-inputs (list ghc-tasty-hunit))
|
||||
(home-page "https://github.com/phile314/tasty-silver")
|
||||
(synopsis "Fancy test runner, including support for golden tests")
|
||||
@@ -1163,16 +1196,19 @@ result of golden tests.")
|
||||
(define-public ghc-tasty-inspection-testing
|
||||
(package
|
||||
(name "ghc-tasty-inspection-testing")
|
||||
(version "0.1.0.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty-inspection-testing" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0p46w44f19w7lvdzyg3vq6qzix0rjp8p23ilxz82dviq38lgmifp"))))
|
||||
(version "0.2.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tasty-inspection-testing" version))
|
||||
(sha256
|
||||
(base32 "0wl2xlnbmqdkwhi4ic6a4q4lxf9qg433lidi8d0hlp3ykrjpbcay"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "tasty-inspection-testing")))
|
||||
(inputs (list ghc-inspection-testing ghc-tasty))
|
||||
(arguments
|
||||
`(#:cabal-revision ("2"
|
||||
"0z9al0hyq381fw146agbpz7rf24rwms1w91m7s0k1w3xbfw16l9n")))
|
||||
(home-page "https://github.com/Bodigrim/tasty-inspection-testing")
|
||||
(synopsis "Inspection testing support for tasty")
|
||||
(description
|
||||
@@ -1182,13 +1218,13 @@ result of golden tests.")
|
||||
(define-public ghc-proctest
|
||||
(package
|
||||
(name "ghc-proctest")
|
||||
(version "0.1.3.0")
|
||||
(version "0.1.3.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "proctest" version))
|
||||
(sha256
|
||||
(base32
|
||||
"02iz323arx9zwclvspgaaqz81bp6jdnj89pjm08n2gamg39zsbdn"))))
|
||||
"0yvhc0l5aj170ymhjx4ig0im0yd7wfa150m5lqhabr8j7cf16l7y"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "proctest")))
|
||||
(inputs (list ghc-hunit ghc-hspec ghc-quickcheck))
|
||||
|
||||
@@ -62,18 +62,19 @@ format.")
|
||||
(package
|
||||
(name "ghc-asn1-encoding")
|
||||
(version "0.9.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "asn1-encoding" version))
|
||||
(sha256
|
||||
(base32
|
||||
"02nsr30h5yic1mk7znf0q4z3n560ip017n60hg7ya25rsfmxxy6r"))))
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "asn1-encoding" version))
|
||||
(sha256
|
||||
(base32 "02nsr30h5yic1mk7znf0q4z3n560ip017n60hg7ya25rsfmxxy6r"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "asn1-encoding")))
|
||||
(inputs
|
||||
(list ghc-hourglass ghc-asn1-types))
|
||||
(native-inputs
|
||||
(list ghc-tasty ghc-tasty-quickcheck))
|
||||
(inputs (list ghc-hourglass ghc-asn1-types))
|
||||
(native-inputs (list ghc-tasty ghc-tasty-quickcheck))
|
||||
(arguments
|
||||
`(#:cabal-revision ("2"
|
||||
"16503ryhq15f2rfdav2qnkq11dg2r3vk3f9v64q9dmxf8dh8zv97")))
|
||||
(home-page "https://github.com/vincenthz/hs-asn1")
|
||||
(synopsis "ASN1 data reader and writer in RAW, BER and DER forms")
|
||||
(description
|
||||
@@ -111,15 +112,18 @@ when ASN1 pattern matching is not convenient.")
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "crypto-api" version))
|
||||
(sha256
|
||||
(base32
|
||||
"19bsmkqkpnvh01b77pmyarx00fic15j4hvg4pzscrj4prskrx2i9"))))
|
||||
(base32 "19bsmkqkpnvh01b77pmyarx00fic15j4hvg4pzscrj4prskrx2i9"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "crypto-api")))
|
||||
(inputs (list ghc-cereal ghc-tagged ghc-entropy))
|
||||
(arguments
|
||||
`(#:cabal-revision ("1"
|
||||
"1z6n1sa5pn3iqvqjrd8hv4bc2pxzsrhm5sh0l8z7g9lbqp6w0wp5")))
|
||||
(home-page "https://github.com/TomMD/crypto-api")
|
||||
(synopsis "Provides generic interface for cryptographic operations
|
||||
for Haskell")
|
||||
(description "This Haskell package provides a generic interface for
|
||||
(description
|
||||
"This Haskell package provides a generic interface for
|
||||
cryptographic operations (hashes, ciphers, randomness).
|
||||
|
||||
Maintainers of hash and cipher implementations are encouraged to add instances
|
||||
@@ -197,13 +201,15 @@ that hides the C implementation.")
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "cryptohash-md5" version))
|
||||
(sha256
|
||||
(base32
|
||||
"018g13hkmq5782i24b4518hcd926fl6x6fh5hd7b9wlxwc5dn21v"))))
|
||||
(base32 "018g13hkmq5782i24b4518hcd926fl6x6fh5hd7b9wlxwc5dn21v"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "cryptohash-md5")))
|
||||
(native-inputs (list ghc-base16-bytestring ghc-puremd5 ghc-tasty
|
||||
ghc-tasty-hunit ghc-tasty-quickcheck))
|
||||
(home-page "https://github.com/hvr/cryptohash-md5")
|
||||
ghc-tasty-quickcheck ghc-tasty-hunit))
|
||||
(arguments
|
||||
`(#:cabal-revision ("6"
|
||||
"0m7f9mgw4w9vcch37ja9zgbn0knq8rjppqr9x2ylkcdxfdnmhhif")))
|
||||
(home-page "https://github.com/haskell-hvr/cryptohash-md5")
|
||||
(synopsis "MD5 implementation for Haskell")
|
||||
(description "This Haskell package provides implementation of MD5.")
|
||||
(license license:bsd-3)))
|
||||
@@ -212,20 +218,20 @@ that hides the C implementation.")
|
||||
(package
|
||||
(name "ghc-cryptohash-sha1")
|
||||
(version "0.11.101.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "cryptohash-sha1" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0h9jl9v38gj0vnscqx7xdklk634p05fa6z2pcvknisq2mnbjq154"))))
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "cryptohash-sha1" version))
|
||||
(sha256
|
||||
(base32 "0h9jl9v38gj0vnscqx7xdklk634p05fa6z2pcvknisq2mnbjq154"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "cryptohash-sha1")))
|
||||
(native-inputs (list ghc-base16-bytestring ghc-sha ghc-tasty
|
||||
ghc-tasty-quickcheck ghc-tasty-hunit))
|
||||
(arguments
|
||||
`(#:cabal-revision ("1"
|
||||
"0bz9rfl7b2iwn45m0lxcmsyi5rrv3xdgzx2lzr79bds91dw6i25b")))
|
||||
(home-page "https://github.com/hvr/cryptohash-sha1")
|
||||
`(#:cabal-revision ("6"
|
||||
"1cxdw2y10z4v0mz91wki7f233jziipx85j4qy5msig4nv3djkprb")))
|
||||
(home-page "https://github.com/haskell-hvr/cryptohash-sha1")
|
||||
(synopsis "SHA-1 implementation for Haskell")
|
||||
(description
|
||||
"This Haskell package provides an incremental and one-pass,
|
||||
@@ -246,20 +252,18 @@ the C implementation.")
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "cryptohash-sha256" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1xkb7iqplbw4fy1122p79xf1zcb7k44rl0wmfj1q06l7cdqxr9vk"))))
|
||||
(base32 "1xkb7iqplbw4fy1122p79xf1zcb7k44rl0wmfj1q06l7cdqxr9vk"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "cryptohash-sha256")))
|
||||
(native-inputs (list ghc-base16-bytestring ghc-sha ghc-tasty
|
||||
ghc-tasty-quickcheck ghc-tasty-hunit))
|
||||
(arguments
|
||||
`(#:cabal-revision
|
||||
("1" "1hyzqv30rpj920ddnr0zypyjjlh52vyp2d140pn2byayj820rkgs")
|
||||
#:tests? #f)) ; TODO: tasty ==1.1.*
|
||||
(native-inputs
|
||||
(list ghc-base16-bytestring ghc-sha ghc-tasty ghc-tasty-hunit
|
||||
ghc-tasty-quickcheck))
|
||||
(home-page "https://github.com/hvr/cryptohash-sha1")
|
||||
`(#:cabal-revision ("6"
|
||||
"01s12sl5mxvraj5fj3cs0pkb03pm8xpjz13y09dpl7i6rv6f578f")))
|
||||
(home-page "https://github.com/haskell-hvr/cryptohash-sha256")
|
||||
(synopsis "SHA-256 implementation for Haskell")
|
||||
(description "This Haskell package provides an incremental and
|
||||
(description
|
||||
"This Haskell package provides an incremental and
|
||||
one-pass, pure API to the @uref{https://en.wikipedia.org/wiki/SHA-2,
|
||||
SHA-256 cryptographic hash algorithm}, with performance close to the
|
||||
fastest implementations available in other languages.
|
||||
@@ -272,12 +276,12 @@ the C implementation.")
|
||||
(package
|
||||
(name "ghc-cryptonite")
|
||||
(version "0.30")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "cryptonite" version))
|
||||
(sha256
|
||||
(base32
|
||||
"07bb97iszhnrfddh5ql6p3dqd0c13xycjw5n2kljw7d0ia59q2an"))))
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "cryptonite" version))
|
||||
(sha256
|
||||
(base32 "07bb97iszhnrfddh5ql6p3dqd0c13xycjw5n2kljw7d0ia59q2an"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "cryptonite")))
|
||||
(inputs (list ghc-memory ghc-basement))
|
||||
@@ -295,13 +299,13 @@ generators, and more.")
|
||||
(define-public ghc-curve25519
|
||||
(package
|
||||
(name "ghc-curve25519")
|
||||
(version "0.2.7")
|
||||
(version "0.2.8.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "curve25519" version))
|
||||
(sha256
|
||||
(base32 "1p8b1lppkvc19974hr43lcqdi4nj55j2nf7gsnp8dn7gyf23aayq"))))
|
||||
(base32 "0p2rxad477cxbpxryvp78v8nrrf5gm35106jbqrj5cjgksappkdj"))))
|
||||
(build-system haskell-build-system)
|
||||
(native-inputs
|
||||
(list ghc-hunit
|
||||
@@ -326,19 +330,17 @@ elsewhere.")
|
||||
(define-public ghc-digest
|
||||
(package
|
||||
(name "ghc-digest")
|
||||
(version "0.0.1.7")
|
||||
(version "0.0.2.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "digest" version))
|
||||
(sha256
|
||||
(base32 "02jzw0bsng87y1n2kgpy7vb30lvqsnpbfd8dpg4hmvbg9s06qgdj"))))
|
||||
(base32 "163418p50bqdxn8ajzj6x3455xbch9jq1w6psbkdz5qzw017py6b"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "digest")))
|
||||
(arguments
|
||||
`(#:extra-directories ("zlib")
|
||||
#:cabal-revision ("1"
|
||||
"0wh34kyag2vhwvsdwv8qmvm13gy32nc94yfyqfdnl67nyc2sx8wl")))
|
||||
`(#:extra-directories ("zlib")))
|
||||
(inputs (list zlib))
|
||||
(native-inputs (list pkg-config))
|
||||
(home-page "http://hackage.haskell.org/package/digest")
|
||||
@@ -352,13 +354,13 @@ are implemented as FFI bindings to efficient code from zlib.")
|
||||
(define-public ghc-entropy
|
||||
(package
|
||||
(name "ghc-entropy")
|
||||
(version "0.4.1.10")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "entropy" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1rbx4ydabrjs8kkdg9laznkh9nisiq6b5z93vnp9bh6iy59ivb45"))))
|
||||
(version "0.4.1.11")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "entropy" version))
|
||||
(sha256
|
||||
(base32 "1slj5n783k2amsx2hqs5qwvcw4rgfhdhgmiyg7cii0wg4w0mmpgm"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "entropy")))
|
||||
(home-page "https://github.com/TomMD/entropy")
|
||||
@@ -415,6 +417,35 @@ the MD5 digest (hash) algorithm. This now supports the @code{crypto-api} class
|
||||
interface.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public ghc-rsa
|
||||
(package
|
||||
(name "ghc-rsa")
|
||||
(version "2.4.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "RSA" version))
|
||||
(sha256
|
||||
(base32 "0hchsqrxpfw7mqrqwscfy8ig1w2di6w3nxpzi873w0gibv2diibj"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "RSA")))
|
||||
(inputs (list ghc-crypto-api ghc-crypto-pubkey-types ghc-sha))
|
||||
(native-inputs (list ghc-quickcheck ghc-tagged ghc-test-framework
|
||||
ghc-test-framework-quickcheck2))
|
||||
(arguments
|
||||
`(#:cabal-revision ("2"
|
||||
"090yzm99fmh7c6z4m9hbkasqhc3xlw104g2b6wnk77n1abd13ryj")))
|
||||
(home-page "http://hackage.haskell.org/package/RSA")
|
||||
(synopsis
|
||||
"Implementation of RSA, using the padding schemes of PKCS#1 v2.1.")
|
||||
(description
|
||||
"This library implements the RSA encryption and signature algorithms for
|
||||
arbitrarily-sized @code{ByteStrings}. While the implementations work, they are
|
||||
not necessarily the fastest ones on the planet. Particularly key generation.
|
||||
The algorithms included are based of RFC 3447, or the Public-Key Cryptography
|
||||
Standard for RSA, version 2.1 (a.k.a, PKCS#1 v2.1).")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public ghc-sha
|
||||
(package
|
||||
(name "ghc-sha")
|
||||
@@ -594,6 +625,24 @@ implementation. If it matters for your case, you should make sure you have
|
||||
AES-NI available, or you'll need to use a different implementation.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public ghc-crypto-pubkey-types
|
||||
(package
|
||||
(name "ghc-crypto-pubkey-types")
|
||||
(version "0.4.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "crypto-pubkey-types" version))
|
||||
(sha256
|
||||
(base32 "0q0wlzjmpx536h1zcdzrpxjkvqw8abj8z0ci38138kpch4igbnby"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "crypto-pubkey-types")))
|
||||
(inputs (list ghc-asn1-types ghc-asn1-encoding))
|
||||
(home-page "http://github.com/vincenthz/hs-crypto-pubkey-types")
|
||||
(synopsis "Generic cryptography Public keys algorithm types")
|
||||
(description "Generic cryptography public keys algorithm types.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public ghc-crypto-random
|
||||
(package
|
||||
(name "ghc-crypto-random")
|
||||
@@ -617,13 +666,13 @@ abstraction for CPRNGs.")
|
||||
(define-public ghc-crypton
|
||||
(package
|
||||
(name "ghc-crypton")
|
||||
(version "0.34")
|
||||
(version "1.0.4")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "crypton" version))
|
||||
(sha256
|
||||
(base32 "1mhypjhzn95in853bp7ary0a2xc6lsji6j8hrrgn2mfa4ilq8i24"))))
|
||||
(base32 "06h1qjvqd8gmiyzvh31sc061vcgns101l0774c44a8k44015925l"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "crypton")))
|
||||
(inputs (list ghc-memory ghc-basement))
|
||||
@@ -653,13 +702,13 @@ abstraction for CPRNGs.")
|
||||
(define-public ghc-crypton-x509
|
||||
(package
|
||||
(name "ghc-crypton-x509")
|
||||
(version "1.7.6")
|
||||
(version "1.7.7")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "crypton-x509" version))
|
||||
(sha256
|
||||
(base32 "1zyaz0krf08g36g30zr5wn8f2x51l4dj2zcjnhpiw9h05p54mdzb"))))
|
||||
(base32 "10pkva9wvm6ih48bprxlnyhnn3nr6xq9dhkrk4hfxpsaij6f9v7g"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "crypton-x509")))
|
||||
(inputs (list ghc-memory
|
||||
@@ -669,13 +718,7 @@ abstraction for CPRNGs.")
|
||||
ghc-asn1-encoding
|
||||
ghc-asn1-parse
|
||||
ghc-crypton))
|
||||
(native-inputs (list ghc-tasty ghc-tasty-quickcheck ghc-x509))
|
||||
(arguments
|
||||
`(#:cabal-revision ("1"
|
||||
"10a2x47znhbayyfr6fqgq27623akpycyjbfxz4hnavavf1x6ary5")
|
||||
;; build phase fails when tests are activated.
|
||||
;; See https://github.com/kazu-yamamoto/crypton-certificate/pull/7
|
||||
#:tests? #f))
|
||||
(native-inputs (list ghc-tasty ghc-tasty-quickcheck))
|
||||
(home-page "https://github.com/kazu-yamamoto/crypton-certificate")
|
||||
(synopsis "X509 reader and writer")
|
||||
(description "This package provides generic X509 support for Haskell.")
|
||||
@@ -684,13 +727,13 @@ abstraction for CPRNGs.")
|
||||
(define-public ghc-crypton-x509-store
|
||||
(package
|
||||
(name "ghc-crypton-x509-store")
|
||||
(version "1.6.9")
|
||||
(version "1.6.11")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "crypton-x509-store" version))
|
||||
(sha256
|
||||
(base32 "0vr5b9cyf9x016wn1g0bryslf5nz8jq2sy8r3llwqfg02apihqiy"))))
|
||||
(base32 "07vq7f883cm5krqz2kc0qkh9ks54jknrwdqvfqsk91s12b693a83"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "crypton-x509-store")))
|
||||
(inputs (list ghc-pem ghc-asn1-types ghc-asn1-encoding ghc-crypton
|
||||
@@ -727,24 +770,25 @@ storage methods, and accessors.")
|
||||
(define-public ghc-crypton-x509-validation
|
||||
(package
|
||||
(name "ghc-crypton-x509-validation")
|
||||
(version "1.6.12")
|
||||
(version "1.6.14")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "crypton-x509-validation" version))
|
||||
(sha256
|
||||
(base32 "1xjhwvmkcy47a6xiqxb3xy944ca7g660203jdrz5xzd46zibfq0f"))))
|
||||
(base32 "07b09kgrd3m5ahxpj458r5ycd30bz8ldwjwf19mdcnfv4x0kj3pd"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "crypton-x509-validation")))
|
||||
(inputs (list ghc-memory
|
||||
ghc-hourglass
|
||||
ghc-data-default-class
|
||||
ghc-data-default
|
||||
ghc-pem
|
||||
ghc-asn1-types
|
||||
ghc-asn1-encoding
|
||||
ghc-crypton-x509
|
||||
ghc-crypton-x509-store
|
||||
ghc-crypton))
|
||||
ghc-crypton
|
||||
ghc-iproute))
|
||||
(native-inputs (list ghc-tasty ghc-tasty-hunit))
|
||||
(home-page "https://github.com/kazu-yamamoto/crypton-certificate")
|
||||
(synopsis "X.509 Certificate and CRL validation")
|
||||
@@ -752,6 +796,44 @@ storage methods, and accessors.")
|
||||
and @dfn{Certificates revocation list} (CRL) validation.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public ghc-crypton-socks
|
||||
(package
|
||||
(name "ghc-crypton-socks")
|
||||
(version "0.6.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "crypton-socks" version))
|
||||
(sha256
|
||||
(base32 "0fwzlvndyxjwhxambxdjzzm63yvb6jzsg53dkv3i6x17biz0hdm8"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "crypton-socks")))
|
||||
(inputs (list ghc-cereal ghc-network ghc-network-bsd))
|
||||
(home-page "http://github.com/mpilgrem/crypton-socks")
|
||||
(synopsis "SOCKS Protocol Version 5")
|
||||
(description
|
||||
"This package provides a library implementing SOCKS Protocol Version 5.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public ghc-crypto-token
|
||||
(package
|
||||
(name "ghc-crypto-token")
|
||||
(version "0.1.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "crypto-token" version))
|
||||
(sha256
|
||||
(base32 "18xphlvn6wzyi6lqrvm5vic97pkcbiph1938p5l1mb22rj5215zm"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "crypto-token")))
|
||||
(inputs (list ghc-crypton ghc-memory ghc-network-byte-order))
|
||||
(native-inputs (list ghc-hspec hspec-discover))
|
||||
(home-page "http://hackage.haskell.org/package/crypto-token")
|
||||
(synopsis "crypto tokens")
|
||||
(description "Encrypted tokens/tickets to keep state in the client side.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public ghc-cprng-aes
|
||||
(package
|
||||
(name "ghc-cprng-aes")
|
||||
@@ -804,20 +886,19 @@ percent.
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "ed25519" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0v8msqvgzimhs7p5ri25hrb1ni2wvisl5rmdxy89fc59py79b9fq"))))
|
||||
(base32 "0v8msqvgzimhs7p5ri25hrb1ni2wvisl5rmdxy89fc59py79b9fq"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "ed25519")))
|
||||
(native-inputs (list ghc-quickcheck ghc-doctest))
|
||||
(arguments
|
||||
`(#:cabal-revision
|
||||
("6" "0qyx6cl52fnll8lp6v9133wfvv3zhvq7v2crn441mng520j9wp48")
|
||||
;; We omit these test suites because they require old versions of
|
||||
;; packages and packages we do not have.
|
||||
#:configure-flags
|
||||
'("--flags=-test-hlint -test-doctests -test-properties")))
|
||||
(home-page "http://thoughtpolice.github.com/hs-ed25519")
|
||||
`(#:cabal-revision ("9"
|
||||
"0y5vfdcys18waa5k5zxiq9n8jq0l05j76riml23i0gxmwgdhsmgi")
|
||||
;; the tests don't work with current versions of the test frameworks
|
||||
#:tests? #f))
|
||||
(home-page "https://github.com/thoughtpolice/hs-ed25519/")
|
||||
(synopsis "Ed25519 cryptographic signatures")
|
||||
(description "This package provides a simple, fast, self-contained
|
||||
(description
|
||||
"This package provides a simple, fast, self-contained
|
||||
copy of the Ed25519 public-key signature system with a clean interface.
|
||||
It also includes support for detached signatures, and thorough
|
||||
documentation on the design and implementation, including usage
|
||||
@@ -827,29 +908,41 @@ guidelines.")
|
||||
(define-public ghc-tls
|
||||
(package
|
||||
(name "ghc-tls")
|
||||
(version "1.5.8")
|
||||
(version "2.1.8")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tls" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0rxdv8ab98kd4nqql7djmmi51k4vayq21s38s43sx3rzn0iyla3b"))))
|
||||
"1csdy3426lva1a5f7gh9qm96vzfraqj91jbxlm79wbf1jsdzfhsq"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "tls")))
|
||||
(inputs (list ghc-cereal
|
||||
ghc-data-default-class
|
||||
ghc-memory
|
||||
ghc-cryptonite
|
||||
ghc-asn1-types
|
||||
(inputs (list ghc-asn1-types
|
||||
ghc-asn1-encoding
|
||||
ghc-x509
|
||||
ghc-x509-store
|
||||
ghc-x509-validation
|
||||
ghc-async
|
||||
ghc-hourglass
|
||||
ghc-network))
|
||||
(native-inputs (list ghc-tasty ghc-tasty-quickcheck ghc-quickcheck))
|
||||
(home-page "http://github.com/vincenthz/hs-tls")
|
||||
ghc-base16-bytestring
|
||||
ghc-cereal
|
||||
ghc-crypton
|
||||
ghc-crypton-x509
|
||||
ghc-crypton-x509-store
|
||||
ghc-crypton-x509-validation
|
||||
ghc-data-default
|
||||
ghc-memory
|
||||
ghc-network
|
||||
ghc-serialise
|
||||
ghc-transformers
|
||||
ghc-unix-time
|
||||
ghc-zlib))
|
||||
(native-inputs (list ghc-quickcheck
|
||||
ghc-asn1-types
|
||||
ghc-async
|
||||
ghc-crypton
|
||||
ghc-crypton-x509
|
||||
ghc-crypton-x509-validation
|
||||
ghc-hourglass
|
||||
ghc-hspec
|
||||
ghc-serialise
|
||||
hspec-discover))
|
||||
(home-page "http://github.com/haskell-tls/hs-tls")
|
||||
(synopsis "TLS/SSL protocol native implementation (Server and Client)")
|
||||
(description
|
||||
"Native Haskell TLS and SSL protocol implementation for server and client.
|
||||
@@ -861,43 +954,6 @@ Ephemeral (Elliptic curve and regular) Diffie Hellman key exchanges, and many
|
||||
extensions.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public ghc-tls-1.9
|
||||
(package
|
||||
(name "ghc-tls")
|
||||
(version "1.9.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "tls" version))
|
||||
(sha256
|
||||
(base32 "0gj3af9sqd0bw7dpcqfyvbslpxsk2ij00a77kl710fwhw35vj1an"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "tls")))
|
||||
(inputs (list ghc-cereal
|
||||
ghc-data-default-class
|
||||
ghc-memory
|
||||
ghc-crypton
|
||||
ghc-asn1-types
|
||||
ghc-asn1-encoding
|
||||
ghc-crypton-x509
|
||||
ghc-crypton-x509-store
|
||||
ghc-crypton-x509-validation
|
||||
ghc-async
|
||||
ghc-unix-time
|
||||
ghc-network))
|
||||
(native-inputs (list ghc-tasty ghc-tasty-quickcheck ghc-quickcheck))
|
||||
(home-page "https://github.com/haskell-tls/hs-tls")
|
||||
(synopsis "TLS/SSL protocol native implementation (server and client)")
|
||||
(description
|
||||
"This package provides a native Haskell TLS and SSL protocol
|
||||
implementation for server and client. It provides a high-level implementation
|
||||
of a sensitive security protocol, eliminating a common set of security issues
|
||||
through the use of the advanced type system, high level constructions and
|
||||
common Haskell features. It currently implements the SSL3.0, TLS1.0, TLS1.1
|
||||
and TLS1.2 protocol, and supports RSA and Ephemeral (Elliptic curve and
|
||||
regular) Diffie Hellman key exchanges, and many extensions.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public ghc-hsopenssl
|
||||
(package
|
||||
(name "ghc-hsopenssl")
|
||||
@@ -960,17 +1016,14 @@ the tls package, and borrows some ideas from x509-system.")
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "openssl-streams" version))
|
||||
(sha256
|
||||
(base32
|
||||
"10pnnpzgb5xr811kc9qdk7h2cgn6hk2yiyhnzz8f8p0fjzc0pwjm"))))
|
||||
(base32 "10pnnpzgb5xr811kc9qdk7h2cgn6hk2yiyhnzz8f8p0fjzc0pwjm"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "openssl-streams")))
|
||||
(inputs
|
||||
(list ghc-hsopenssl ghc-io-streams ghc-network))
|
||||
(native-inputs
|
||||
(list ghc-hunit ghc-test-framework ghc-test-framework-hunit))
|
||||
(inputs (list ghc-hsopenssl ghc-io-streams ghc-network))
|
||||
(native-inputs (list ghc-hunit ghc-test-framework ghc-test-framework-hunit))
|
||||
(arguments
|
||||
`(#:cabal-revision ("1"
|
||||
"0vfawnfcjrw29qg1n7k6z6bk4bmnk869gjlr9mxw4mzxgl80b2vp")))
|
||||
`(#:cabal-revision ("3"
|
||||
"1vizl9yajkbd59rrnfb38xwq7hfj36avbv6vwqnkhbvz3qaj3dwg")))
|
||||
(home-page "https://hackage.haskell.org/package/openssl-streams")
|
||||
(synopsis "OpenSSL network support for io-streams")
|
||||
(description "This library contains io-streams routines for secure
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1626,12 +1626,6 @@ SRC_HC_OPTS += -optc-mno-outline-atomics
|
||||
(file-pattern ".*\\.conf\\.d$")
|
||||
(file-type 'directory)))))))
|
||||
|
||||
;; Versions newer than ghc defined below (i.e. the compiler
|
||||
;; haskell-build-system uses) should use ghc-next as their name to
|
||||
;; ensure ghc (without version specification) and ghc-* packages are
|
||||
;; always compatible. See https://issues.guix.gnu.org/issue/47335.
|
||||
(define-public ghc ghc-9.2)
|
||||
|
||||
;; 9.4 is the last version to support the make-based build system,
|
||||
;; but it boot with 9.2, only 9.0 is supported.
|
||||
(define ghc-bootstrap-for-9.4 ghc-9.0)
|
||||
@@ -1695,22 +1689,24 @@ SRC_HC_OPTS += -optc-mno-outline-atomics
|
||||
(let ((base ghc-9.2))
|
||||
(package
|
||||
(inherit base)
|
||||
(name "ghc-next")
|
||||
(version "9.4.4")
|
||||
(name "ghc")
|
||||
(version "9.4.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://www.haskell.org/ghc/dist/" version
|
||||
"/ghc-" version "-src.tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1qk7rlqf02s3b6m6sqqngmjq1mxnrz88h159lz6k25gddmdg5kp8"))
|
||||
"0nlhx2cbq1jh2yr6zk475lavjkh9sncj57qp77p51pkfad4kkxpa"))
|
||||
(patches (search-patches "ghc-9-StgCRunAsm-only-when-needed.patch"))))
|
||||
(arguments
|
||||
(substitute-keyword-arguments arguments
|
||||
((#:phases phases '%standard-phases)
|
||||
#~(modify-phases #$phases
|
||||
;; Files don’t exist any more.
|
||||
(delete 'skip-tests)))))
|
||||
(delete 'skip-tests)))
|
||||
((#:tests? _ #f)
|
||||
#f)))
|
||||
(native-inputs
|
||||
`(;; GHC 9.4 must be built with GHC >= 9.0.
|
||||
("ghc-bootstrap" ,ghc-bootstrap-for-9.4)
|
||||
@@ -1722,8 +1718,7 @@ SRC_HC_OPTS += -optc-mno-outline-atomics
|
||||
version "/ghc-" version "-testsuite.tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"04p2lawxxg3nyv6frzhyjyh3arhqqyh5ka3alxa2pxhcd2hdcja3"))
|
||||
(patches (search-patches "ghc-testsuite-recomp015-execstack.patch"))))
|
||||
"1xbps33pq6mg2bwp5gvmc4qhgdq52yng5993if99b9s3fylqk86l"))))
|
||||
("ghc-alex" ,ghc-alex-bootstrap-for-9.4)
|
||||
("ghc-happy" ,ghc-happy-bootstrap-for-9.4)
|
||||
,@(filter (match-lambda
|
||||
@@ -1738,4 +1733,326 @@ SRC_HC_OPTS += -optc-mno-outline-atomics
|
||||
(file-pattern ".*\\.conf\\.d$")
|
||||
(file-type 'directory)))))))
|
||||
|
||||
;;; GHC >= 9.6 must be built using it's new haskell-written Hadrian build
|
||||
;;; system. Use this opportunity to cut the inheritance chain to simplify
|
||||
;;; understanding what building ghc requires with the new build system.
|
||||
|
||||
(define-public ghc-9.8
|
||||
(let ((ghc-bootstrap ghc-9.4))
|
||||
(package
|
||||
(name "ghc")
|
||||
(version "9.8.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://downloads.haskell.org/~ghc/" version
|
||||
"/ghc-" version "-src.tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0l87yb8hmd350klrp6lw2h9hjlla11pgzx1n4jlrfdvkgxmyvy5j"))))
|
||||
(outputs (list "out" "doc"))
|
||||
(arguments
|
||||
(list
|
||||
#:make-flags #~(list "-V" "--docs=no-sphinx")
|
||||
#:configure-flags
|
||||
#~(list
|
||||
(string-append "--with-gmp-libraries="
|
||||
(assoc-ref %build-inputs "gmp") "/lib")
|
||||
(string-append "--with-gmp-includes="
|
||||
(assoc-ref %build-inputs "gmp") "/include")
|
||||
"--with-system-libffi"
|
||||
(string-append "--with-ffi-libraries="
|
||||
(assoc-ref %build-inputs "libffi") "/lib")
|
||||
(string-append "--with-ffi-includes="
|
||||
(assoc-ref %build-inputs "libffi") "/include")
|
||||
(string-append "--with-curses-libraries="
|
||||
(assoc-ref %build-inputs "ncurses") "/lib")
|
||||
(string-append "--with-curses-includes="
|
||||
(assoc-ref %build-inputs "ncurses") "/include"))
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-before 'build 'fix-iserv-rpath
|
||||
(lambda _
|
||||
(mkdir-p "_build")
|
||||
(call-with-output-file
|
||||
"_build/hadrian.settings"
|
||||
(lambda (port)
|
||||
(display
|
||||
(string-append
|
||||
"*.iserv.ghc.link.opts += -optl-Wl,-rpath,"
|
||||
#$output "/lib/ghc-" #$(package-version this-package)
|
||||
"/lib/" #$(or (%current-target-system)
|
||||
(%current-system))
|
||||
"-ghc-" #$(package-version this-package) "/")
|
||||
port)))))
|
||||
;; This phase patches the 'ghc-pkg' command so that it sorts the list
|
||||
;; of packages in the binary cache it generates.
|
||||
(add-before 'build 'fix-ghc-pkg-nondeterminism
|
||||
(lambda _
|
||||
(substitute* "utils/ghc-pkg/Main.hs"
|
||||
(("confs = map \\(path </>\\) \\$ filter \\(\".conf\" `isSuffixOf`\\) fs")
|
||||
"confs = map (path </>) $ filter (\".conf\" `isSuffixOf`) (sort fs)"))))
|
||||
(add-after 'unpack 'unpack-testsuite
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(with-directory-excursion ".."
|
||||
(invoke "tar" "xvf" (assoc-ref inputs "ghc-testsuite")))))
|
||||
(add-after 'unpack-testsuite 'fix-/bin/sh-references
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute*
|
||||
(list "hadrian/src/Rules/BinaryDist.hs"
|
||||
"hadrian/src/Rules/Test.hs"
|
||||
"libraries/process/System/Process/Posix.hs"
|
||||
"libraries/process/jsbits/process.js"
|
||||
"libraries/unix/cbits/execvpe.c"
|
||||
"testsuite/tests/driver/T8602/T8602.script"
|
||||
"testsuite/timeout/timeout.py")
|
||||
(("/bin/sh") (search-input-file inputs "/bin/sh")))))
|
||||
(add-after 'unpack-testsuite 'fix-cc-reference
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute*
|
||||
(list "utils/hsc2hs/src/Common.hs")
|
||||
(("\"cc\"") "\"gcc\""))))
|
||||
;; XXX: something causes ld-wrapper to see test\ \ \ spaces/... and
|
||||
;; look for the files "test\", "\", "\" and "spaces/...", which obviously
|
||||
;; don't exist
|
||||
(add-after 'unpack-testsuite 'fix-testsuite
|
||||
(lambda _
|
||||
(substitute*
|
||||
(list "testsuite/driver/runtests.py")
|
||||
(("'test spaces'") "'dont-test-spaces'"))))
|
||||
(add-before 'configure 'set-target-programs
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((binutils (assoc-ref inputs "binutils"))
|
||||
(gcc (assoc-ref inputs "gcc"))
|
||||
(ld-wrapper (assoc-ref inputs "ld-wrapper")))
|
||||
(setenv "CC" (string-append gcc "/bin/gcc"))
|
||||
(setenv "CXX" (string-append gcc "/bin/g++"))
|
||||
(setenv "LD" (string-append ld-wrapper "/bin/ld"))
|
||||
(setenv "NM" (string-append binutils "/bin/nm"))
|
||||
(setenv "RANLIB" (string-append binutils "/bin/ranlib"))
|
||||
(setenv "STRIP" (string-append binutils "/bin/strip"))
|
||||
;; The 'ar' command does not follow the same pattern.
|
||||
(setenv "fp_prog_ar" (string-append binutils "/bin/ar")))))
|
||||
(add-before 'build 'build-hadrian
|
||||
(lambda* (#:key (inputs '()) #:allow-other-keys)
|
||||
(invoke "./hadrian/bootstrap/bootstrap.py"
|
||||
"-s" (assoc-ref inputs "hadrian-bootstrap")
|
||||
"-w" (which "ghc"))))
|
||||
(add-before 'build-hadrian 'fix-environment
|
||||
(lambda _
|
||||
(unsetenv "GHC_PACKAGE_PATH")
|
||||
(setenv "CONFIG_SHELL" (which "bash"))))
|
||||
(replace 'build
|
||||
(lambda* (#:key (parallel-build? #f) (make-flags '())
|
||||
#:allow-other-keys)
|
||||
(apply invoke "_build/bin/hadrian"
|
||||
`("binary-dist-dir"
|
||||
,@(if parallel-build?
|
||||
(list (string-append
|
||||
"-j" (number->string
|
||||
(parallel-job-count)))))
|
||||
,@make-flags))))
|
||||
(replace 'check
|
||||
(lambda* (#:key (tests? #t) (parallel-tests? #f) (make-flags '())
|
||||
#:allow-other-keys)
|
||||
(if tests?
|
||||
(apply invoke "_build/bin/hadrian"
|
||||
`(,@(if parallel-tests?
|
||||
(list (string-append
|
||||
"-j"
|
||||
(number->string (parallel-job-count))))
|
||||
'())
|
||||
,@make-flags
|
||||
"test"
|
||||
,(string-append
|
||||
"--broken-test="
|
||||
(string-join
|
||||
(list "T15904" ; ld-wrapper, apparently
|
||||
"T16521" ; no idea
|
||||
;; These fail due to gcc
|
||||
;; -Wincompatible-pointer-types, which
|
||||
;; apparently is not used in GHC's CI
|
||||
;; https://gitlab.haskell.org/ghc/ghc/-/issues/22263
|
||||
"hs_try_putmvar001"
|
||||
"list_threads_and_misc_roots"
|
||||
"testwsdeque")))
|
||||
"--skip-perf"))
|
||||
(format #t "test suite not run~%"))))
|
||||
(replace 'install
|
||||
(lambda* (#:key (make-flags '()) #:allow-other-keys)
|
||||
(apply invoke "_build/bin/hadrian"
|
||||
`("install"
|
||||
,@make-flags
|
||||
,(string-append "--prefix=" #$output)))))
|
||||
(add-after 'install 'remove-unnecessary-references
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(substitute* (find-files (string-append (assoc-ref outputs "out") "/lib/")
|
||||
"settings")
|
||||
(("/gnu/store/.*/bin/(.*)" m program) program))
|
||||
|
||||
;; Remove references to "doc" output from "out" by rewriting
|
||||
;; the "haddock-interfaces" fields and removing the optional
|
||||
;; "haddock-html" field in the generated .conf files.
|
||||
(let ((doc (assoc-ref outputs "doc"))
|
||||
(out (assoc-ref outputs "out")))
|
||||
(with-fluids ((%default-port-encoding #f))
|
||||
(for-each (lambda (config-file)
|
||||
(substitute* config-file
|
||||
(("^haddock-html: .*") "\n")
|
||||
(((format #f "^haddock-interfaces: ~a" doc))
|
||||
(string-append "haddock-interfaces: " out))))
|
||||
(find-files (string-append out "/lib") ".conf")))
|
||||
;; Move the referenced files to the "out" output.
|
||||
(for-each (lambda (haddock-file)
|
||||
(let* ((subdir (string-drop haddock-file (string-length doc)))
|
||||
(new (string-append out subdir)))
|
||||
(mkdir-p (dirname new))
|
||||
(rename-file haddock-file new)))
|
||||
(find-files doc "\\.haddock$")))))
|
||||
(add-after 'install 'replace-$pkgroot
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
((@ (srfi srfi-11) let*-values)
|
||||
(((out) (assoc-ref outputs "out"))
|
||||
((_ version) (package-name->name+version
|
||||
(strip-store-file-name out))))
|
||||
;; We split out the version because we want this to also work
|
||||
;; with packages named "ghc-next" instead of "ghc"
|
||||
(substitute*
|
||||
(find-files
|
||||
(string-append (assoc-ref outputs "out") "/lib/ghc-"
|
||||
version "/lib/package.conf.d/")
|
||||
"^.*\\.conf$")
|
||||
(("\\$\\{pkgroot\\}/")
|
||||
(string-append (assoc-ref outputs "out") "/lib/ghc-"
|
||||
version "/lib/")))))))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs (list bash-minimal gmp ncurses libffi))
|
||||
(native-inputs
|
||||
`(("perl" ,perl)
|
||||
("python" ,python)
|
||||
("git" ,git-minimal/pinned)
|
||||
("which" ,which)
|
||||
("ghostscript" ,ghostscript)
|
||||
("autoconf" ,autoconf)
|
||||
("automake" ,automake)
|
||||
|
||||
("ghc-bootstrap" ,ghc-bootstrap)
|
||||
("ghc-alex" ,ghc-alex-bootstrap-for-9.4)
|
||||
("ghc-happy" ,ghc-happy-bootstrap-for-9.4)
|
||||
("ghc-testsuite"
|
||||
,(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://www.haskell.org/ghc/dist/"
|
||||
version "/ghc-" version "-testsuite.tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1hxylm3nhxzl7yidarlavvcg1240w4bk0hy5jnvwna24jyxz69i6"))
|
||||
(patches (search-patches "ghc-testsuite-recomp015-execstack.patch"))))
|
||||
("hadrian-bootstrap"
|
||||
,(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://downloads.haskell.org/~ghc/"
|
||||
version "/hadrian-bootstrap-sources/"
|
||||
"hadrian-bootstrap-sources-"
|
||||
(package-version ghc-bootstrap) ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"14dkxif9x4hy85phcj3j0glf95k04g4ab6hfchpw9vxgvk97syi1"))))))
|
||||
(native-search-paths
|
||||
(list (search-path-specification
|
||||
(variable "GHC_PACKAGE_PATH")
|
||||
(files (list (string-append "lib/ghc-" version)))
|
||||
(file-pattern ".*\\.conf\\.d$")
|
||||
(file-type 'directory))))
|
||||
(home-page "https://www.haskell.org/ghc")
|
||||
(synopsis "The Glasgow Haskell Compiler")
|
||||
(description
|
||||
"The Glasgow Haskell Compiler (GHC) is a state-of-the-art compiler and
|
||||
interactive environment for the functional language Haskell.")
|
||||
(license license:bsd-3))))
|
||||
|
||||
(define-public ghc-9.10
|
||||
(let ((base ghc-9.8))
|
||||
(package
|
||||
(inherit base)
|
||||
(name "ghc")
|
||||
(version "9.10.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://downloads.haskell.org/~ghc/" version
|
||||
"/ghc-" version "-src.tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1pm84cgr3yg99r3srdjllgz6zig8h7dbwa597srwcnjp0nh41zam"))))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments base)
|
||||
((#:phases phases #~%standard-phases)
|
||||
#~(modify-phases #$phases
|
||||
(replace 'check
|
||||
(lambda* (#:key (tests? #t) (parallel-tests? #f) (make-flags '())
|
||||
#:allow-other-keys)
|
||||
(if tests?
|
||||
(apply invoke "_build/bin/hadrian"
|
||||
`(,@(if parallel-tests?
|
||||
(list (string-append
|
||||
"-j"
|
||||
(number->string (parallel-job-count))))
|
||||
'())
|
||||
,@make-flags
|
||||
"test"
|
||||
,(string-append
|
||||
"--broken-test="
|
||||
(string-join
|
||||
(list "T15904" ; ld-wrapper, apparently
|
||||
"T16521" ; no idea
|
||||
;; These fail due to gcc
|
||||
;; -Wincompatible-pointer-types, which
|
||||
;; apparently is not used in GHC's CI
|
||||
;; https://gitlab.haskell.org/ghc/ghc/-/issues/22263
|
||||
"list_threads_and_misc_roots"
|
||||
"stack_misc_closures")))
|
||||
"--skip-perf"))
|
||||
(format #t "test suite not run~%"))))))))
|
||||
(native-inputs
|
||||
`(("ghc-bootstrap" ,base)
|
||||
("ghc-testsuite"
|
||||
,(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://downloads.haskell.org/~ghc/"
|
||||
version "/ghc-" version "-testsuite.tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"143ifc4g3jc6s9hcry5qha913rzwg4hpsvk6pqvxk5r0qigfxjwx"))
|
||||
(patches (search-patches "ghc-testsuite-recomp015-execstack.patch"))))
|
||||
("hadrian-bootstrap"
|
||||
,(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://downloads.haskell.org/~ghc/" version
|
||||
"/hadrian-bootstrap-sources/"
|
||||
"hadrian-bootstrap-sources-"
|
||||
(package-version base) ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"162lbafvdamfhx1jldax3shgk8jbbqn4an97ny363lxbdjgdn708"))))
|
||||
,@(filter (match-lambda
|
||||
(("ghc-bootstrap" . _) #f)
|
||||
(("ghc-testsuite" . _) #f)
|
||||
(("hadrian-bootstrap" . _) #f)
|
||||
(_ #t))
|
||||
(package-native-inputs base))))
|
||||
(native-search-paths
|
||||
(list (search-path-specification
|
||||
(variable "GHC_PACKAGE_PATH")
|
||||
(files (list (string-append "lib/ghc-" version)))
|
||||
(file-pattern ".*\\.conf\\.d$")
|
||||
(file-type 'directory)))))))
|
||||
|
||||
;; Versions newer than ghc defined below (i.e. the compiler
|
||||
;; haskell-build-system uses) should use ghc-next as their name to
|
||||
;; ensure ghc (without version specification) and ghc-* packages are
|
||||
;; always compatible. See https://issues.guix.gnu.org/issue/47335.
|
||||
(define-public ghc ghc-9.10)
|
||||
|
||||
;;; haskell.scm ends here
|
||||
|
||||
@@ -12982,8 +12982,8 @@ score. When evaluated, the musical score is rendered to an image.")
|
||||
(sbcl-package->ecl-package sbcl-cmn))
|
||||
|
||||
(define-public sbcl-coalton
|
||||
(let ((commit "939342495f55991812c2c2767322c5e51e755216")
|
||||
(revision "4"))
|
||||
(let ((commit "bf475c8c53e02a2e0cb29deab4d101d25743bfca")
|
||||
(revision "5"))
|
||||
(package
|
||||
(name "sbcl-coalton")
|
||||
(version (git-version "0.0.1" revision commit))
|
||||
@@ -12995,7 +12995,7 @@ score. When evaluated, the musical score is rendered to an image.")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name "cl-coalton" version))
|
||||
(sha256
|
||||
(base32 "08qzj3v4fvn9h87whyqg650rpap8lva7jr94d1akv6m2z62l5q68"))))
|
||||
(base32 "0zrp2s82n2mxx7knbnbsdj64zar21nnnf8iwzrqzs4g3v6xpyz9z"))))
|
||||
(build-system asdf-build-system/sbcl)
|
||||
(native-inputs
|
||||
(list sbcl-fiasco))
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
;;; Copyright © 2024 Suhail Singh <suhail@bayesians.ca>
|
||||
;;; Copyright © 2024 David Pflug <david@pflug.io>
|
||||
;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2026 Igorj Gorjaĉev <igor@goryachev.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -912,7 +913,7 @@ assembler, PEG) is less than 1MB.")
|
||||
(define-public jpm
|
||||
(package
|
||||
(name "jpm")
|
||||
(version "1.1.0")
|
||||
(version "1.2.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -921,7 +922,7 @@ assembler, PEG) is less than 1MB.")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "05rdxigmiy7vf93s16a8n2029lq33073jccz1rjl4iisxj6piw4l"))))
|
||||
(base32 "06ywq1ajvqx3lfpldwbakc21hxhb313r0196xnmrrbb6k1f8hsfx"))))
|
||||
(build-system copy-build-system)
|
||||
(arguments
|
||||
(list
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
From 4617d2682738aeaece613ea61390dd47447c2d9f Mon Sep 17 00:00:00 2001
|
||||
From: Potato Hatsue <1793913507@qq.com>
|
||||
Date: Fri, 12 Sep 2025 06:07:02 -0700
|
||||
Subject: [PATCH] Allow QuickCheck 2.15.0
|
||||
|
||||
---
|
||||
Test/Chell/QuickCheck.hs | 8 ++++++++
|
||||
chell-quickcheck.cabal | 2 +-
|
||||
2 files changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Test/Chell/QuickCheck.hs b/Test/Chell/QuickCheck.hs
|
||||
index ea1c488..3227b8e 100644
|
||||
--- a/Test/Chell/QuickCheck.hs
|
||||
+++ b/Test/Chell/QuickCheck.hs
|
||||
@@ -1,3 +1,4 @@
|
||||
+{-# LANGUAGE CPP #-}
|
||||
module Test.Chell.QuickCheck (property) where
|
||||
|
||||
import Test.Chell qualified as Chell
|
||||
@@ -30,7 +31,12 @@ property name prop = Chell.test name $ \opts -> Text.withNullTerminal $ \term ->
|
||||
{ State.terminal = term,
|
||||
State.maxSuccessTests = QuickCheck.maxSuccess args,
|
||||
State.maxDiscardedRatio = QuickCheck.maxDiscardRatio args,
|
||||
+#if MIN_VERSION_QuickCheck(2,15,0)
|
||||
+ State.replayStartSize = Nothing,
|
||||
+ State.maxTestSize = QuickCheck.maxSize args,
|
||||
+#else
|
||||
State.computeSize = computeSize (QuickCheck.maxSize args) (QuickCheck.maxSuccess args),
|
||||
+#endif
|
||||
State.numSuccessTests = 0,
|
||||
State.numDiscardedTests = 0,
|
||||
State.classes = mempty,
|
||||
@@ -59,6 +65,7 @@ property name prop = Chell.test name $ \opts -> Text.withNullTerminal $ \term ->
|
||||
Test.GaveUp {} -> Chell.TestAborted notes output
|
||||
Test.NoExpectedFailure {} -> Chell.TestFailed notes [failure]
|
||||
|
||||
+#if !MIN_VERSION_QuickCheck(2,15,0)
|
||||
-- copied from quickcheck-2.4.1.1/src/Test/QuickCheck/Test.hs
|
||||
computeSize :: Int -> Int -> Int -> Int -> Int
|
||||
computeSize maxSize maxSuccess n d
|
||||
@@ -79,3 +86,4 @@ computeSize maxSize maxSuccess n d
|
||||
|
||||
roundTo :: Int -> Int -> Int
|
||||
roundTo n m = (n `div` m) * m
|
||||
+#endif
|
||||
diff --git a/chell-quickcheck.cabal b/chell-quickcheck.cabal
|
||||
index e854412..1f3a1d9 100644
|
||||
--- a/chell-quickcheck.cabal
|
||||
+++ b/chell-quickcheck.cabal
|
||||
@@ -34,7 +34,7 @@ library
|
||||
build-depends:
|
||||
, base ^>= 4.16 || ^>= 4.17 || ^>= 4.18 || ^>= 4.19 || ^>= 4.20 || ^>= 4.21
|
||||
, chell ^>= 0.5
|
||||
- , QuickCheck ^>= 2.14.2
|
||||
+ , QuickCheck ^>= 2.14.2 || ^>= 2.15.0
|
||||
, random ^>= 1.2.1 || ^>= 1.3.0
|
||||
|
||||
exposed-modules:
|
||||
@@ -4,7 +4,7 @@
|
||||
# number of sections)
|
||||
'$(TEST_HC)' $(TEST_HC_OPTS) Generate.hs
|
||||
./Generate > ManySections.s
|
||||
+ echo '.section .note.GNU-stack,"",@progbits' > ManySections.s
|
||||
+ echo '.section .note.GNU-stack,"",@progbits' >> ManySections.s
|
||||
echo 'main = putStrLn "Running main..."' > Main.hs
|
||||
'$(TEST_HC)' $(TEST_HC_OPTS) -c ManySections.s
|
||||
'$(TEST_HC)' $(TEST_HC_OPTS) --make -O Main.hs ManySections.o
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
Fix test_command_error for neovim 0.12.x.
|
||||
|
||||
In neovim 0.12.0, the error message for an invalid cursor position changed from
|
||||
"Cursor position outside buffer" to "Invalid cursor line: out of range". Update
|
||||
the test to accept both messages.
|
||||
|
||||
Taken from upstream commit d89b62ed622976c8d6dbc7733a99dac371b01cbf.
|
||||
|
||||
diff --git a/test/test_vim.py b/test/test_vim.py
|
||||
index 8a76f5e..26e2fce 100644
|
||||
--- a/test/test_vim.py
|
||||
+++ b/test/test_vim.py
|
||||
@@ -1,6 +1,7 @@
|
||||
"""Tests interaction with neovim via Nvim API (with child process)."""
|
||||
|
||||
import os
|
||||
+import re
|
||||
import sys
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
@@ -50,7 +51,7 @@ def test_command_output(vim: Nvim) -> None:
|
||||
def test_command_error(vim: Nvim) -> None:
|
||||
with pytest.raises(vim.error) as excinfo:
|
||||
vim.current.window.cursor = -1, -1
|
||||
- assert excinfo.value.args == ('Cursor position outside buffer',)
|
||||
+ assert re.search(r"Cursor position outside buffer|Invalid cursor line", excinfo.value.args[0])
|
||||
|
||||
|
||||
def test_eval(vim: Nvim) -> None:
|
||||
@@ -0,0 +1,21 @@
|
||||
Author: Danny Milosavljevic <dannym@friendly-machines.com>
|
||||
Subject: Move candle-onnx from exclude to members so cargo package can build it.
|
||||
Date: 2026-03-01
|
||||
|
||||
--- a/Cargo.toml
|
||||
+++ b/Cargo.toml
|
||||
@@ -4,6 +4,7 @@
|
||||
"candle-datasets",
|
||||
"candle-examples",
|
||||
"candle-nn",
|
||||
+ "candle-onnx",
|
||||
"candle-pyo3",
|
||||
"candle-transformers",
|
||||
"candle-wasm-examples/*",
|
||||
@@ -15,7 +16,6 @@
|
||||
"candle-flash-attn",
|
||||
"candle-kernels",
|
||||
"candle-metal-kernels",
|
||||
- "candle-onnx",
|
||||
]
|
||||
resolver = "2"
|
||||
299
gnu/packages/patches/ungoogled-chromium-custom-compiler.patch
Normal file
299
gnu/packages/patches/ungoogled-chromium-custom-compiler.patch
Normal file
@@ -0,0 +1,299 @@
|
||||
From 7a372a6914e9d9d6f0c914a1ca8cdff592c40593 Mon Sep 17 00:00:00 2001
|
||||
From: Matt Jolly <kangie@gentoo.org>
|
||||
Date: Thu, 12 Mar 2026 11:57:11 +1000
|
||||
Subject: [PATCH] Update compiler patch for M147 beta
|
||||
|
||||
Signed-off-by: Matt Jolly <kangie@gentoo.org>
|
||||
--- a/build/config/compiler/BUILD.gn
|
||||
+++ b/build/config/compiler/BUILD.gn
|
||||
@@ -367,9 +367,6 @@ config("compiler") {
|
||||
|
||||
configs += [
|
||||
# See the definitions below.
|
||||
- ":clang_revision",
|
||||
- ":rustc_revision",
|
||||
- ":compiler_cpu_abi",
|
||||
":compiler_codegen",
|
||||
":compiler_deterministic",
|
||||
":clang_warning_suppression",
|
||||
@@ -1690,43 +1687,6 @@ config("compiler_deterministic") {
|
||||
}
|
||||
}
|
||||
|
||||
- # Makes builds independent of absolute file path.
|
||||
- if (is_clang && strip_absolute_paths_from_debug_symbols) {
|
||||
- # If debug option is given, clang includes $cwd in debug info by default.
|
||||
- # For such build, this flag generates reproducible obj files even we use
|
||||
- # different build directory like "out/feature_a" and "out/feature_b" if
|
||||
- # we build same files with same compile flag.
|
||||
- # Other paths are already given in relative, no need to normalize them.
|
||||
-
|
||||
- # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir=
|
||||
- # and -fcoverage-compilation-dir=.
|
||||
- cflags += [ "-ffile-compilation-dir=." ]
|
||||
-
|
||||
- # Convert absolute paths to relative paths. Expands to, for example:
|
||||
- # -file-prefix-map /path/to/chromium/src=../..
|
||||
- swiftflags += [
|
||||
- "-file-prefix-map",
|
||||
- rebase_path("//.", "") + "=" + rebase_path("//.", root_build_dir),
|
||||
- ]
|
||||
- if (!is_win) {
|
||||
- # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
|
||||
- asmflags = [ "-Wa,-fdebug-compilation-dir,." ]
|
||||
- }
|
||||
-
|
||||
- if (is_win && use_lld) {
|
||||
- if (symbol_level == 2 || (is_clang && using_sanitizer)) {
|
||||
- # Absolutize source file paths for PDB. Pass the real build directory
|
||||
- # if the pdb contains source-level debug information and if linker
|
||||
- # reproducibility is not critical.
|
||||
- ldflags += [ "/PDBSourcePath:" + rebase_path(root_build_dir) ]
|
||||
- } else {
|
||||
- # Use a fake fixed base directory for paths in the pdb to make the pdb
|
||||
- # output fully deterministic and independent of the build directory.
|
||||
- ldflags += [ "/PDBSourcePath:o:\fake\prefix" ]
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
-
|
||||
# Tells the compiler not to use absolute paths when passing the default
|
||||
# paths to the tools it invokes. We don't want this because we don't
|
||||
# really need it and it can mess up the RBE cache entries.
|
||||
@@ -1759,88 +1719,6 @@ config("compiler_deterministic") {
|
||||
}
|
||||
}
|
||||
|
||||
-config("clang_revision") {
|
||||
- if (is_clang && clang_base_path == default_clang_base_path &&
|
||||
- current_os != "zos") {
|
||||
- _perform_consistency_checks = current_toolchain == default_toolchain
|
||||
- if (llvm_force_head_revision) {
|
||||
- _head_revision_stamp_path = "//third_party/llvm-build/force_head_revision"
|
||||
- _head_revision = ""
|
||||
- if (path_exists(_head_revision_stamp_path)) {
|
||||
- _head_revision = read_file(_head_revision_stamp_path, "trim string")
|
||||
- }
|
||||
- assert(
|
||||
- _head_revision != "",
|
||||
- "llvm_force_head_revision=true, but no locally built version was detected.")
|
||||
- _clang_revision = _head_revision
|
||||
- } else {
|
||||
- _clang_revision = read_file(
|
||||
- "//third_party/llvm-build/Release+Asserts/cr_build_revision",
|
||||
- "trim string")
|
||||
-
|
||||
- # Ensure that the synced clang version matches what's in git.
|
||||
- if (_perform_consistency_checks) {
|
||||
- # Parse the clang version from the Python script.
|
||||
- _clang_version_lines = filter_include(
|
||||
- read_file("//tools/clang/scripts/update.py", "list lines"),
|
||||
- [ "CLANG_*REVISION = *" ])
|
||||
- _py_revision =
|
||||
- string_replace(_clang_version_lines[0], "CLANG_REVISION = '", "")
|
||||
- _py_revision = string_replace(_py_revision, "'", "")
|
||||
- _py_subrevision =
|
||||
- string_replace(_clang_version_lines[1], "CLANG_SUB_REVISION = ", "")
|
||||
- _expected_clang_revision = "$_py_revision-$_py_subrevision"
|
||||
-
|
||||
- # TODO(agrieve): Change filter_include to _clang_revision ==
|
||||
- # _expected_clang_revision once angle & webrtc use a GCS DEPS entry
|
||||
- # rather than a update.py runhook.
|
||||
- assert(
|
||||
- filter_include([ _clang_revision ],
|
||||
- [
|
||||
- _expected_clang_revision,
|
||||
- "$_expected_clang_revision,*",
|
||||
- ]) != [],
|
||||
- "clang_revision=\"$_clang_revision\" but update.py expected \"$_expected_clang_revision\". Did you forget to gclient sync?")
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- if (_perform_consistency_checks) {
|
||||
- # Ensure that the revision matches the version major expected by GN.
|
||||
- _versions_match = filter_include([ _clang_revision ],
|
||||
- [ "llvmorg-$clang_version-*" ]) != []
|
||||
- assert(
|
||||
- _versions_match,
|
||||
- "clang_revision=\"$_clang_revision\" but clang_version=\"$clang_version\". clang_version in build/toolchain/toolchain.gni is likely outdated.")
|
||||
- }
|
||||
-
|
||||
- if (toolchain_has_rust && _perform_consistency_checks &&
|
||||
- !rust_force_head_revision) {
|
||||
- # Ensure that the synced rust version matches what's in git.
|
||||
- _rust_revision_lines =
|
||||
- filter_include(read_file("//tools/rust/update_rust.py", "list lines"),
|
||||
- [ "RUST_*REVISION = *" ])
|
||||
- _py_revision =
|
||||
- string_replace(_rust_revision_lines[0], "RUST_REVISION = '", "")
|
||||
- _py_revision = string_replace(_py_revision, "'", "")
|
||||
- _py_subrevision =
|
||||
- string_replace(_rust_revision_lines[1], "RUST_SUB_REVISION = ", "")
|
||||
- _expected_rust_revision = "$_py_revision-$_py_subrevision"
|
||||
-
|
||||
- # Ensure the rust version matches the clang version.
|
||||
- assert(
|
||||
- filter_include([ rustc_revision ],
|
||||
- [ "*-$_expected_rust_revision-*" ]) != [],
|
||||
- "rustc_revision=\"$rustc_revision\" but update_rust.py expected \"$_expected_rust_revision\". Run \"gclient sync\"?")
|
||||
- }
|
||||
-
|
||||
- # This is here so that all files get recompiled after a clang roll and
|
||||
- # when turning clang on or off. (defines are passed via the command line,
|
||||
- # and build system rebuild things when their commandline changes). Nothing
|
||||
- # should ever read this define.
|
||||
- defines = [ "CR_CLANG_REVISION=\"$_clang_revision\"" ]
|
||||
- }
|
||||
-}
|
||||
-
|
||||
# Controls the usage of a warning suppression mapping (WSM) file to suppress
|
||||
# warnings based on the path of the file they come from. It's controlled by the
|
||||
# `clang_warning_suppression_file` gn argument , which points to a text file
|
||||
@@ -1896,18 +1774,6 @@ config("sanitize_c_array_bounds") {
|
||||
}
|
||||
}
|
||||
|
||||
-config("rustc_revision") {
|
||||
- if (rustc_revision != "") {
|
||||
- # Similar to the `clang_revision` config, this is here so that all `.rs`
|
||||
- # sources get recompiled after a rustc roll. Nothing should ever read this
|
||||
- # cfg. This will not be set if a custom toolchain is used.
|
||||
- rustflags = [
|
||||
- "--cfg",
|
||||
- "cr_rustc_revision=\"$rustc_revision\"",
|
||||
- ]
|
||||
- }
|
||||
-}
|
||||
-
|
||||
config("compiler_arm_fpu") {
|
||||
if (current_cpu == "arm" && !is_ios) {
|
||||
cflags = [ "-mfpu=neon" ]
|
||||
@@ -2386,11 +2252,7 @@ config("chromium_code") {
|
||||
defines = [ "_HAS_NODISCARD" ]
|
||||
}
|
||||
} else {
|
||||
- cflags = [ "-Wall" ]
|
||||
- if (is_clang) {
|
||||
- # Enable extra warnings for chromium_code when we control the compiler.
|
||||
- cflags += [ "-Wextra" ]
|
||||
- }
|
||||
+ cflags = []
|
||||
|
||||
# In Chromium code, we define __STDC_foo_MACROS in order to get the
|
||||
# C99 macros on Mac and Linux.
|
||||
@@ -2399,32 +2261,6 @@ config("chromium_code") {
|
||||
"__STDC_FORMAT_MACROS",
|
||||
]
|
||||
|
||||
- if (!is_debug && !using_sanitizer && current_cpu != "s390x" &&
|
||||
- current_cpu != "ppc64" && current_cpu != "mips" &&
|
||||
- current_cpu != "mips64" && current_cpu != "riscv64" &&
|
||||
- current_cpu != "loong64") {
|
||||
- # Non-chromium code is not guaranteed to compile cleanly with
|
||||
- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are
|
||||
- # disabled, so only do that for Release build.
|
||||
- fortify_level = "2"
|
||||
-
|
||||
- # ChromeOS's toolchain supports a high-quality _FORTIFY_SOURCE=3
|
||||
- # implementation with a few custom glibc patches. Use that if it's
|
||||
- # available.
|
||||
- if (is_chromeos_device) {
|
||||
- fortify_level = "3"
|
||||
- }
|
||||
-
|
||||
- # _FORTIFY_SOURCE=3 is available in glibc 2.34+. Enable it when building
|
||||
- # with the sysroot where support is guaranteed. Clang is also required since
|
||||
- # the system gcc is often patched to add _FORTIFY_SOURCE=2 which would conflict
|
||||
- # with our definition.
|
||||
- if (use_sysroot && is_clang) {
|
||||
- fortify_level = "3"
|
||||
- }
|
||||
- defines += [ "_FORTIFY_SOURCE=" + fortify_level ]
|
||||
- }
|
||||
-
|
||||
if (is_apple) {
|
||||
cflags_objc = [ "-Wimplicit-retain-self" ]
|
||||
cflags_objcc = [ "-Wimplicit-retain-self" ]
|
||||
@@ -2848,7 +2684,8 @@ config("default_stack_frames") {
|
||||
# [0]: https://pinpoint-dot-chromeperf.appspot.com/job/147634a8be0000
|
||||
# [1]: https://pinpoint-dot-chromeperf.appspot.com/job/132bc772be0000
|
||||
# [2]: https://crrev.com/c/5447532
|
||||
-config("optimize") {
|
||||
+config("optimize") { }
|
||||
+config("xoptimize") {
|
||||
if (is_win) {
|
||||
# clang-cl's /O2 corresponds to clang's -O3, and really want -O2 for
|
||||
# consistency with the other platforms.
|
||||
@@ -2897,7 +2734,8 @@ config("optimize") {
|
||||
}
|
||||
|
||||
# Turn off optimizations.
|
||||
-config("no_optimize") {
|
||||
+config("no_optimize") { }
|
||||
+config("xno_optimize") {
|
||||
if (is_win) {
|
||||
cflags = [
|
||||
"/Od", # Disable optimization.
|
||||
@@ -2932,7 +2770,8 @@ config("no_optimize") {
|
||||
# Turns up the optimization level. Used to explicitly enable -O2 instead of
|
||||
# -Os for select targets on platforms that use optimize_for_size. No-op
|
||||
# elsewhere.
|
||||
-config("optimize_max") {
|
||||
+config("optimize_max") { }
|
||||
+config("xoptimize_max") {
|
||||
ldflags = common_optimize_on_ldflags
|
||||
if (is_win) {
|
||||
# Favor speed over size, /O2 must be before the common flags.
|
||||
@@ -2953,7 +2792,8 @@ config("optimize_max") {
|
||||
#
|
||||
# TODO(crbug.com/41259697) - rework how all of these configs are related
|
||||
# so that we don't need this disclaimer.
|
||||
-config("optimize_speed") {
|
||||
+config("optimize_speed") { }
|
||||
+config("xoptimize_speed") {
|
||||
ldflags = common_optimize_on_ldflags
|
||||
if (is_win) {
|
||||
# Favor speed over size, /O2 must be before the common flags.
|
||||
@@ -2970,7 +2810,8 @@ config("optimize_speed") {
|
||||
rustflags = [ "-Copt-level=3" ]
|
||||
}
|
||||
|
||||
-config("optimize_fuzzing") {
|
||||
+config("optimize_fuzzing") { }
|
||||
+config("xoptimize_fuzzing") {
|
||||
cflags = [ "-O1" ] + common_optimize_on_cflags
|
||||
rustflags = [ "-Copt-level=1" ]
|
||||
ldflags = common_optimize_on_ldflags
|
||||
@@ -3115,7 +2956,8 @@ config("split_dwarf") {
|
||||
}
|
||||
|
||||
# Full symbols.
|
||||
-config("symbols") {
|
||||
+config("symbols") { }
|
||||
+config("xsymbols") {
|
||||
rustflags = []
|
||||
configs = []
|
||||
if (is_win) {
|
||||
@@ -3275,7 +3117,8 @@ config("symbols") {
|
||||
# Minimal symbols.
|
||||
# This config guarantees to hold symbol for stack trace which are shown to user
|
||||
# when crash happens in unittests running on buildbot.
|
||||
-config("minimal_symbols") {
|
||||
+config("minimal_symbols") { }
|
||||
+config("xminimal_symbols") {
|
||||
configs = []
|
||||
rustflags = []
|
||||
if (is_win) {
|
||||
@@ -3355,7 +3198,8 @@ config("minimal_symbols") {
|
||||
# This configuration contains function names only. That is, the compiler is
|
||||
# told to not generate debug information and the linker then just puts function
|
||||
# names in the final debug information.
|
||||
-config("no_symbols") {
|
||||
+config("no_symbols") { }
|
||||
+config("xno_symbols") {
|
||||
if (is_win) {
|
||||
ldflags = [ "/DEBUG" ]
|
||||
|
||||
--
|
||||
2.52.0
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
From da37bd781c0371e02ffc4877c3ac1b5f2020c207 Mon Sep 17 00:00:00 2001
|
||||
From: Matt Jolly <kangie@gentoo.org>
|
||||
Date: Tue, 17 Feb 2026 15:45:01 +1000
|
||||
Subject: [PATCH] Handle case where `parsed_rustc_args.cfg` is empty
|
||||
|
||||
This may occur when (for example) using the unbundle toolchain
|
||||
|
||||
Signed-off-by: Matt Jolly <kangie@gentoo.org>
|
||||
--- a/third_party/rust/cxx/chromium_integration/run_cxxbridge.py
|
||||
+++ b/third_party/rust/cxx/chromium_integration/run_cxxbridge.py
|
||||
@@ -44,18 +44,20 @@ def calculate_cxxbridge_args(unrecognized_script_args, rustc_print_cfg_path):
|
||||
parser.add_argument("--cfg", action="append"),
|
||||
parsed_rustc_args, _other_args = parser.parse_known_args(
|
||||
args=unrecognized_script_args[:rustflags_separator])
|
||||
- for cfg_arg in parsed_rustc_args.cfg:
|
||||
- if "=" not in cfg_arg: # `buildflag_header.gni` only supports bool flags.
|
||||
- # TODO(https://crbug.com/436606652): Stop using `_BUILDFLAG_NOT_SET_`
|
||||
- # prefix and instead use `--check-cfg` in `run_cxxbridge.py` to
|
||||
- # detect buildflag names.
|
||||
- FALSE_PREFIX = "_BUILDFLAG_NOT_SET_"
|
||||
- if cfg_arg.startswith(FALSE_PREFIX):
|
||||
- flagname = cfg_arg[len(FALSE_PREFIX):]
|
||||
- cxxbridge_args.append(f"--cfg={flagname}=false")
|
||||
- else:
|
||||
- flagname = cfg_arg
|
||||
- cxxbridge_args.append(f"--cfg={flagname}=true")
|
||||
+ # Unbundled toolchain may not have any `--cfg` flags
|
||||
+ if parsed_rustc_args.cfg:
|
||||
+ for cfg_arg in parsed_rustc_args.cfg:
|
||||
+ if "=" not in cfg_arg: # `buildflag_header.gni` only supports bool flags.
|
||||
+ # TODO(https://crbug.com/436606652): Stop using `_BUILDFLAG_NOT_SET_`
|
||||
+ # prefix and instead use `--check-cfg` in `run_cxxbridge.py` to
|
||||
+ # detect buildflag names.
|
||||
+ FALSE_PREFIX = "_BUILDFLAG_NOT_SET_"
|
||||
+ if cfg_arg.startswith(FALSE_PREFIX):
|
||||
+ flagname = cfg_arg[len(FALSE_PREFIX):]
|
||||
+ cxxbridge_args.append(f"--cfg={flagname}=false")
|
||||
+ else:
|
||||
+ flagname = cfg_arg
|
||||
+ cxxbridge_args.append(f"--cfg={flagname}=true")
|
||||
|
||||
with open(rustc_print_cfg_path, 'r') as file:
|
||||
for line in file:
|
||||
--
|
||||
2.52.0
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
From a665875b4013eed997bd042326a038e24f3296e7 Mon Sep 17 00:00:00 2001
|
||||
From: Matt Jolly <kangie@gentoo.org>
|
||||
Date: Thu, 10 Oct 2024 14:36:51 +1000
|
||||
Subject: [PATCH] unbundle: add missing icu target
|
||||
|
||||
--- a/build/linux/unbundle/icu.gn
|
||||
+++ b/build/linux/unbundle/icu.gn
|
||||
@@ -65,6 +65,10 @@ group("icuuc_public") {
|
||||
public_deps = [ ":icuuc" ]
|
||||
}
|
||||
|
||||
+group("icui18n_hidden_visibility") {
|
||||
+ public_deps = [ ":icuuc" ]
|
||||
+}
|
||||
+
|
||||
shim_headers("icui18n_shim") {
|
||||
root_path = "source/i18n"
|
||||
headers = [
|
||||
--
|
||||
2.46.2
|
||||
|
||||
3070
gnu/packages/patches/zed-0.225.10-add-guix-container-support.patch
Normal file
3070
gnu/packages/patches/zed-0.225.10-add-guix-container-support.patch
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,107 @@
|
||||
Author: Danny Milosavljevic <dannym@friendly-machines.com>
|
||||
Subject: Add non-dismissing notification action hooks.
|
||||
Date: 2026-03-08
|
||||
License: gpl3+
|
||||
|
||||
MessageNotification only supports primary and secondary buttons that always
|
||||
dismiss the notification after running their handlers. That is too restrictive
|
||||
for flows where the user needs to inspect something first and then return to the
|
||||
same prompt.
|
||||
|
||||
Add a generic non-dismissing `more_info_on_click` action alongside the existing
|
||||
URL-based more-info button. This keeps the notification component reusable for
|
||||
"inspect first, decide second" workflows without forcing every caller to build a
|
||||
custom notification view.
|
||||
diff --git a/crates/workspace/src/notifications.rs b/crates/workspace/src/notifications.rs
|
||||
index 84f479b77e..9e210cb554 100644
|
||||
--- a/crates/workspace/src/notifications.rs
|
||||
+++ b/crates/workspace/src/notifications.rs
|
||||
@@ -714,6 +714,7 @@ pub mod simple_message_notification {
|
||||
secondary_icon_color: Option<Color>,
|
||||
secondary_on_click: Option<Arc<dyn Fn(&mut Window, &mut Context<Self>)>>,
|
||||
more_info_message: Option<SharedString>,
|
||||
+ more_info_on_click: Option<Arc<dyn Fn(&mut Window, &mut Context<Self>)>>,
|
||||
more_info_url: Option<Arc<str>>,
|
||||
show_close_button: bool,
|
||||
show_suppress_button: bool,
|
||||
@@ -758,6 +759,7 @@ pub mod simple_message_notification {
|
||||
secondary_icon_color: None,
|
||||
secondary_on_click: None,
|
||||
more_info_message: None,
|
||||
+ more_info_on_click: None,
|
||||
more_info_url: None,
|
||||
show_close_button: true,
|
||||
show_suppress_button: true,
|
||||
@@ -843,6 +845,22 @@ pub mod simple_message_notification {
|
||||
self
|
||||
}
|
||||
|
||||
+ pub fn more_info_on_click<F>(mut self, on_click: F) -> Self
|
||||
+ where
|
||||
+ F: 'static + Fn(&mut Window, &mut Context<Self>),
|
||||
+ {
|
||||
+ self.more_info_on_click = Some(Arc::new(on_click));
|
||||
+ self
|
||||
+ }
|
||||
+
|
||||
+ pub fn more_info_on_click_arc<F>(mut self, on_click: Arc<F>) -> Self
|
||||
+ where
|
||||
+ F: 'static + Fn(&mut Window, &mut Context<Self>),
|
||||
+ {
|
||||
+ self.more_info_on_click = Some(on_click);
|
||||
+ self
|
||||
+ }
|
||||
+
|
||||
pub fn more_info_url<S>(mut self, url: S) -> Self
|
||||
where
|
||||
S: Into<Arc<str>>,
|
||||
@@ -946,20 +964,36 @@ pub mod simple_message_notification {
|
||||
}))
|
||||
.child(
|
||||
h_flex().w_full().justify_end().children(
|
||||
- self.more_info_message
|
||||
- .iter()
|
||||
- .zip(self.more_info_url.iter())
|
||||
- .map(|(message, url)| {
|
||||
- let url = url.clone();
|
||||
- Button::new(message.clone(), message.clone())
|
||||
- .label_size(LabelSize::Small)
|
||||
- .icon(IconName::ArrowUpRight)
|
||||
- .icon_size(IconSize::Indicator)
|
||||
- .icon_color(Color::Muted)
|
||||
- .on_click(cx.listener(move |_, _, _, cx| {
|
||||
+ self.more_info_message.iter().filter_map(|message| {
|
||||
+ let more_info_on_click = self.more_info_on_click.clone();
|
||||
+ let more_info_url = self.more_info_url.clone();
|
||||
+
|
||||
+ if more_info_on_click.is_none() && more_info_url.is_none() {
|
||||
+ return None;
|
||||
+ }
|
||||
+
|
||||
+ let mut button = Button::new(message.clone(), message.clone())
|
||||
+ .label_size(LabelSize::Small)
|
||||
+ .icon(IconName::ArrowUpRight)
|
||||
+ .icon_size(IconSize::Indicator)
|
||||
+ .icon_color(Color::Muted);
|
||||
+
|
||||
+ button = match (more_info_on_click, more_info_url) {
|
||||
+ (Some(on_click), _) => button.on_click(cx.listener(
|
||||
+ move |_, _, window, cx| {
|
||||
+ (on_click)(window, cx);
|
||||
+ },
|
||||
+ )),
|
||||
+ (None, Some(url)) => button.on_click(cx.listener(
|
||||
+ move |_, _, _, cx| {
|
||||
cx.open_url(&url);
|
||||
- }))
|
||||
- }),
|
||||
+ },
|
||||
+ )),
|
||||
+ (None, None) => button,
|
||||
+ };
|
||||
+
|
||||
+ Some(button)
|
||||
+ }),
|
||||
),
|
||||
),
|
||||
)
|
||||
@@ -0,0 +1,65 @@
|
||||
Author: Danny Milosavljevic <dannym@friendly-machines.com>
|
||||
Subject: Collapse multi-line git dependency entries to single lines
|
||||
Date: 2026-03-01
|
||||
License: expat
|
||||
|
||||
Collapse multi-line git dependency entries to single lines so that
|
||||
line-based substitute* patterns can process them.
|
||||
|
||||
--- a/Cargo.toml 2026-03-01 19:09:53.710020628 +0000
|
||||
+++ b/Cargo.toml 2026-03-01 19:20:31.697337662 +0000
|
||||
@@ -626,15 +626,7 @@
|
||||
rayon = "1.8"
|
||||
regex = "1.5"
|
||||
# WARNING: If you change this, you must also publish a new version of zed-reqwest to crates.io
|
||||
-reqwest = { git = "https://github.com/zed-industries/reqwest.git", rev = "c15662463bda39148ba154100dd44d3fba5873a4", default-features = false, features = [
|
||||
- "charset",
|
||||
- "http2",
|
||||
- "macos-system-configuration",
|
||||
- "multipart",
|
||||
- "rustls-tls-native-roots",
|
||||
- "socks",
|
||||
- "stream",
|
||||
-], package = "zed-reqwest", version = "0.12.15-zed" }
|
||||
+reqwest = { git = "https://github.com/zed-industries/reqwest.git", rev = "c15662463bda39148ba154100dd44d3fba5873a4", default-features = false, features = ["charset", "http2", "macos-system-configuration", "multipart", "rustls-tls-native-roots", "socks", "stream"], package = "zed-reqwest", version = "0.12.15-zed" }
|
||||
rsa = "0.9.6"
|
||||
runtimelib = { version = "1.2.0", default-features = false, features = [
|
||||
"async-dispatcher-runtime", "aws-lc-rs"
|
||||
--- a/crates/gpui/Cargo.toml 2026-03-01 19:12:33.129039363 +0000
|
||||
+++ b/crates/gpui/Cargo.toml 2026-03-01 19:20:33.133327405 +0000
|
||||
@@ -167,9 +167,7 @@
|
||||
cosmic-text = { version = "0.17.0", optional = true }
|
||||
swash = { version = "0.2.6" }
|
||||
# WARNING: If you change this, you must also publish a new version of zed-font-kit to crates.io
|
||||
-font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "110523127440aefb11ce0cf280ae7c5071337ec5", package = "zed-font-kit", version = "0.14.1-zed", features = [
|
||||
- "source-fontconfig-dlopen",
|
||||
-], optional = true }
|
||||
+font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "110523127440aefb11ce0cf280ae7c5071337ec5", package = "zed-font-kit", version = "0.14.1-zed", features = ["source-fontconfig-dlopen"], optional = true }
|
||||
calloop = "0.14.3"
|
||||
filedescriptor = { version = "0.8.2", optional = true }
|
||||
open = { version = "5.2.0", optional = true }
|
||||
@@ -207,10 +205,7 @@
|
||||
"sync",
|
||||
], optional = true }
|
||||
# WARNING: If you change this, you must also publish a new version of zed-xim to crates.io
|
||||
-xim = { git = "https://github.com/zed-industries/xim-rs.git", rev = "16f35a2c881b815a2b6cdfd6687988e84f8447d8" , features = [
|
||||
- "x11rb-xcb",
|
||||
- "x11rb-client",
|
||||
-], package = "zed-xim", version = "0.4.0-zed", optional = true }
|
||||
+xim = { git = "https://github.com/zed-industries/xim-rs.git", rev = "16f35a2c881b815a2b6cdfd6687988e84f8447d8" , features = ["x11rb-xcb", "x11rb-client"], package = "zed-xim", version = "0.4.0-zed", optional = true }
|
||||
x11-clipboard = { version = "0.9.3", optional = true }
|
||||
|
||||
[target.'cfg(target_os = "windows")'.dependencies]
|
||||
--- a/crates/livekit_client/Cargo.toml 2026-03-01 19:12:33.133661336 +0000
|
||||
+++ b/crates/livekit_client/Cargo.toml 2026-03-01 19:20:33.893321975 +0000
|
||||
@@ -46,9 +46,7 @@
|
||||
|
||||
[target.'cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))'.dependencies]
|
||||
libwebrtc = { rev = "5f04705ac3f356350ae31534ffbc476abc9ea83d", git = "https://github.com/zed-industries/livekit-rust-sdks" }
|
||||
-livekit = { rev = "5f04705ac3f356350ae31534ffbc476abc9ea83d", git = "https://github.com/zed-industries/livekit-rust-sdks", features = [
|
||||
- "__rustls-tls"
|
||||
-] }
|
||||
+livekit = { rev = "5f04705ac3f356350ae31534ffbc476abc9ea83d", git = "https://github.com/zed-industries/livekit-rust-sdks", features = ["__rustls-tls"] }
|
||||
|
||||
[target.'cfg(any(target_os = "linux", target_os = "freebsd", target_os = "windows"))'.dependencies]
|
||||
scap.workspace = true
|
||||
31
gnu/packages/patches/zed-0.225.10-disable-dlopen.patch
Normal file
31
gnu/packages/patches/zed-0.225.10-disable-dlopen.patch
Normal file
@@ -0,0 +1,31 @@
|
||||
Author: Danny Milosavljevic <dannym@friendly-machines.com>
|
||||
Subject: Disable dlopen for wayland-backend and fontconfig in gpui.
|
||||
Date: 2026-03-01
|
||||
License: ASL2.0
|
||||
|
||||
Remove the "dlopen" feature from wayland-backend and the
|
||||
"source-fontconfig-dlopen" feature from zed-font-kit so that libwayland
|
||||
and libfontconfig are linked directly rather than loaded at runtime via
|
||||
dlopen. This ensures these dependencies are visible to the package
|
||||
manager and avoids runtime failures when the libraries are not in the
|
||||
dlopen search path.
|
||||
|
||||
--- a/crates/gpui/Cargo.toml 2026-03-01 21:21:38.661240897 +0000
|
||||
+++ b/crates/gpui/Cargo.toml 2026-03-01 21:23:00.282205935 +0000
|
||||
@@ -167,7 +167,7 @@
|
||||
cosmic-text = { version = "0.17.0", optional = true }
|
||||
swash = { version = "0.2.6" }
|
||||
# WARNING: If you change this, you must also publish a new version of zed-font-kit to crates.io
|
||||
-font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "110523127440aefb11ce0cf280ae7c5071337ec5", package = "zed-font-kit", version = "0.14.1-zed", features = ["source-fontconfig-dlopen"], optional = true }
|
||||
+font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "110523127440aefb11ce0cf280ae7c5071337ec5", package = "zed-font-kit", version = "0.14.1-zed", optional = true }
|
||||
calloop = "0.14.3"
|
||||
filedescriptor = { version = "0.8.2", optional = true }
|
||||
open = { version = "5.2.0", optional = true }
|
||||
@@ -177,7 +177,6 @@
|
||||
calloop-wayland-source = { version = "0.4.1", optional = true }
|
||||
wayland-backend = { version = "0.3.3", features = [
|
||||
"client_system",
|
||||
- "dlopen",
|
||||
], optional = true }
|
||||
wayland-client = { version = "0.31.11", optional = true }
|
||||
wayland-cursor = { version = "0.31.11", optional = true }
|
||||
@@ -0,0 +1,113 @@
|
||||
Author: Danny Milosavljevic <dannym@friendly-machines.com>
|
||||
Subject: Exclude libwebrtc dependency from audio crate on Linux.
|
||||
Date: 2026-03-01
|
||||
|
||||
The audio crate conditionally depends on libwebrtc for echo cancellation
|
||||
on platforms that have it. It already cfg-guards the libwebrtc usage for
|
||||
Windows-GNU and FreeBSD. Add target_os = "linux" to those cfg conditions
|
||||
so libwebrtc is not required on Linux either. The rest of the audio crate
|
||||
(sound playback, output streams, end_call) continues to work without it.
|
||||
|
||||
--- a/crates/audio/Cargo.toml 2026-03-01 21:21:38.652107544 +0000
|
||||
+++ b/crates/audio/Cargo.toml 2026-03-01 21:22:20.494478427 +0000
|
||||
@@ -29,5 +29,5 @@
|
||||
thiserror.workspace = true
|
||||
util.workspace = true
|
||||
|
||||
-[target.'cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))'.dependencies]
|
||||
+[target.'cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd", target_os = "linux")))'.dependencies]
|
||||
libwebrtc = { rev = "5f04705ac3f356350ae31534ffbc476abc9ea83d", git = "https://github.com/zed-industries/livekit-rust-sdks" }
|
||||
--- a/crates/audio/src/audio.rs 2026-03-01 21:21:38.656793329 +0000
|
||||
+++ b/crates/audio/src/audio.rs 2026-03-01 21:40:18.939230433 +0000
|
||||
@@ -6,7 +6,7 @@
|
||||
};
|
||||
use gpui::{App, AsyncApp, BackgroundExecutor, BorrowAppContext, Global};
|
||||
|
||||
-#[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))]
|
||||
+#[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd", target_os = "linux")))]
|
||||
mod non_windows_and_freebsd_deps {
|
||||
pub(super) use cpal::Sample;
|
||||
pub(super) use libwebrtc::native::apm;
|
||||
@@ -15,7 +15,7 @@
|
||||
pub(super) use std::sync::Arc;
|
||||
}
|
||||
|
||||
-#[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))]
|
||||
+#[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd", target_os = "linux")))]
|
||||
use non_windows_and_freebsd_deps::*;
|
||||
|
||||
use rodio::{
|
||||
@@ -102,7 +102,7 @@
|
||||
|
||||
pub struct Audio {
|
||||
output_handle: Option<MixerDeviceSink>,
|
||||
- #[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))]
|
||||
+ #[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd", target_os = "linux")))]
|
||||
pub echo_canceller: Arc<Mutex<apm::AudioProcessingModule>>,
|
||||
source_cache: HashMap<Sound, Buffered<Decoder<Cursor<Vec<u8>>>>>,
|
||||
replays: replays::Replays,
|
||||
@@ -114,7 +114,7 @@
|
||||
output_handle: Default::default(),
|
||||
#[cfg(not(any(
|
||||
all(target_os = "windows", target_env = "gnu"),
|
||||
- target_os = "freebsd"
|
||||
+ target_os = "freebsd", target_os = "linux"
|
||||
)))]
|
||||
echo_canceller: Arc::new(Mutex::new(apm::AudioProcessingModule::new(
|
||||
true, false, false, false,
|
||||
@@ -140,13 +140,13 @@
|
||||
// The webrtc apm is not yet compiling for windows & freebsd
|
||||
#[cfg(not(any(
|
||||
any(all(target_os = "windows", target_env = "gnu")),
|
||||
- target_os = "freebsd"
|
||||
+ target_os = "freebsd", target_os = "linux"
|
||||
)))]
|
||||
let echo_canceller = Arc::clone(&self.echo_canceller);
|
||||
|
||||
#[cfg(not(any(
|
||||
any(all(target_os = "windows", target_env = "gnu")),
|
||||
- target_os = "freebsd"
|
||||
+ target_os = "freebsd", target_os = "linux"
|
||||
)))]
|
||||
{
|
||||
let source = rodio::source::Zero::new(CHANNEL_COUNT, SAMPLE_RATE)
|
||||
@@ -166,10 +166,10 @@
|
||||
|
||||
#[cfg(any(
|
||||
any(all(target_os = "windows", target_env = "gnu")),
|
||||
- target_os = "freebsd"
|
||||
+ target_os = "freebsd", target_os = "linux"
|
||||
))]
|
||||
{
|
||||
- let source = rodio::source::Zero::<f32>::new(CHANNEL_COUNT, SAMPLE_RATE);
|
||||
+ let source = rodio::source::Zero::new(CHANNEL_COUNT, SAMPLE_RATE);
|
||||
output_handle.mixer().add(source);
|
||||
}
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
self.replays.replays_to_tar(executor)
|
||||
}
|
||||
|
||||
- #[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))]
|
||||
+ #[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd", target_os = "linux")))]
|
||||
pub fn open_microphone(voip_parts: VoipParts) -> anyhow::Result<impl Source> {
|
||||
let stream = open_input_stream(voip_parts.input_audio_device)?;
|
||||
let stream = stream
|
||||
@@ -319,7 +319,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
-#[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))]
|
||||
+#[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd", target_os = "linux")))]
|
||||
pub struct VoipParts {
|
||||
echo_canceller: Arc<Mutex<apm::AudioProcessingModule>>,
|
||||
replays: replays::Replays,
|
||||
@@ -327,7 +327,7 @@
|
||||
input_audio_device: Option<DeviceId>,
|
||||
}
|
||||
|
||||
-#[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))]
|
||||
+#[cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd", target_os = "linux")))]
|
||||
impl VoipParts {
|
||||
pub fn new(cx: &AsyncApp) -> anyhow::Result<Self> {
|
||||
let (apm, replays) = cx.read_default_global::<Audio, _>(|audio, _| {
|
||||
320
gnu/packages/patches/zed-0.225.10-fix-sqlite-memory-mode.patch
Normal file
320
gnu/packages/patches/zed-0.225.10-fix-sqlite-memory-mode.patch
Normal file
@@ -0,0 +1,320 @@
|
||||
From: Danny Milosavljevic <dannym@friendly-machines.com>
|
||||
Date: Fri, 6 Mar 2026 21:06:00 +0000
|
||||
Subject: [PATCH] sqlez: Fix named in-memory SQLite mode
|
||||
License: expat
|
||||
|
||||
Zed's named "in-memory" SQLite databases were being opened with
|
||||
URI-looking paths such as `file:DB?mode=memory&cache=shared` but without
|
||||
`SQLITE_OPEN_URI`. SQLite therefore treated those strings as literal
|
||||
filenames, which leaked test databases to disk and defeated the intended
|
||||
shared-memory behavior.
|
||||
|
||||
Fix that by opening named in-memory databases with `SQLITE_OPEN_URI` so
|
||||
`mode=memory&cache=shared` is interpreted correctly, and add coverage to
|
||||
ensure no literal backing files are created.
|
||||
|
||||
That URI fix makes shared-cache schema locking real, which in turn
|
||||
exposes a second bug in `ThreadSafeConnection`: per-thread connection
|
||||
initialization can race schema setup on another connection to the same
|
||||
named in-memory database and fail while preparing `PRAGMA foreign_keys`.
|
||||
|
||||
Fix that by retrying connection initialization queries when SQLite
|
||||
reports a transient schema/database lock, and add a regression test for
|
||||
that case.
|
||||
|
||||
diff --git a/crates/sqlez/src/connection.rs b/crates/sqlez/src/connection.rs
|
||||
index 53f0d4e261..3dc530757a 100644
|
||||
--- a/crates/sqlez/src/connection.rs
|
||||
+++ b/crates/sqlez/src/connection.rs
|
||||
@@ -18,7 +18,7 @@ pub struct Connection {
|
||||
unsafe impl Send for Connection {}
|
||||
|
||||
impl Connection {
|
||||
- pub(crate) fn open(uri: &str, persistent: bool) -> Result<Self> {
|
||||
+ fn open_with_flags(uri: &str, persistent: bool, flags: i32) -> Result<Self> {
|
||||
let mut connection = Self {
|
||||
sqlite3: ptr::null_mut(),
|
||||
persistent,
|
||||
@@ -26,7 +26,6 @@ impl Connection {
|
||||
_sqlite: PhantomData,
|
||||
};
|
||||
|
||||
- let flags = SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_READWRITE;
|
||||
unsafe {
|
||||
sqlite3_open_v2(
|
||||
CString::new(uri)?.as_ptr(),
|
||||
@@ -44,6 +43,14 @@ impl Connection {
|
||||
Ok(connection)
|
||||
}
|
||||
|
||||
+ pub(crate) fn open(uri: &str, persistent: bool) -> Result<Self> {
|
||||
+ Self::open_with_flags(
|
||||
+ uri,
|
||||
+ persistent,
|
||||
+ SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_READWRITE,
|
||||
+ )
|
||||
+ }
|
||||
+
|
||||
/// Attempts to open the database at uri. If it fails, a shared memory db will be opened
|
||||
/// instead.
|
||||
pub fn open_file(uri: &str) -> Self {
|
||||
@@ -51,13 +58,20 @@ impl Connection {
|
||||
}
|
||||
|
||||
pub fn open_memory(uri: Option<&str>) -> Self {
|
||||
- let in_memory_path = if let Some(uri) = uri {
|
||||
- format!("file:{}?mode=memory&cache=shared", uri)
|
||||
+ if let Some(uri) = uri {
|
||||
+ let in_memory_path = format!("file:{}?mode=memory&cache=shared", uri);
|
||||
+ return Self::open_with_flags(
|
||||
+ &in_memory_path,
|
||||
+ false,
|
||||
+ SQLITE_OPEN_CREATE
|
||||
+ | SQLITE_OPEN_NOMUTEX
|
||||
+ | SQLITE_OPEN_READWRITE
|
||||
+ | SQLITE_OPEN_URI,
|
||||
+ )
|
||||
+ .expect("Could not create fallback in memory db");
|
||||
} else {
|
||||
- ":memory:".to_string()
|
||||
- };
|
||||
-
|
||||
- Self::open(&in_memory_path, false).expect("Could not create fallback in memory db")
|
||||
+ Self::open(":memory:", false).expect("Could not create fallback in memory db")
|
||||
+ }
|
||||
}
|
||||
|
||||
pub fn persistent(&self) -> bool {
|
||||
@@ -265,9 +279,50 @@ impl Drop for Connection {
|
||||
mod test {
|
||||
use anyhow::Result;
|
||||
use indoc::indoc;
|
||||
+ use std::{
|
||||
+ fs,
|
||||
+ sync::atomic::{AtomicUsize, Ordering},
|
||||
+ };
|
||||
|
||||
use crate::connection::Connection;
|
||||
|
||||
+ static NEXT_NAMED_MEMORY_DB_ID: AtomicUsize = AtomicUsize::new(0);
|
||||
+
|
||||
+ fn unique_named_memory_db(prefix: &str) -> String {
|
||||
+ format!(
|
||||
+ "{prefix}_{}_{}",
|
||||
+ std::process::id(),
|
||||
+ NEXT_NAMED_MEMORY_DB_ID.fetch_add(1, Ordering::Relaxed)
|
||||
+ )
|
||||
+ }
|
||||
+
|
||||
+ fn literal_named_memory_paths(name: &str) -> [String; 3] {
|
||||
+ let main = format!("file:{name}?mode=memory&cache=shared");
|
||||
+ [main.clone(), format!("{main}-wal"), format!("{main}-shm")]
|
||||
+ }
|
||||
+
|
||||
+ struct NamedMemoryPathGuard {
|
||||
+ paths: [String; 3],
|
||||
+ }
|
||||
+
|
||||
+ impl NamedMemoryPathGuard {
|
||||
+ fn new(name: &str) -> Self {
|
||||
+ let paths = literal_named_memory_paths(name);
|
||||
+ for path in &paths {
|
||||
+ let _ = fs::remove_file(path);
|
||||
+ }
|
||||
+ Self { paths }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ impl Drop for NamedMemoryPathGuard {
|
||||
+ fn drop(&mut self) {
|
||||
+ for path in &self.paths {
|
||||
+ let _ = fs::remove_file(path);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
#[test]
|
||||
fn string_round_trips() -> Result<()> {
|
||||
let connection = Connection::open_memory(Some("string_round_trips"));
|
||||
@@ -382,6 +437,41 @@ mod test {
|
||||
assert_eq!(read_blobs, vec![blob]);
|
||||
}
|
||||
|
||||
+ #[test]
|
||||
+ fn named_memory_connections_do_not_create_literal_backing_files() {
|
||||
+ let name = unique_named_memory_db("named_memory_connections_do_not_create_backing_files");
|
||||
+ let guard = NamedMemoryPathGuard::new(&name);
|
||||
+
|
||||
+ let connection1 = Connection::open_memory(Some(&name));
|
||||
+ connection1
|
||||
+ .exec(indoc! {"
|
||||
+ CREATE TABLE shared (
|
||||
+ value INTEGER
|
||||
+ )"})
|
||||
+ .unwrap()()
|
||||
+ .unwrap();
|
||||
+ connection1
|
||||
+ .exec("INSERT INTO shared (value) VALUES (7)")
|
||||
+ .unwrap()()
|
||||
+ .unwrap();
|
||||
+
|
||||
+ let connection2 = Connection::open_memory(Some(&name));
|
||||
+ assert_eq!(
|
||||
+ connection2
|
||||
+ .select_row::<i64>("SELECT value FROM shared")
|
||||
+ .unwrap()()
|
||||
+ .unwrap(),
|
||||
+ Some(7)
|
||||
+ );
|
||||
+
|
||||
+ for path in &guard.paths {
|
||||
+ assert!(
|
||||
+ fs::metadata(path).is_err(),
|
||||
+ "named in-memory database unexpectedly created backing file {path}"
|
||||
+ );
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
#[test]
|
||||
fn multi_step_statement_works() {
|
||||
let connection = Connection::open_memory(Some("multi_step_statement_works"));
|
||||
diff --git a/crates/sqlez/src/thread_safe_connection.rs b/crates/sqlez/src/thread_safe_connection.rs
|
||||
index 966f14a9c2..9d868fcba4 100644
|
||||
--- a/crates/sqlez/src/thread_safe_connection.rs
|
||||
+++ b/crates/sqlez/src/thread_safe_connection.rs
|
||||
@@ -7,12 +7,15 @@ use std::{
|
||||
ops::Deref,
|
||||
sync::{Arc, LazyLock},
|
||||
thread,
|
||||
+ time::Duration,
|
||||
};
|
||||
use thread_local::ThreadLocal;
|
||||
|
||||
use crate::{connection::Connection, domain::Migrator, util::UnboundedSyncSender};
|
||||
|
||||
const MIGRATION_RETRIES: usize = 10;
|
||||
+const CONNECTION_INITIALIZE_RETRIES: usize = 50;
|
||||
+const CONNECTION_INITIALIZE_RETRY_DELAY: Duration = Duration::from_millis(1);
|
||||
|
||||
type QueuedWrite = Box<dyn 'static + Send + FnOnce()>;
|
||||
type WriteQueue = Box<dyn 'static + Send + Sync + Fn(QueuedWrite)>;
|
||||
@@ -197,21 +200,50 @@ impl ThreadSafeConnection {
|
||||
Self::open_shared_memory(uri)
|
||||
};
|
||||
|
||||
+ if let Some(initialize_query) = connection_initialize_query {
|
||||
+ let mut last_error = None;
|
||||
+ let initialized = (0..CONNECTION_INITIALIZE_RETRIES).any(|attempt| {
|
||||
+ match connection.exec(initialize_query).and_then(|mut statement| statement()) {
|
||||
+ Ok(()) => true,
|
||||
+ Err(err)
|
||||
+ if is_schema_lock_error(&err)
|
||||
+ && attempt + 1 < CONNECTION_INITIALIZE_RETRIES =>
|
||||
+ {
|
||||
+ last_error = Some(err);
|
||||
+ thread::sleep(CONNECTION_INITIALIZE_RETRY_DELAY);
|
||||
+ false
|
||||
+ }
|
||||
+ Err(err) => {
|
||||
+ panic!(
|
||||
+ "Initialize query failed to execute: {}\n\nCaused by:\n{err:#}",
|
||||
+ initialize_query
|
||||
+ )
|
||||
+ }
|
||||
+ }
|
||||
+ });
|
||||
+
|
||||
+ if !initialized {
|
||||
+ let err = last_error.expect("connection initialization retries should record the last error");
|
||||
+ panic!(
|
||||
+ "Initialize query failed to execute after retries: {}\n\nCaused by:\n{err:#}",
|
||||
+ initialize_query
|
||||
+ );
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
// Disallow writes on the connection. The only writes allowed for thread safe connections
|
||||
// are from the background thread that can serialize them.
|
||||
*connection.write.get_mut() = false;
|
||||
|
||||
- if let Some(initialize_query) = connection_initialize_query {
|
||||
- connection.exec(initialize_query).unwrap_or_else(|_| {
|
||||
- panic!("Initialize query failed to execute: {}", initialize_query)
|
||||
- })()
|
||||
- .unwrap()
|
||||
- }
|
||||
-
|
||||
connection
|
||||
}
|
||||
}
|
||||
|
||||
+fn is_schema_lock_error(err: &anyhow::Error) -> bool {
|
||||
+ let message = format!("{err:#}");
|
||||
+ message.contains("database schema is locked") || message.contains("database is locked")
|
||||
+}
|
||||
+
|
||||
impl ThreadSafeConnection {
|
||||
/// Special constructor for ThreadSafeConnection which disallows db initialization and migrations.
|
||||
/// This allows construction to be infallible and not write to the db.
|
||||
@@ -282,7 +314,7 @@ mod test {
|
||||
use indoc::indoc;
|
||||
use std::ops::Deref;
|
||||
|
||||
- use std::thread;
|
||||
+ use std::{thread, time::Duration};
|
||||
|
||||
use crate::{domain::Domain, thread_safe_connection::ThreadSafeConnection};
|
||||
|
||||
@@ -318,38 +350,21 @@ mod test {
|
||||
}
|
||||
|
||||
#[test]
|
||||
- #[should_panic]
|
||||
- fn wild_zed_lost_failure() {
|
||||
- enum TestWorkspace {}
|
||||
- impl Domain for TestWorkspace {
|
||||
- const NAME: &str = "workspace";
|
||||
-
|
||||
- const MIGRATIONS: &[&str] = &["
|
||||
- CREATE TABLE workspaces(
|
||||
- workspace_id INTEGER PRIMARY KEY,
|
||||
- dock_visible INTEGER, -- Boolean
|
||||
- dock_anchor TEXT, -- Enum: 'Bottom' / 'Right' / 'Expanded'
|
||||
- dock_pane INTEGER, -- NULL indicates that we don't have a dock pane yet
|
||||
- timestamp TEXT DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
- FOREIGN KEY(dock_pane) REFERENCES panes(pane_id),
|
||||
- FOREIGN KEY(active_pane) REFERENCES panes(pane_id)
|
||||
- ) STRICT;
|
||||
-
|
||||
- CREATE TABLE panes(
|
||||
- pane_id INTEGER PRIMARY KEY,
|
||||
- workspace_id INTEGER NOT NULL,
|
||||
- active INTEGER NOT NULL, -- Boolean
|
||||
- FOREIGN KEY(workspace_id) REFERENCES workspaces(workspace_id)
|
||||
- ON DELETE CASCADE
|
||||
- ON UPDATE CASCADE
|
||||
- ) STRICT;
|
||||
- "];
|
||||
- }
|
||||
+ fn connection_initialize_query_retries_transient_schema_lock() {
|
||||
+ let name = "connection_initialize_query_retries_transient_schema_lock";
|
||||
+ let locking_connection = crate::connection::Connection::open_memory(Some(name));
|
||||
+ locking_connection.exec("BEGIN IMMEDIATE").unwrap()().unwrap();
|
||||
+ locking_connection
|
||||
+ .exec("CREATE TABLE test(col TEXT)")
|
||||
+ .unwrap()()
|
||||
+ .unwrap();
|
||||
|
||||
- let builder =
|
||||
- ThreadSafeConnection::builder::<TestWorkspace>("wild_zed_lost_failure", false)
|
||||
- .with_connection_initialize_query("PRAGMA FOREIGN_KEYS=true");
|
||||
+ let releaser = thread::spawn(move || {
|
||||
+ thread::sleep(Duration::from_millis(10));
|
||||
+ locking_connection.exec("ROLLBACK").unwrap()().unwrap();
|
||||
+ });
|
||||
|
||||
- smol::block_on(builder.build()).unwrap();
|
||||
+ ThreadSafeConnection::create_connection(false, name, Some("PRAGMA FOREIGN_KEYS=true"));
|
||||
+ releaser.join().unwrap();
|
||||
}
|
||||
}
|
||||
328
gnu/packages/patches/zed-0.225.10-fix-test-db-isolation.patch
Normal file
328
gnu/packages/patches/zed-0.225.10-fix-test-db-isolation.patch
Normal file
@@ -0,0 +1,328 @@
|
||||
From: Danny Milosavljevic <dannym@friendly-machines.com>
|
||||
Date: Fri, 6 Mar 2026 21:22:41 +0000
|
||||
Subject: [PATCH] db: Scope default test databases to the current test
|
||||
License: expat
|
||||
|
||||
In test builds, the default database statics use fixed names such as
|
||||
`DB` and `KEY_VALUE_STORE`. That makes unrelated tests in the same test
|
||||
binary share the same named in-memory databases, which leaks state
|
||||
across tests and makes failures depend on execution order and
|
||||
concurrency.
|
||||
|
||||
A first attempt at isolating those statics by thread is not sufficient:
|
||||
one test can legitimately use multiple threads, and splitting the test's
|
||||
workspace state across separate databases breaks parent-child foreign key
|
||||
relationships.
|
||||
|
||||
Fix this by scoping the default test databases by the current test name
|
||||
instead. The `gpui::test` harness now installs the current test name on
|
||||
the executing thread, the test dispatcher propagates that scope to its
|
||||
realtime worker threads, and the default test statics resolve one shared
|
||||
database wrapper per test scope rather than per thread.
|
||||
|
||||
That keeps sharing within a single test where it is intentional, while
|
||||
stopping hidden cross-test state leakage.
|
||||
|
||||
diff --git a/crates/db/src/db.rs b/crates/db/src/db.rs
|
||||
index 36f0365af9..3ff8499c1d 100644
|
||||
--- a/crates/db/src/db.rs
|
||||
+++ b/crates/db/src/db.rs
|
||||
@@ -19,6 +19,12 @@ use std::future::Future;
|
||||
use std::path::Path;
|
||||
use std::sync::atomic::AtomicBool;
|
||||
use std::sync::{LazyLock, atomic::Ordering};
|
||||
+#[cfg(any(test, feature = "test-support"))]
|
||||
+use std::collections::HashMap;
|
||||
+#[cfg(any(test, feature = "test-support"))]
|
||||
+use std::sync::Mutex;
|
||||
+#[cfg(any(test, feature = "test-support"))]
|
||||
+use std::{borrow::Cow, ops::Deref};
|
||||
use util::{ResultExt, maybe};
|
||||
use zed_env_vars::ZED_STATELESS;
|
||||
|
||||
@@ -97,7 +103,8 @@ async fn open_fallback_db<M: Migrator>() -> ThreadSafeConnection {
|
||||
pub async fn open_test_db<M: Migrator>(db_name: &str) -> ThreadSafeConnection {
|
||||
use sqlez::thread_safe_connection::locking_queue;
|
||||
|
||||
- ThreadSafeConnection::builder::<M>(db_name, false)
|
||||
+ let db_name = scoped_test_db_name(db_name);
|
||||
+ ThreadSafeConnection::builder::<M>(&db_name, false)
|
||||
.with_db_initialization_query(DB_INITIALIZE_QUERY)
|
||||
.with_connection_initialize_query(CONNECTION_INITIALIZE_QUERY)
|
||||
// Serialize queued writes via a mutex and run them synchronously
|
||||
@@ -107,6 +114,69 @@ pub async fn open_test_db<M: Migrator>(db_name: &str) -> ThreadSafeConnection {
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
+#[cfg(any(test, feature = "test-support"))]
|
||||
+fn scoped_test_db_name(db_name: &str) -> Cow<'_, str> {
|
||||
+ let Some(test_name) = current_test_scope_name() else {
|
||||
+ return Cow::Borrowed(db_name);
|
||||
+ };
|
||||
+
|
||||
+ let mut scoped_name = String::with_capacity(db_name.len() + test_name.len() + 2);
|
||||
+ scoped_name.push_str(db_name);
|
||||
+ scoped_name.push('@');
|
||||
+ for ch in test_name.chars() {
|
||||
+ if ch.is_ascii_alphanumeric() || matches!(ch, '-' | '_' | '.') {
|
||||
+ scoped_name.push(ch);
|
||||
+ } else {
|
||||
+ scoped_name.push('_');
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ Cow::Owned(scoped_name)
|
||||
+}
|
||||
+
|
||||
+#[cfg(any(test, feature = "test-support"))]
|
||||
+fn current_test_scope_name() -> Option<String> {
|
||||
+ if let Some(test_name) = gpui::current_test_name() {
|
||||
+ return Some(test_name.to_string());
|
||||
+ }
|
||||
+
|
||||
+ let current_thread = std::thread::current();
|
||||
+ if let Some(test_name) = current_thread.name() {
|
||||
+ return Some(test_name.to_string());
|
||||
+ }
|
||||
+
|
||||
+ Some(format!("thread_{:?}", current_thread.id()))
|
||||
+}
|
||||
+
|
||||
+#[cfg(any(test, feature = "test-support"))]
|
||||
+pub struct TestScopedStatic<T: Send + Sync + 'static> {
|
||||
+ initializer: fn() -> T,
|
||||
+ values: Mutex<HashMap<String, &'static T>>,
|
||||
+}
|
||||
+
|
||||
+#[cfg(any(test, feature = "test-support"))]
|
||||
+impl<T: Send + Sync + 'static> TestScopedStatic<T> {
|
||||
+ pub fn new(initializer: fn() -> T) -> Self {
|
||||
+ Self {
|
||||
+ initializer,
|
||||
+ values: Mutex::new(HashMap::new()),
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+#[cfg(any(test, feature = "test-support"))]
|
||||
+impl<T: Send + Sync + 'static> Deref for TestScopedStatic<T> {
|
||||
+ type Target = T;
|
||||
+
|
||||
+ fn deref(&self) -> &Self::Target {
|
||||
+ let scope_name = current_test_scope_name().unwrap_or_else(|| "default".to_string());
|
||||
+ let mut values = self.values.lock().unwrap();
|
||||
+ *values
|
||||
+ .entry(scope_name)
|
||||
+ .or_insert_with(|| Box::leak(Box::new((self.initializer)())))
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/// Implements a basic DB wrapper for a given domain
|
||||
///
|
||||
/// Arguments:
|
||||
@@ -126,16 +196,23 @@ macro_rules! static_connection {
|
||||
|
||||
impl $t {
|
||||
#[cfg(any(test, feature = "test-support"))]
|
||||
- pub async fn open_test_db(name: &'static str) -> Self {
|
||||
+ pub async fn open_test_db(name: &str) -> Self {
|
||||
$t($crate::open_test_db::<$t>(name).await)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(test, feature = "test-support"))]
|
||||
- pub static $id: std::sync::LazyLock<$t> = std::sync::LazyLock::new(|| {
|
||||
- #[allow(unused_parens)]
|
||||
- $t($crate::smol::block_on($crate::open_test_db::<($($d,)* $t)>(stringify!($id))))
|
||||
- });
|
||||
+ pub static $id: std::sync::LazyLock<$crate::TestScopedStatic<$t>> =
|
||||
+ std::sync::LazyLock::new(|| {
|
||||
+ fn initializer() -> $t {
|
||||
+ #[allow(unused_parens)]
|
||||
+ $t($crate::smol::block_on(
|
||||
+ $crate::open_test_db::<($($d,)* $t)>(stringify!($id))
|
||||
+ ))
|
||||
+ }
|
||||
+
|
||||
+ $crate::TestScopedStatic::new(initializer)
|
||||
+ });
|
||||
|
||||
#[cfg(not(any(test, feature = "test-support")))]
|
||||
pub static $id: std::sync::LazyLock<$t> = std::sync::LazyLock::new(|| {
|
||||
@@ -161,9 +238,10 @@ where
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
+ use anyhow::Result;
|
||||
use std::thread;
|
||||
|
||||
- use sqlez::domain::Domain;
|
||||
+ use sqlez::{domain::Domain, thread_safe_connection::ThreadSafeConnection};
|
||||
use sqlez_macros::sql;
|
||||
|
||||
use crate::open_db;
|
||||
@@ -295,4 +373,64 @@ mod tests {
|
||||
assert!(guard.join().is_ok());
|
||||
}
|
||||
}
|
||||
+
|
||||
+ pub struct ScopedStaticDb(ThreadSafeConnection);
|
||||
+
|
||||
+ impl Domain for ScopedStaticDb {
|
||||
+ const NAME: &str = "test_scoped_static_db";
|
||||
+ const MIGRATIONS: &[&str] = &[sql!(
|
||||
+ CREATE TABLE IF NOT EXISTS scoped_values(
|
||||
+ value INTEGER NOT NULL
|
||||
+ ) STRICT;
|
||||
+ )];
|
||||
+ }
|
||||
+
|
||||
+ crate::static_connection!(SCOPED_STATIC_DB, ScopedStaticDb, []);
|
||||
+
|
||||
+ impl ScopedStaticDb {
|
||||
+ fn replace_value(&self, value: i64) -> Result<()> {
|
||||
+ smol::block_on(self.write(move |connection| {
|
||||
+ connection.exec("DELETE FROM scoped_values")?()?;
|
||||
+ connection
|
||||
+ .exec_bound("INSERT INTO scoped_values(value) VALUES (?)")
|
||||
+ ?(value)?;
|
||||
+ anyhow::Ok(())
|
||||
+ }))
|
||||
+ }
|
||||
+
|
||||
+ fn read_value(&self) -> Result<Option<i64>> {
|
||||
+ self.select_row::<i64>("SELECT value FROM scoped_values").unwrap()()
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ #[test]
|
||||
+ fn static_test_connections_are_scoped_by_test_name() {
|
||||
+ gpui::with_test_name(Some("static_test_connections_are_scoped_by_test_name_a"), || {
|
||||
+ assert_eq!(SCOPED_STATIC_DB.read_value().unwrap(), None);
|
||||
+ SCOPED_STATIC_DB.replace_value(7).unwrap();
|
||||
+ assert_eq!(SCOPED_STATIC_DB.read_value().unwrap(), Some(7));
|
||||
+ });
|
||||
+
|
||||
+ gpui::with_test_name(Some("static_test_connections_are_scoped_by_test_name_b"), || {
|
||||
+ assert_eq!(SCOPED_STATIC_DB.read_value().unwrap(), None);
|
||||
+ SCOPED_STATIC_DB.replace_value(11).unwrap();
|
||||
+ assert_eq!(SCOPED_STATIC_DB.read_value().unwrap(), Some(11));
|
||||
+ });
|
||||
+ }
|
||||
+
|
||||
+ #[test]
|
||||
+ fn static_test_connections_share_state_across_threads_with_same_test_name() {
|
||||
+ gpui::with_test_name(
|
||||
+ Some("static_test_connections_share_state_across_threads_with_same_test_name"),
|
||||
+ || {
|
||||
+ SCOPED_STATIC_DB.replace_value(13).unwrap();
|
||||
+
|
||||
+ let test_name = gpui::current_test_name();
|
||||
+ let thread = std::thread::spawn(move || {
|
||||
+ gpui::with_test_name(test_name, || SCOPED_STATIC_DB.read_value().unwrap())
|
||||
+ });
|
||||
+ assert_eq!(thread.join().unwrap(), Some(13));
|
||||
+ },
|
||||
+ );
|
||||
+ }
|
||||
}
|
||||
diff --git a/crates/gpui/src/platform/test/dispatcher.rs b/crates/gpui/src/platform/test/dispatcher.rs
|
||||
index fc3f7f253a..0d98b082ca 100644
|
||||
--- a/crates/gpui/src/platform/test/dispatcher.rs
|
||||
+++ b/crates/gpui/src/platform/test/dispatcher.rs
|
||||
@@ -136,8 +136,9 @@ impl PlatformDispatcher for TestDispatcher {
|
||||
}
|
||||
|
||||
fn spawn_realtime(&self, f: Box<dyn FnOnce() + Send>) {
|
||||
+ let test_name = crate::current_test_name();
|
||||
std::thread::spawn(move || {
|
||||
- f();
|
||||
+ crate::with_test_name(test_name, f);
|
||||
});
|
||||
}
|
||||
}
|
||||
diff --git a/crates/gpui/src/test.rs b/crates/gpui/src/test.rs
|
||||
index 9f8fd8b198..469affdc1c 100644
|
||||
--- a/crates/gpui/src/test.rs
|
||||
+++ b/crates/gpui/src/test.rs
|
||||
@@ -29,11 +29,44 @@ use crate::{Entity, Subscription, TestAppContext, TestDispatcher};
|
||||
use futures::StreamExt as _;
|
||||
use smol::channel;
|
||||
use std::{
|
||||
+ cell::Cell,
|
||||
env,
|
||||
panic::{self, RefUnwindSafe},
|
||||
pin::Pin,
|
||||
};
|
||||
|
||||
+thread_local! {
|
||||
+ static CURRENT_TEST_NAME: Cell<Option<&'static str>> = const { Cell::new(None) };
|
||||
+}
|
||||
+
|
||||
+/// Returns the test name currently associated with this thread, if any.
|
||||
+pub fn current_test_name() -> Option<&'static str> {
|
||||
+ CURRENT_TEST_NAME.with(Cell::get)
|
||||
+}
|
||||
+
|
||||
+/// Runs the closure with the given test name installed for the current thread.
|
||||
+pub fn with_test_name<R>(name: Option<&'static str>, f: impl FnOnce() -> R) -> R {
|
||||
+ CURRENT_TEST_NAME.with(|current_name| {
|
||||
+ struct RestoreTestName<'a> {
|
||||
+ current_name: &'a Cell<Option<&'static str>>,
|
||||
+ previous_name: Option<&'static str>,
|
||||
+ }
|
||||
+
|
||||
+ impl Drop for RestoreTestName<'_> {
|
||||
+ fn drop(&mut self) {
|
||||
+ self.current_name.set(self.previous_name);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ let previous_name = current_name.replace(name);
|
||||
+ let _restore = RestoreTestName {
|
||||
+ current_name,
|
||||
+ previous_name,
|
||||
+ };
|
||||
+ f()
|
||||
+ })
|
||||
+}
|
||||
+
|
||||
/// Run the given test function with the configured parameters.
|
||||
/// This is intended for use with the `gpui::test` macro
|
||||
/// and generally should not be used directly.
|
||||
diff --git a/crates/gpui_macros/src/test.rs b/crates/gpui_macros/src/test.rs
|
||||
index 490ea07fee..3abcaad3ae 100644
|
||||
--- a/crates/gpui_macros/src/test.rs
|
||||
+++ b/crates/gpui_macros/src/test.rs
|
||||
@@ -191,10 +191,12 @@ fn generate_test_function(
|
||||
&[#seeds],
|
||||
#max_retries,
|
||||
&mut |dispatcher, _seed| {
|
||||
- let foreground_executor = gpui::ForegroundExecutor::new(std::sync::Arc::new(dispatcher.clone()));
|
||||
- #cx_vars
|
||||
- foreground_executor.block_test(#inner_fn_name(#inner_fn_args));
|
||||
- #cx_teardowns
|
||||
+ gpui::with_test_name(Some(stringify!(#outer_fn_name)), || {
|
||||
+ let foreground_executor = gpui::ForegroundExecutor::new(std::sync::Arc::new(dispatcher.clone()));
|
||||
+ #cx_vars
|
||||
+ foreground_executor.block_test(#inner_fn_name(#inner_fn_args));
|
||||
+ #cx_teardowns
|
||||
+ })
|
||||
},
|
||||
#on_failure_fn_name
|
||||
);
|
||||
@@ -274,9 +276,11 @@ fn generate_test_function(
|
||||
&[#seeds],
|
||||
#max_retries,
|
||||
&mut |dispatcher, _seed| {
|
||||
- #cx_vars
|
||||
- #inner_fn_name(#inner_fn_args);
|
||||
- #cx_teardowns
|
||||
+ gpui::with_test_name(Some(stringify!(#outer_fn_name)), || {
|
||||
+ #cx_vars
|
||||
+ #inner_fn_name(#inner_fn_args);
|
||||
+ #cx_teardowns
|
||||
+ })
|
||||
},
|
||||
#on_failure_fn_name,
|
||||
);
|
||||
310
gnu/packages/patches/zed-0.225.10-fix-workspace-race.patch
Normal file
310
gnu/packages/patches/zed-0.225.10-fix-workspace-race.patch
Normal file
@@ -0,0 +1,310 @@
|
||||
Author: Danny Milosavljevic <dannym@friendly-machines.com>
|
||||
Subject: Fix workspace persistence races during restoration.
|
||||
Date: 2026-03-01
|
||||
License: expat
|
||||
|
||||
In 0.225.10, workspace persistence has three separate ordering problems.
|
||||
|
||||
First, newly allocated workspace IDs could be used for item persistence before a
|
||||
parent row had been inserted into the workspaces table. That made editor
|
||||
persistence race with workspace creation and could fail with a foreign key
|
||||
constraint error.
|
||||
|
||||
Second, workspace layout persistence and per-item persistence run on separate
|
||||
asynchronous paths. That allowed the workspace layout to be saved with item IDs
|
||||
before the background item-serialization worker had finished writing the
|
||||
corresponding per-item rows. On restore, deserializers that require persisted
|
||||
item state could then fail with "No entry in database for item_id ...", which
|
||||
could drop restored state and break restoration features that depend on that
|
||||
persisted item state, including edited-window restoration.
|
||||
|
||||
Third, restore-side cleanup assumed that deserialized items had already been
|
||||
saved under their new runtime item IDs after being added to panes. In reality,
|
||||
adding a deserialized item only enqueues that serialization work. Cleanup could
|
||||
therefore delete the old persisted rows before the new rows existed, leaving the
|
||||
next reopen with a pane/item layout that still referenced state that had just
|
||||
been deleted.
|
||||
|
||||
This change fixes all three issues:
|
||||
|
||||
- eagerly create the parent workspaces row as soon as a new workspace ID is
|
||||
allocated, before any item serializer can write child rows
|
||||
- keep item persistence on the existing serialization queue, but add an
|
||||
ordering barrier before saving workspace layout so the layout is never
|
||||
published ahead of the item state it references
|
||||
- during restore, wait for the queued serialization of newly added
|
||||
deserialized items before cleaning up stale persisted item IDs, and skip
|
||||
that cleanup pass if the barrier cannot be established or awaited so stale
|
||||
rows are kept rather than deleting still-needed state
|
||||
|
||||
See also <https://github.com/zed-industries/zed/pull/50873>.
|
||||
|
||||
diff --git a/crates/workspace/src/persistence.rs b/crates/workspace/src/persistence.rs
|
||||
index e0ad046e8d..aeb4c3ba39 100644
|
||||
--- a/crates/workspace/src/persistence.rs
|
||||
+++ b/crates/workspace/src/persistence.rs
|
||||
@@ -2124,6 +2124,13 @@ impl WorkspaceDb {
|
||||
}
|
||||
}
|
||||
|
||||
+ query! {
|
||||
+ pub(crate) async fn ensure_workspace_row(workspace_id: WorkspaceId) -> Result<()> {
|
||||
+ INSERT OR IGNORE INTO workspaces(workspace_id)
|
||||
+ VALUES (?1)
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
query! {
|
||||
pub(crate) async fn set_window_open_status(workspace_id: WorkspaceId, bounds: SerializedWindowBounds, display: Uuid) -> Result<()> {
|
||||
UPDATE workspaces
|
||||
diff --git a/crates/workspace/src/workspace.rs b/crates/workspace/src/workspace.rs
|
||||
index 4141952cc7..3ea631ed6f 100644
|
||||
--- a/crates/workspace/src/workspace.rs
|
||||
+++ b/crates/workspace/src/workspace.rs
|
||||
@@ -1175,6 +1175,11 @@ enum WorkspaceLocation {
|
||||
None,
|
||||
}
|
||||
|
||||
+enum SerializableItemMessage {
|
||||
+ Item(Box<dyn SerializableItemHandle>),
|
||||
+ Barrier(oneshot::Sender<()>),
|
||||
+}
|
||||
+
|
||||
type PromptForNewPath = Box<
|
||||
dyn Fn(
|
||||
&mut Workspace,
|
||||
@@ -1253,7 +1258,7 @@ pub struct Workspace {
|
||||
on_prompt_for_open_path: Option<PromptForOpenPath>,
|
||||
terminal_provider: Option<Box<dyn TerminalProvider>>,
|
||||
debugger_provider: Option<Arc<dyn DebuggerProvider>>,
|
||||
- serializable_items_tx: UnboundedSender<Box<dyn SerializableItemHandle>>,
|
||||
+ serializable_items_tx: UnboundedSender<SerializableItemMessage>,
|
||||
_items_serializer: Task<Result<()>>,
|
||||
session_id: Option<String>,
|
||||
scheduled_tasks: Vec<Task<()>>,
|
||||
@@ -1554,7 +1559,7 @@ impl Workspace {
|
||||
}
|
||||
|
||||
let (serializable_items_tx, serializable_items_rx) =
|
||||
- mpsc::unbounded::<Box<dyn SerializableItemHandle>>();
|
||||
+ mpsc::unbounded::<SerializableItemMessage>();
|
||||
let _items_serializer = cx.spawn_in(window, async move |this, cx| {
|
||||
Self::serialize_items(&this, serializable_items_rx, cx).await
|
||||
});
|
||||
@@ -1759,6 +1764,7 @@ impl Workspace {
|
||||
} else {
|
||||
DB.next_id().await.unwrap_or_else(|_| Default::default())
|
||||
};
|
||||
+ DB.ensure_workspace_row(workspace_id).await?;
|
||||
|
||||
let toolchains = DB.toolchains(workspace_id).await?;
|
||||
|
||||
@@ -6036,8 +6042,16 @@ impl Workspace {
|
||||
window_id: Some(window.window_handle().window_id().as_u64()),
|
||||
user_toolchains,
|
||||
};
|
||||
+ let item_serialization_barrier = self.item_serialization_barrier();
|
||||
|
||||
window.spawn(cx, async move |_| {
|
||||
+ let Some(item_serialization_barrier) = item_serialization_barrier.log_err()
|
||||
+ else {
|
||||
+ return;
|
||||
+ };
|
||||
+ if item_serialization_barrier.await.log_err().is_none() {
|
||||
+ return;
|
||||
+ }
|
||||
persistence::DB.save_workspace(serialized_workspace).await;
|
||||
})
|
||||
}
|
||||
@@ -6108,31 +6122,49 @@ impl Workspace {
|
||||
|
||||
async fn serialize_items(
|
||||
this: &WeakEntity<Self>,
|
||||
- items_rx: UnboundedReceiver<Box<dyn SerializableItemHandle>>,
|
||||
+ mut items_rx: UnboundedReceiver<SerializableItemMessage>,
|
||||
cx: &mut AsyncWindowContext,
|
||||
) -> Result<()> {
|
||||
const CHUNK_SIZE: usize = 200;
|
||||
|
||||
- let mut serializable_items = items_rx.ready_chunks(CHUNK_SIZE);
|
||||
+ while let Some(message) = items_rx.next().await {
|
||||
+ let mut unique_items = HashMap::default();
|
||||
+ let mut barrier = None;
|
||||
+ let mut channel_closed = false;
|
||||
|
||||
- while let Some(items_received) = serializable_items.next().await {
|
||||
- let unique_items =
|
||||
- items_received
|
||||
- .into_iter()
|
||||
- .fold(HashMap::default(), |mut acc, item| {
|
||||
- acc.entry(item.item_id()).or_insert(item);
|
||||
- acc
|
||||
- });
|
||||
+ Self::push_serializable_item_message(message, &mut unique_items, &mut barrier);
|
||||
|
||||
- // We use into_iter() here so that the references to the items are moved into
|
||||
- // the tasks and not kept alive while we're sleeping.
|
||||
- for (_, item) in unique_items.into_iter() {
|
||||
- if let Ok(Some(task)) = this.update_in(cx, |workspace, window, cx| {
|
||||
- item.serialize(workspace, false, window, cx)
|
||||
- }) {
|
||||
- cx.background_spawn(async move { task.await.log_err() })
|
||||
- .detach();
|
||||
+ while barrier.is_none() && unique_items.len() < CHUNK_SIZE {
|
||||
+ match items_rx.try_next() {
|
||||
+ Ok(Some(message)) => {
|
||||
+ Self::push_serializable_item_message(
|
||||
+ message,
|
||||
+ &mut unique_items,
|
||||
+ &mut barrier,
|
||||
+ );
|
||||
+ }
|
||||
+ Ok(None) => {
|
||||
+ channel_closed = true;
|
||||
+ break;
|
||||
+ }
|
||||
+ Err(_) => break,
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ let batch_succeeded = Self::serialize_item_batch(this, unique_items, cx)
|
||||
+ .await
|
||||
+ .log_err()
|
||||
+ .is_some();
|
||||
+
|
||||
+ if let Some(barrier) = barrier {
|
||||
+ if batch_succeeded {
|
||||
+ let _ = barrier.send(());
|
||||
}
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ if channel_closed {
|
||||
+ break;
|
||||
}
|
||||
|
||||
cx.background_executor()
|
||||
@@ -6143,12 +6175,54 @@ impl Workspace {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
+ fn push_serializable_item_message(
|
||||
+ message: SerializableItemMessage,
|
||||
+ unique_items: &mut HashMap<EntityId, Box<dyn SerializableItemHandle>>,
|
||||
+ barrier: &mut Option<oneshot::Sender<()>>,
|
||||
+ ) {
|
||||
+ match message {
|
||||
+ SerializableItemMessage::Item(item) => {
|
||||
+ unique_items.entry(item.item_id()).or_insert(item);
|
||||
+ }
|
||||
+ SerializableItemMessage::Barrier(sender) => {
|
||||
+ *barrier = Some(sender);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ async fn serialize_item_batch(
|
||||
+ this: &WeakEntity<Self>,
|
||||
+ unique_items: HashMap<EntityId, Box<dyn SerializableItemHandle>>,
|
||||
+ cx: &mut AsyncWindowContext,
|
||||
+ ) -> Result<()> {
|
||||
+ let serialize_tasks = match this.update_in(cx, move |workspace, window, cx| {
|
||||
+ unique_items
|
||||
+ .into_values()
|
||||
+ .filter_map(|item| item.serialize(workspace, false, window, cx))
|
||||
+ .collect::<Vec<_>>()
|
||||
+ }) {
|
||||
+ Ok(serialize_tasks) => serialize_tasks,
|
||||
+ Err(_) => return Ok(()),
|
||||
+ };
|
||||
+
|
||||
+ try_join_all(serialize_tasks).await?;
|
||||
+ Ok(())
|
||||
+ }
|
||||
+
|
||||
+ fn item_serialization_barrier(&self) -> Result<oneshot::Receiver<()>> {
|
||||
+ let (sender, receiver) = oneshot::channel();
|
||||
+ self.serializable_items_tx
|
||||
+ .unbounded_send(SerializableItemMessage::Barrier(sender))
|
||||
+ .map_err(|err| anyhow!("failed to send item serialization barrier: {err}"))?;
|
||||
+ Ok(receiver)
|
||||
+ }
|
||||
+
|
||||
pub(crate) fn enqueue_item_serialization(
|
||||
&mut self,
|
||||
item: Box<dyn SerializableItemHandle>,
|
||||
) -> Result<()> {
|
||||
self.serializable_items_tx
|
||||
- .unbounded_send(item)
|
||||
+ .unbounded_send(SerializableItemMessage::Item(item))
|
||||
.map_err(|err| anyhow!("failed to send serializable item over channel: {err}"))
|
||||
}
|
||||
|
||||
@@ -6252,24 +6326,42 @@ impl Workspace {
|
||||
// after loading the items, we might have different items and in order to avoid
|
||||
// the database filling up, we delete items that haven't been loaded now.
|
||||
//
|
||||
- // The items that have been loaded, have been saved after they've been added to the workspace.
|
||||
- let clean_up_tasks = workspace.update_in(cx, |_, window, cx| {
|
||||
- item_ids_by_kind
|
||||
- .into_iter()
|
||||
- .map(|(item_kind, loaded_items)| {
|
||||
- SerializableItemRegistry::cleanup(
|
||||
- item_kind,
|
||||
- serialized_workspace.id,
|
||||
- loaded_items,
|
||||
- window,
|
||||
- cx,
|
||||
- )
|
||||
- .log_err()
|
||||
- })
|
||||
- .collect::<Vec<_>>()
|
||||
- })?;
|
||||
+ // Newly deserialized items only enqueue serialization when they are added to their panes.
|
||||
+ // Wait for that queued work to finish before deleting the old persisted item ids.
|
||||
+ let item_serialization_barrier = workspace
|
||||
+ .update_in(cx, |workspace, _, _| {
|
||||
+ workspace.item_serialization_barrier().log_err()
|
||||
+ })
|
||||
+ .log_err()
|
||||
+ .flatten();
|
||||
+
|
||||
+ let item_serialization_flushed = if let Some(item_serialization_barrier) =
|
||||
+ item_serialization_barrier
|
||||
+ {
|
||||
+ item_serialization_barrier.await.log_err().is_some()
|
||||
+ } else {
|
||||
+ false
|
||||
+ };
|
||||
|
||||
- futures::future::join_all(clean_up_tasks).await;
|
||||
+ if item_serialization_flushed {
|
||||
+ let clean_up_tasks = workspace.update_in(cx, |_, window, cx| {
|
||||
+ item_ids_by_kind
|
||||
+ .into_iter()
|
||||
+ .map(|(item_kind, loaded_items)| {
|
||||
+ SerializableItemRegistry::cleanup(
|
||||
+ item_kind,
|
||||
+ serialized_workspace.id,
|
||||
+ loaded_items,
|
||||
+ window,
|
||||
+ cx,
|
||||
+ )
|
||||
+ .log_err()
|
||||
+ })
|
||||
+ .collect::<Vec<_>>()
|
||||
+ })?;
|
||||
+
|
||||
+ futures::future::join_all(clean_up_tasks).await;
|
||||
+ }
|
||||
|
||||
workspace
|
||||
.update_in(cx, |workspace, window, cx| {
|
||||
@@ -9001,6 +9093,7 @@ fn deserialize_remote_project(
|
||||
} else {
|
||||
persistence::DB.next_id().await?
|
||||
};
|
||||
+ persistence::DB.ensure_workspace_row(workspace_id).await?;
|
||||
|
||||
Ok((workspace_id, serialized_workspace))
|
||||
})
|
||||
@@ -0,0 +1,163 @@
|
||||
From: Danny Milosavljevic <dannym@friendly-machines.com>
|
||||
Date: Fri, 6 Mar 2026 20:20:00 +0000
|
||||
Subject: [PATCH] workspace: Keep local workspaces whose roots are only regular files
|
||||
License: expat
|
||||
|
||||
Zed persists local workspaces for standalone regular files as well as
|
||||
directory-backed projects. Recent-workspace cleanup and last-session
|
||||
restoration were using a helper that only kept local workspaces if all
|
||||
saved paths existed and at least one of them was a directory.
|
||||
|
||||
That made local workspaces whose roots were only regular files look
|
||||
invalid. A background recent-workspaces pass could then delete the
|
||||
workspace row, which in turn cascaded to item-specific state such as
|
||||
editors. In the window edited-state restore test, reopening a
|
||||
standalone regular file could therefore fail because the saved editor
|
||||
row had been deleted by that cleanup path.
|
||||
|
||||
Fix this by treating a local workspace as valid whenever all of its
|
||||
saved paths still exist, whether those paths are directories or
|
||||
regular files. Apply the same rule to last-session workspace
|
||||
restoration, and add regression coverage for both code paths.
|
||||
|
||||
diff --git a/crates/workspace/src/persistence.rs b/crates/workspace/src/persistence.rs
|
||||
--- a/crates/workspace/src/persistence.rs
|
||||
+++ b/crates/workspace/src/persistence.rs
|
||||
@@ -1783,19 +1783,13 @@ impl WorkspaceDb {
|
||||
}
|
||||
}
|
||||
|
||||
- async fn all_paths_exist_with_a_directory(paths: &[PathBuf], fs: &dyn Fs) -> bool {
|
||||
- let mut any_dir = false;
|
||||
+ async fn all_paths_exist(paths: &[PathBuf], fs: &dyn Fs) -> bool {
|
||||
for path in paths {
|
||||
- match fs.metadata(path).await.ok().flatten() {
|
||||
- None => return false,
|
||||
- Some(meta) => {
|
||||
- if meta.is_dir {
|
||||
- any_dir = true;
|
||||
- }
|
||||
- }
|
||||
+ if fs.metadata(path).await.ok().flatten().is_none() {
|
||||
+ return false;
|
||||
}
|
||||
}
|
||||
- any_dir
|
||||
+ true
|
||||
}
|
||||
|
||||
// Returns the recent locations which are still valid on disk and deletes ones which no longer
|
||||
@@ -1843,7 +1837,11 @@ impl WorkspaceDb {
|
||||
// If a local workspace points to WSL, this check will cause us to wait for the
|
||||
// WSL VM and file server to boot up. This can block for many seconds.
|
||||
// Supported scenarios use remote workspaces.
|
||||
- if !has_wsl_path && Self::all_paths_exist_with_a_directory(paths.paths(), fs).await {
|
||||
+ //
|
||||
+ // Local workspaces may legitimately contain only regular files (for example, a
|
||||
+ // standalone file opened outside any worktree). Those should be preserved as
|
||||
+ // long as all of their saved paths still exist.
|
||||
+ if !has_wsl_path && Self::all_paths_exist(paths.paths(), fs).await {
|
||||
result.push((id, SerializedWorkspaceLocation::Local, paths, timestamp));
|
||||
} else {
|
||||
delete_tasks.push(self.delete_workspace_by_id(id));
|
||||
@@ -1903,7 +1901,7 @@ impl WorkspaceDb {
|
||||
window_id,
|
||||
});
|
||||
} else {
|
||||
- if Self::all_paths_exist_with_a_directory(paths.paths(), fs).await {
|
||||
+ if Self::all_paths_exist(paths.paths(), fs).await {
|
||||
workspaces.push(SessionWorkspace {
|
||||
workspace_id,
|
||||
location: SerializedWorkspaceLocation::Local,
|
||||
@@ -3425,6 +3423,91 @@ mod tests {
|
||||
);
|
||||
}
|
||||
|
||||
+ #[gpui::test]
|
||||
+ async fn test_recent_workspaces_on_disk_keeps_regular_file_only_workspace(
|
||||
+ cx: &mut gpui::TestAppContext,
|
||||
+ ) {
|
||||
+ let dir = tempfile::TempDir::with_prefix("regular-file-workspace").unwrap();
|
||||
+ let regular_file = dir.path().join("a");
|
||||
+
|
||||
+ let fs = fs::FakeFs::new(cx.executor());
|
||||
+ fs.insert_tree(dir.path(), json!({"a": "hey"})).await;
|
||||
+
|
||||
+ let db = WorkspaceDb::open_test_db("test_recent_workspaces_keeps_regular_file_only")
|
||||
+ .await;
|
||||
+ let workspace = SerializedWorkspace {
|
||||
+ id: WorkspaceId(1),
|
||||
+ paths: PathList::new(&[regular_file.clone()]),
|
||||
+ location: SerializedWorkspaceLocation::Local,
|
||||
+ center_group: Default::default(),
|
||||
+ window_bounds: Default::default(),
|
||||
+ display: Default::default(),
|
||||
+ docks: Default::default(),
|
||||
+ centered_layout: false,
|
||||
+ breakpoints: Default::default(),
|
||||
+ session_id: None,
|
||||
+ window_id: Some(1),
|
||||
+ user_toolchains: Default::default(),
|
||||
+ };
|
||||
+
|
||||
+ db.save_workspace(workspace.clone()).await;
|
||||
+
|
||||
+ let recent = db.recent_workspaces_on_disk(fs.as_ref()).await.unwrap();
|
||||
+ assert_eq!(
|
||||
+ recent,
|
||||
+ vec![(
|
||||
+ workspace.id,
|
||||
+ SerializedWorkspaceLocation::Local,
|
||||
+ workspace.paths.clone(),
|
||||
+ recent[0].3,
|
||||
+ )]
|
||||
+ );
|
||||
+ assert_eq!(db.workspace_for_roots(&[regular_file]).unwrap().id, workspace.id);
|
||||
+ }
|
||||
+
|
||||
+ #[gpui::test]
|
||||
+ async fn test_last_session_workspace_locations_keeps_regular_file_only_workspace(
|
||||
+ cx: &mut gpui::TestAppContext,
|
||||
+ ) {
|
||||
+ let dir = tempfile::TempDir::with_prefix("regular-file-workspace-session").unwrap();
|
||||
+ let regular_file = dir.path().join("a");
|
||||
+
|
||||
+ let fs = fs::FakeFs::new(cx.executor());
|
||||
+ fs.insert_tree(dir.path(), json!({"a": "hey"})).await;
|
||||
+
|
||||
+ let db = WorkspaceDb::open_test_db("test_last_session_keeps_regular_file_only").await;
|
||||
+ let workspace = SerializedWorkspace {
|
||||
+ id: WorkspaceId(1),
|
||||
+ paths: PathList::new(&[regular_file.clone()]),
|
||||
+ location: SerializedWorkspaceLocation::Local,
|
||||
+ center_group: Default::default(),
|
||||
+ window_bounds: Default::default(),
|
||||
+ display: Default::default(),
|
||||
+ docks: Default::default(),
|
||||
+ centered_layout: false,
|
||||
+ breakpoints: Default::default(),
|
||||
+ session_id: Some("one-session".to_owned()),
|
||||
+ window_id: Some(7),
|
||||
+ user_toolchains: Default::default(),
|
||||
+ };
|
||||
+
|
||||
+ db.save_workspace(workspace.clone()).await;
|
||||
+
|
||||
+ let locations = db
|
||||
+ .last_session_workspace_locations("one-session", None, fs.as_ref())
|
||||
+ .await
|
||||
+ .unwrap();
|
||||
+ assert_eq!(
|
||||
+ locations,
|
||||
+ vec![SessionWorkspace {
|
||||
+ workspace_id: workspace.id,
|
||||
+ location: SerializedWorkspaceLocation::Local,
|
||||
+ paths: workspace.paths,
|
||||
+ window_id: Some(WindowId::from(7u64)),
|
||||
+ }]
|
||||
+ );
|
||||
+ }
|
||||
+
|
||||
#[gpui::test]
|
||||
async fn test_get_or_create_ssh_project() {
|
||||
let db = WorkspaceDb::open_test_db("test_get_or_create_ssh_project").await;
|
||||
@@ -0,0 +1,24 @@
|
||||
Author: Danny Milosavljevic <dannym@friendly-machines.com>
|
||||
Subject: Remove the [patch.crates-io] section from Cargo.toml.
|
||||
Date: 2026-03-01
|
||||
License: expat
|
||||
|
||||
These overrides redirect crates-io dependencies to git sources, which cannot be
|
||||
fetched in an offline build. With vendored sources the overrides are unnecessary.
|
||||
|
||||
--- a/Cargo.toml
|
||||
+++ b/Cargo.toml
|
||||
@@ -804,13 +804,6 @@
|
||||
"Win32_Media",
|
||||
]
|
||||
|
||||
-[patch.crates-io]
|
||||
-async-task = { git = "https://github.com/smol-rs/async-task.git", rev = "b4486cd71e4e94fbda54ce6302444de14f4d190e" }
|
||||
-notify = { git = "https://github.com/zed-industries/notify.git", rev = "ce58c24cad542c28e04ced02e20325a4ec28a31d" }
|
||||
-notify-types = { git = "https://github.com/zed-industries/notify.git", rev = "ce58c24cad542c28e04ced02e20325a4ec28a31d" }
|
||||
-windows-capture = { git = "https://github.com/zed-industries/windows-capture.git", rev = "f0d6c1b6691db75461b732f6d5ff56eed002eeb9" }
|
||||
-calloop = { git = "https://github.com/zed-industries/calloop" }
|
||||
-
|
||||
[profile.dev]
|
||||
split-debuginfo = "unpacked"
|
||||
incremental = true
|
||||
@@ -0,0 +1,75 @@
|
||||
Author: Danny Milosavljevic <dannym@friendly-machines.com>
|
||||
Subject: Use mock livekit client on Linux to avoid libwebrtc dependency.
|
||||
Date: 2026-03-01
|
||||
License: GPL3+
|
||||
|
||||
libwebrtc is not packaged in Guix and is difficult to build from source.
|
||||
Zed already has a mock_client fallback for FreeBSD and Windows-GNU which
|
||||
lack libwebrtc. Add target_os = "linux" to those cfg conditions so Linux
|
||||
also uses mock_client, and exclude the libwebrtc/livekit dependencies from
|
||||
Cargo.toml on Linux. This disables voice/video calls but allows the rest
|
||||
of Zed to build.
|
||||
|
||||
--- a/crates/livekit_client/Cargo.toml 2026-03-01 21:21:38.647599342 +0000
|
||||
+++ b/crates/livekit_client/Cargo.toml 2026-03-01 21:22:19.846482866 +0000
|
||||
@@ -44,7 +44,7 @@
|
||||
ui.workspace = true
|
||||
util.workspace = true
|
||||
|
||||
-[target.'cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd")))'.dependencies]
|
||||
+[target.'cfg(not(any(all(target_os = "windows", target_env = "gnu"), target_os = "freebsd", target_os = "linux")))'.dependencies]
|
||||
libwebrtc = { rev = "5f04705ac3f356350ae31534ffbc476abc9ea83d", git = "https://github.com/zed-industries/livekit-rust-sdks" }
|
||||
livekit = { rev = "5f04705ac3f356350ae31534ffbc476abc9ea83d", git = "https://github.com/zed-industries/livekit-rust-sdks", features = ["__rustls-tls"] }
|
||||
|
||||
--- a/crates/livekit_client/src/lib.rs 2026-03-01 21:21:44.752291052 +0000
|
||||
+++ b/crates/livekit_client/src/lib.rs 2026-03-01 21:22:37.234363786 +0000
|
||||
@@ -15,7 +15,8 @@
|
||||
test,
|
||||
feature = "test-support",
|
||||
all(target_os = "windows", target_env = "gnu"),
|
||||
- target_os = "freebsd"
|
||||
+ target_os = "freebsd",
|
||||
+ target_os = "linux"
|
||||
))
|
||||
))]
|
||||
mod livekit_client;
|
||||
@@ -25,7 +26,8 @@
|
||||
test,
|
||||
feature = "test-support",
|
||||
all(target_os = "windows", target_env = "gnu"),
|
||||
- target_os = "freebsd"
|
||||
+ target_os = "freebsd",
|
||||
+ target_os = "linux"
|
||||
))
|
||||
))]
|
||||
pub use livekit_client::*;
|
||||
@@ -36,7 +38,8 @@
|
||||
test,
|
||||
feature = "test-support",
|
||||
all(target_os = "windows", target_env = "gnu"),
|
||||
- target_os = "freebsd"
|
||||
+ target_os = "freebsd",
|
||||
+ target_os = "linux"
|
||||
)
|
||||
))]
|
||||
mod mock_client;
|
||||
@@ -46,7 +49,8 @@
|
||||
test,
|
||||
feature = "test-support",
|
||||
all(target_os = "windows", target_env = "gnu"),
|
||||
- target_os = "freebsd"
|
||||
+ target_os = "freebsd",
|
||||
+ target_os = "linux"
|
||||
)
|
||||
))]
|
||||
pub mod test;
|
||||
@@ -56,7 +60,8 @@
|
||||
test,
|
||||
feature = "test-support",
|
||||
all(target_os = "windows", target_env = "gnu"),
|
||||
- target_os = "freebsd"
|
||||
+ target_os = "freebsd",
|
||||
+ target_os = "linux"
|
||||
)
|
||||
))]
|
||||
pub use mock_client::*;
|
||||
@@ -4,7 +4,7 @@
|
||||
;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
|
||||
;;; Copyright © 2021, 2024 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
|
||||
;;; Copyright © 2024-2025 jgart <jgart@dismail.de>
|
||||
;;; Copyright © 2024-2026 jgart <jgart@dismail.de>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -39,6 +39,7 @@
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages game-development)
|
||||
#:use-module (gnu packages image)
|
||||
#:use-module (gnu packages libedit)
|
||||
#:use-module (gnu packages libffi)
|
||||
#:use-module (gnu packages libunwind)
|
||||
#:use-module (gnu packages maths)
|
||||
@@ -236,7 +237,7 @@ it.")
|
||||
(define-public trealla
|
||||
(package
|
||||
(name "trealla")
|
||||
(version "2.92.29")
|
||||
(version "2.92.30")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -245,12 +246,13 @@ it.")
|
||||
(url "https://github.com/trealla-prolog/trealla")
|
||||
(commit (string-append "v" version))))
|
||||
(sha256
|
||||
(base32 "1032pza07dzyrsjrbh355h3cyrkwsg2vbzwwaaxcvfirjhn8zdam"))
|
||||
(base32 "1vbjv2nf3c2npf349i9y0zknc2g0hizksv0yhgscdpwzvzfp6n9m"))
|
||||
(file-name (git-file-name name version))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
(list curl
|
||||
gsl
|
||||
libedit
|
||||
libffi
|
||||
openssl
|
||||
raylib
|
||||
|
||||
@@ -10497,33 +10497,6 @@ which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
|
||||
errors when data is invalid.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public python-pydantic-1
|
||||
(package
|
||||
(inherit python-pydantic)
|
||||
(name "python-pydantic")
|
||||
(version "1.10.19")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/samuelcolvin/pydantic")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0swcpfq1y0h5dcj82idls8k5la4xh4c0vz47y7jci2qass8gjffc"))))
|
||||
(build-system pyproject-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:test-flags
|
||||
;; One test fails with not equal assertion.
|
||||
#~(list "--deselect=tests/test_validators.py::test_assert_raises_validation_error")))
|
||||
(native-inputs
|
||||
(list python-pytest
|
||||
python-pytest-mock
|
||||
python-setuptools))
|
||||
(propagated-inputs
|
||||
(list python-typing-extensions))))
|
||||
|
||||
;; It may be removed after 2026-01-05.
|
||||
(define-deprecated/public-alias python-pydantic-2 python-pydantic)
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -59,6 +59,128 @@
|
||||
(base32
|
||||
"1yhs9lj9gnzbvimv0y5f1a4my0slbvygkcjjkaxd4wkkyfvfbkxy")))))
|
||||
|
||||
;; Workspace dependency of zed.
|
||||
;;
|
||||
;; Cargo side: Cargo unifies dependency versions across zed's
|
||||
;; workspace, including this package's transitive dependencies,
|
||||
;; and records them in zed's Cargo.lock.
|
||||
;;
|
||||
;; Guix side: zed's cargo-inputs entry (generated from zed's
|
||||
;; Cargo.lock) already contains all of this package's transitive
|
||||
;; dependencies, so this package reuses zed's cargo-inputs.
|
||||
(define-public rust-alacritty-0.25.1.9d9640d
|
||||
(hidden-package
|
||||
(package
|
||||
(name "rust-alacritty")
|
||||
(version "0.25.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri
|
||||
(git-reference
|
||||
(url "https://github.com/zed-industries/alacritty")
|
||||
(commit "9d9640d4e56d67a09d049f9c0a300aae08d4f61e")))
|
||||
(file-name
|
||||
(git-file-name "rust-alacritty" "0.25.1.9d9640d"))
|
||||
(sha256
|
||||
(base32 "16g4jdbwdhqihc2x403fdaxf6m9gcj44cm53dyk68b3wl7chh29s"))))
|
||||
(build-system cargo-build-system)
|
||||
(arguments
|
||||
(list #:skip-build? #t
|
||||
#:install-source? #t
|
||||
#:cargo-package-crates ''("alacritty_terminal")
|
||||
#:cargo-package-flags ''("--no-metadata" "--no-verify"
|
||||
"--exclude-lockfile")))
|
||||
(inputs (cargo-inputs 'rust-alacritty-0.25.1.9d9640d))
|
||||
(home-page "https://github.com/zed-industries/alacritty")
|
||||
(synopsis "Terminal emulator library")
|
||||
(description
|
||||
"This package provides a terminal emulator library.")
|
||||
(license license:asl2.0))))
|
||||
|
||||
;; Workspace dependency of zed.
|
||||
;;
|
||||
;; Cargo side: Cargo unifies dependency versions across zed's
|
||||
;; workspace, including this package's transitive dependencies,
|
||||
;; and records them in zed's Cargo.lock.
|
||||
;;
|
||||
;; Guix side: zed's cargo-inputs entry (generated from zed's
|
||||
;; Cargo.lock) already contains all of this package's transitive
|
||||
;; dependencies, so this package reuses zed's cargo-inputs.
|
||||
(define-public rust-candle-0.9.1.724d75e
|
||||
(hidden-package
|
||||
(package
|
||||
(name "rust-candle")
|
||||
(version "0.9.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri
|
||||
(git-reference
|
||||
(url "https://github.com/zed-industries/candle")
|
||||
(commit "724d75eb3deebefe83f2a7381a45d4fac6eda383")))
|
||||
(file-name
|
||||
(git-file-name "rust-candle" "0.9.1.724d75e"))
|
||||
(sha256
|
||||
(base32 "1n9g84g0ikldw42f0j3ad975vjvx6ildwqh8dw3zi3rps518hx14"))
|
||||
(patches
|
||||
(search-patches
|
||||
"rust-candle-0.9.1-add-candle-onnx-to-workspace.patch"))))
|
||||
(build-system cargo-build-system)
|
||||
(arguments
|
||||
(list #:skip-build? #t
|
||||
#:install-source? #t
|
||||
#:cargo-package-crates ''("candle-core"
|
||||
"candle-nn"
|
||||
"candle-onnx")
|
||||
#:cargo-package-flags ''("--no-metadata" "--no-verify"
|
||||
"--exclude-lockfile")))
|
||||
(inputs (cargo-inputs 'rust-candle-0.9.1.724d75e))
|
||||
(home-page "https://github.com/huggingface/candle")
|
||||
(synopsis "Minimalist ML framework for Rust")
|
||||
(description
|
||||
"This package provides a minimalist ML framework for Rust.")
|
||||
(license (list license:asl2.0 license:expat)))))
|
||||
|
||||
;; Workspace dependency of zed.
|
||||
;;
|
||||
;; Cargo side: Cargo unifies dependency versions across zed's
|
||||
;; workspace, including this package's transitive dependencies,
|
||||
;; and records them in zed's Cargo.lock.
|
||||
;;
|
||||
;; Guix side: zed's cargo-inputs entry (generated from zed's
|
||||
;; Cargo.lock) already contains all of this package's transitive
|
||||
;; dependencies, so this package reuses zed's cargo-inputs.
|
||||
(define-public rust-dap-types-0.0.1.1b461b3
|
||||
(hidden-package
|
||||
(package
|
||||
(name "rust-dap-types")
|
||||
(version "0.0.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri
|
||||
(git-reference
|
||||
(url "https://github.com/zed-industries/dap-types")
|
||||
(commit "1b461b310481d01e02b2603c16d7144b926339f8")))
|
||||
(file-name
|
||||
(git-file-name "rust-dap-types" "0.0.1.1b461b3"))
|
||||
(sha256
|
||||
(base32 "0snc05ia4jvykajavsvyxcyn24s2jxbw7k9wmby23r1aqxf31i0z"))))
|
||||
(build-system cargo-build-system)
|
||||
(arguments
|
||||
(list #:skip-build? #t
|
||||
#:install-source? #t
|
||||
#:cargo-package-crates ''("dap-types")
|
||||
#:cargo-package-flags ''("--no-metadata" "--no-verify"
|
||||
"--exclude-lockfile")))
|
||||
(inputs (cargo-inputs 'rust-dap-types-0.0.1.1b461b3))
|
||||
(home-page "https://github.com/zed-industries/dap-types")
|
||||
(synopsis "Rust types for the Debug Adapter Protocol")
|
||||
(description
|
||||
"This package provides Rust types for the Debug Adapter Protocol.")
|
||||
(license (list license:asl2.0 license:expat)))))
|
||||
|
||||
(define-public rust-deunicode-1
|
||||
(hidden-package
|
||||
(package
|
||||
@@ -102,6 +224,46 @@
|
||||
transliterating them. It supports Emoji and Chinese.")
|
||||
(license license:bsd-3))))
|
||||
|
||||
;; Workspace dependency of zed.
|
||||
;;
|
||||
;; Cargo side: Cargo unifies dependency versions across zed's
|
||||
;; workspace, including this package's transitive dependencies,
|
||||
;; and records them in zed's Cargo.lock.
|
||||
;;
|
||||
;; Guix side: zed's cargo-inputs entry (generated from zed's
|
||||
;; Cargo.lock) already contains all of this package's transitive
|
||||
;; dependencies, so this package reuses zed's cargo-inputs.
|
||||
(define-public rust-gh-workflow-0.8.0.c9eac0e
|
||||
(hidden-package
|
||||
(package
|
||||
(name "rust-gh-workflow")
|
||||
(version "0.8.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri
|
||||
(git-reference
|
||||
(url "https://github.com/zed-industries/gh-workflow")
|
||||
(commit "c9eac0ed361583e1072860d96776fa52775b82ac")))
|
||||
(file-name
|
||||
(git-file-name "rust-gh-workflow" "0.8.0.c9eac0e"))
|
||||
(sha256
|
||||
(base32 "172bn9b16f7qj3mn0h8r8bwiiiw2awgqlzj5n6f2gjcgk5nmh1hp"))))
|
||||
(build-system cargo-build-system)
|
||||
(arguments
|
||||
(list #:skip-build? #t
|
||||
#:install-source? #t
|
||||
#:cargo-package-crates ''("gh-workflow-macros"
|
||||
"gh-workflow")
|
||||
#:cargo-package-flags ''("--no-metadata" "--no-verify"
|
||||
"--exclude-lockfile")))
|
||||
(inputs (cargo-inputs 'rust-gh-workflow-0.8.0.c9eac0e))
|
||||
(home-page "https://github.com/tailcallhq/gh-workflow")
|
||||
(synopsis "Type-safe GitHub Actions workflow generation")
|
||||
(description
|
||||
"This package provides type-safe GitHub Actions workflow generation.")
|
||||
(license license:expat))))
|
||||
|
||||
(define-public rust-hypher-0.1
|
||||
(hidden-package
|
||||
(package
|
||||
@@ -145,6 +307,191 @@ transliterating them. It supports Emoji and Chinese.")
|
||||
(description "@code{hypher} is a Rust library for syllabification.")
|
||||
(license (list license:expat license:asl2.0)))))
|
||||
|
||||
;; Workspace dependency of zed.
|
||||
;;
|
||||
;; Cargo side: Cargo unifies dependency versions across zed's
|
||||
;; workspace, including this package's transitive dependencies,
|
||||
;; and records them in zed's Cargo.lock.
|
||||
;;
|
||||
;; Guix side: zed's cargo-inputs entry (generated from zed's
|
||||
;; Cargo.lock) already contains all of this package's transitive
|
||||
;; dependencies, so this package reuses zed's cargo-inputs.
|
||||
;;
|
||||
;; Only livekit-protocol, livekit-runtime, and livekit-api are
|
||||
;; packaged. The libwebrtc, webrtc-sys, and livekit crates are
|
||||
;; disabled on Linux by our zed-use-mock-livekit-on-linux patch
|
||||
;; (which adds target_os = "linux" to the cfg gate), but their
|
||||
;; Cargo.toml files must remain for workspace resolution; their
|
||||
;; source is replaced with empty stubs. The snippet also deletes
|
||||
;; unused workspace members (livekit-ffi, soxr-sys, yuv-sys,
|
||||
;; imgproc, examples) and the 1.6 MiB generated livekit.serde.rs
|
||||
;; (guarded by a nonexistent "serde" feature, so never compiled).
|
||||
;;
|
||||
;; TODO: Regenerate livekit-protocol/src/livekit.rs (5650 lines)
|
||||
;; from the .proto source in the livekit-protocol/protocol
|
||||
;; submodule (github.com/livekit/protocol) using prost-build and
|
||||
;; pbjson-build as native-inputs, then delete the shipped copy.
|
||||
(define-public rust-livekit-0.7.8.5f04705
|
||||
(hidden-package
|
||||
(package
|
||||
(name "rust-livekit")
|
||||
(version "0.7.8")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri
|
||||
(git-reference
|
||||
(url "https://github.com/zed-industries/livekit-rust-sdks")
|
||||
(commit "5f04705ac3f356350ae31534ffbc476abc9ea83d")))
|
||||
(file-name
|
||||
(git-file-name "rust-livekit" "0.7.8.5f04705"))
|
||||
(sha256
|
||||
(base32 "1irnw9dax0nl8rl7jxdxs5vw6hg166jj4gf1s5cza6igvmrkl6y9"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
(for-each delete-file-recursively
|
||||
'(".github" "examples" "imgproc"
|
||||
"livekit-ffi" "soxr-sys" "yuv-sys"
|
||||
;; Keep Cargo.toml for workspace resolution
|
||||
;; but replace source with stubs.
|
||||
"libwebrtc/src"
|
||||
"livekit/src"
|
||||
"webrtc-sys/src"
|
||||
"webrtc-sys/include"
|
||||
"webrtc-sys/libwebrtc"))
|
||||
(for-each (lambda (f)
|
||||
(mkdir-p (dirname f))
|
||||
(call-with-output-file f (const #t)))
|
||||
'("libwebrtc/src/lib.rs"
|
||||
"livekit/src/lib.rs"
|
||||
"webrtc-sys/src/lib.rs"))
|
||||
(delete-file
|
||||
"livekit-protocol/src/livekit.serde.rs")
|
||||
(substitute* "Cargo.toml"
|
||||
(("\"livekit-ffi\",") "")
|
||||
(("\"soxr-sys\",") "")
|
||||
(("\"yuv-sys\",") "")
|
||||
(("\"imgproc\",") ""))))))
|
||||
(build-system cargo-build-system)
|
||||
(arguments
|
||||
(list #:skip-build? #t
|
||||
#:install-source? #t
|
||||
#:cargo-package-crates ''("livekit-protocol"
|
||||
"livekit-runtime"
|
||||
"livekit-api"
|
||||
"webrtc-sys-build"
|
||||
"webrtc-sys"
|
||||
"libwebrtc"
|
||||
"livekit")
|
||||
#:cargo-package-flags ''("--no-metadata" "--no-verify"
|
||||
"--exclude-lockfile")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(replace 'package
|
||||
(lambda* (#:key source (cargo-package-crates '())
|
||||
(cargo-package-flags '("--no-metadata" "--no-verify"))
|
||||
(vendor-dir "guix-vendor")
|
||||
#:allow-other-keys)
|
||||
(use-modules (ice-9 ftw))
|
||||
;; Same as the standard package phase, but deletes
|
||||
;; cargo's target/package/tmp-crate/ scratch directory
|
||||
;; between the packaging loop and the repacking step.
|
||||
;; Cargo copies .crate files there during packaging and
|
||||
;; does not clean up. The repacking step's recursive
|
||||
;; find-files picks them up, and scandir confuses the
|
||||
;; tmp-crate directory with an extracted crate when
|
||||
;; names sort after "tmp-crate" alphabetically.
|
||||
(when (file-exists? "Cargo.toml.orig")
|
||||
(delete-file "Cargo.toml.orig"))
|
||||
(for-each
|
||||
(lambda (pkg)
|
||||
(apply invoke "cargo" "package" "--offline"
|
||||
"--package" pkg cargo-package-flags)
|
||||
(for-each
|
||||
(lambda (crate)
|
||||
(invoke "tar" "xzf" crate "-C" vendor-dir))
|
||||
(find-files "target/package" "\\.crate$"))
|
||||
((assoc-ref %standard-phases 'patch-cargo-checksums)
|
||||
#:vendor-dir vendor-dir))
|
||||
cargo-package-crates)
|
||||
;; Delete cargo's scratch directory.
|
||||
(when (file-exists? "target/package/tmp-crate")
|
||||
(delete-file-recursively "target/package/tmp-crate"))
|
||||
;; Repack crates with deterministic timestamps.
|
||||
(with-directory-excursion "target/package"
|
||||
(for-each
|
||||
(lambda (crate)
|
||||
(invoke "tar" "xf" crate)
|
||||
(delete-file crate)
|
||||
(let ((dir
|
||||
(car (scandir
|
||||
"."
|
||||
(lambda (file)
|
||||
(and (not (member file '("." "..")))
|
||||
(not (string-suffix?
|
||||
".crate" file))))))))
|
||||
(for-each
|
||||
(lambda (file)
|
||||
(let ((s (lstat file)))
|
||||
(unless (eq? (stat:type s) 'symlink)
|
||||
(utime file 0 0 0 0))))
|
||||
(find-files dir #:directories? #t))
|
||||
(apply invoke "tar" "czf"
|
||||
(string-append dir ".crate")
|
||||
"--sort=name" "--mtime=@0"
|
||||
"--owner=root:0" "--group=root:0"
|
||||
(find-files dir #:directories? #t))
|
||||
(delete-file-recursively dir)))
|
||||
(find-files "." "\\.crate$"))))))))
|
||||
(inputs (cargo-inputs 'rust-livekit-0.7.8.5f04705))
|
||||
(home-page "https://github.com/livekit/rust-sdks")
|
||||
(synopsis "LiveKit real-time communication SDK for Rust")
|
||||
(description
|
||||
"This package provides a LiveKit real-time communication SDK for Rust.")
|
||||
(license license:asl2.0))))
|
||||
|
||||
;; Workspace dependency of zed.
|
||||
;;
|
||||
;; Cargo side: Cargo unifies dependency versions across zed's
|
||||
;; workspace, including this package's transitive dependencies,
|
||||
;; and records them in zed's Cargo.lock.
|
||||
;;
|
||||
;; Guix side: zed's cargo-inputs entry (generated from zed's
|
||||
;; Cargo.lock) already contains all of this package's transitive
|
||||
;; dependencies, so this package reuses zed's cargo-inputs.
|
||||
(define-public rust-notify-8.2.0.ce58c24
|
||||
(hidden-package
|
||||
(package
|
||||
(name "rust-notify")
|
||||
(version "8.2.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri
|
||||
(git-reference
|
||||
(url "https://github.com/zed-industries/notify.git")
|
||||
(commit "ce58c24cad542c28e04ced02e20325a4ec28a31d")))
|
||||
(file-name
|
||||
(git-file-name "rust-notify" "8.2.0.ce58c24"))
|
||||
(sha256
|
||||
(base32 "09zn3ll1vlsblgrdacyw3zx58xzdxlab8ba7h22bbb57n76dmkl0"))))
|
||||
(build-system cargo-build-system)
|
||||
(arguments
|
||||
(list #:skip-build? #t
|
||||
#:install-source? #t
|
||||
#:cargo-package-crates ''("notify-types"
|
||||
"notify")
|
||||
#:cargo-package-flags ''("--no-metadata" "--no-verify"
|
||||
"--exclude-lockfile")))
|
||||
(inputs (cargo-inputs 'rust-notify-8.2.0.ce58c24))
|
||||
(home-page "https://github.com/notify-rs/notify")
|
||||
(synopsis "Cross-platform filesystem notification library")
|
||||
(description
|
||||
"This package provides a cross-platform filesystem notification library
|
||||
for Rust.")
|
||||
(license (list license:asl2.0 license:expat)))))
|
||||
|
||||
(define-public rust-pcre2-utf32-0.2
|
||||
(hidden-package
|
||||
(package
|
||||
@@ -227,6 +574,77 @@ UTF-32 support.")
|
||||
"0zgqklzmyk893n82zq8d0is57npvy9lsfpqb83h1bbx9c42fl35p"))))
|
||||
(inputs (cargo-inputs 'rust-pipewire-0.8.0.93138d0))))))
|
||||
|
||||
;; Workspace dependency of zed.
|
||||
;;
|
||||
;; Cargo side: Cargo unifies dependency versions across zed's
|
||||
;; workspace, including this package's transitive dependencies,
|
||||
;; and records them in zed's Cargo.lock.
|
||||
;;
|
||||
;; Guix side: zed's cargo-inputs entry (generated from zed's
|
||||
;; Cargo.lock) already contains all of this package's transitive
|
||||
;; dependencies, so this package reuses zed's cargo-inputs.
|
||||
(define-public rust-pet-0.1.0.d5b5bb0
|
||||
(hidden-package
|
||||
(package
|
||||
(name "rust-pet")
|
||||
(version "0.1.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri
|
||||
(git-reference
|
||||
(url "https://github.com/microsoft/python-environment-tools.git")
|
||||
(commit "d5b5bb0c4558a51d8cc76b514bc870fd1c042f16")))
|
||||
(file-name
|
||||
(git-file-name "rust-pet" "0.1.0.d5b5bb0"))
|
||||
(sha256
|
||||
(base32 "01djr1761l7c889v9lng7igjqxiz208r2vrwij661cn2fy5xcm5f"))))
|
||||
(build-system cargo-build-system)
|
||||
(arguments
|
||||
(list #:skip-build? #t
|
||||
#:install-source? #t
|
||||
#:cargo-package-crates ''("pet-fs"
|
||||
"pet-core"
|
||||
"pet-python-utils"
|
||||
"pet-jsonrpc"
|
||||
"pet-reporter"
|
||||
"pet-conda"
|
||||
"pet-virtualenv"
|
||||
"pet-virtualenvwrapper"
|
||||
"pet-env-var-path"
|
||||
"pet-global-virtualenvs"
|
||||
"pet-homebrew"
|
||||
"pet-linux-global-python"
|
||||
"pet-mac-commandlinetools"
|
||||
"pet-mac-python-org"
|
||||
"pet-mac-xcode"
|
||||
"pet-pipenv"
|
||||
"pet-pixi"
|
||||
"pet-poetry"
|
||||
"pet-pyenv"
|
||||
"pet-telemetry"
|
||||
"pet-uv"
|
||||
"pet-venv"
|
||||
"pet-windows-store"
|
||||
"pet-windows-registry"
|
||||
"pet")
|
||||
#:cargo-package-flags ''("--no-metadata" "--no-verify"
|
||||
"--exclude-lockfile")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-versions
|
||||
(lambda _
|
||||
(let ((version #$(package-version this-package)))
|
||||
(substitute* (find-files "." "^Cargo[.]toml$")
|
||||
(("^(pet-[a-z-]*) = [{] path = \"([^\"]*)\" [}]" x pkg path)
|
||||
(string-append pkg " = { version = \"" version "\", path = \"" path "\" }")))))))))
|
||||
(inputs (cargo-inputs 'rust-pet-0.1.0.d5b5bb0))
|
||||
(home-page "https://github.com/microsoft/python-environment-tools")
|
||||
(synopsis "Python environment tools")
|
||||
(description
|
||||
"This package provides Python environment tools.")
|
||||
(license license:expat))))
|
||||
|
||||
(define-public rust-pubgrub-0.3.0.b70cf70
|
||||
(let ((commit "b70cf707aa43f21b32f3a61b8a0889b15032d5c4")
|
||||
(revision "0"))
|
||||
@@ -677,6 +1095,47 @@ intelligence.")
|
||||
(inputs (cons oniguruma
|
||||
(cargo-inputs 'rust-syntect-5.3))))))
|
||||
|
||||
;; Workspace dependency of zed.
|
||||
;;
|
||||
;; Cargo side: Cargo unifies dependency versions across zed's
|
||||
;; workspace, including this package's transitive dependencies,
|
||||
;; and records them in zed's Cargo.lock.
|
||||
;;
|
||||
;; Guix side: zed's cargo-inputs entry (generated from zed's
|
||||
;; Cargo.lock) already contains all of this package's transitive
|
||||
;; dependencies, so this package reuses zed's cargo-inputs.
|
||||
(define-public rust-tiktoken-rs-0.9.1.2570c43
|
||||
(hidden-package
|
||||
(package
|
||||
(name "rust-tiktoken-rs")
|
||||
(version "0.9.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri
|
||||
(git-reference
|
||||
(url "https://github.com/zed-industries/tiktoken-rs")
|
||||
(commit "2570c4387a8505fb8f1d3f3557454b474f1e8271")))
|
||||
(file-name
|
||||
(git-file-name "rust-tiktoken-rs" "0.9.1.2570c43"))
|
||||
(sha256
|
||||
(base32 "0yki1whx16xqgsrnr6gjsxakj6qzyvz958g6c9h15xp154kw6573"))))
|
||||
(build-system cargo-build-system)
|
||||
(arguments
|
||||
(list #:skip-build? #t
|
||||
#:install-source? #t
|
||||
#:cargo-package-crates ''("tiktoken-rs")
|
||||
#:cargo-package-flags ''("--no-metadata" "--no-verify"
|
||||
"--exclude-lockfile")))
|
||||
(inputs (cargo-inputs 'rust-tiktoken-rs-0.9.1.2570c43))
|
||||
(home-page "https://github.com/zurawiki/tiktoken-rs")
|
||||
(synopsis "Rust library for OpenAI's BPE tokenizer")
|
||||
(description
|
||||
"This package provides Rust bindings for OpenAI's @acronym{BPE, byte
|
||||
pair encoding} tokenizer, used to count and manage tokens for OpenAI
|
||||
language models.")
|
||||
(license license:expat))))
|
||||
|
||||
(define-public rust-tikv-jemallocator-for-polars
|
||||
(let ((commit "c7991e5bb6b3e9f79db6b0f48dcda67c5c3d2936")
|
||||
(revision "0"))
|
||||
@@ -960,3 +1419,95 @@ and runtime for AI-assisted coding.")
|
||||
(description "Glycin is a sandbox image decoder for image viewers and
|
||||
thumbnails to display untrusted content safely.")
|
||||
(license (list license:mpl2.0 license:lgpl2.1+))))
|
||||
|
||||
;; Workspace dependency of zed.
|
||||
;;
|
||||
;; Cargo side: Cargo unifies dependency versions across zed's
|
||||
;; workspace, including this package's transitive dependencies,
|
||||
;; and records them in zed's Cargo.lock.
|
||||
;;
|
||||
;; Guix side: zed's cargo-inputs entry (generated from zed's
|
||||
;; Cargo.lock) already contains all of this package's transitive
|
||||
;; dependencies, so this package reuses zed's cargo-inputs.
|
||||
(define-public rust-zed-xim-0.4.0-zed.16f35a2
|
||||
(hidden-package
|
||||
(package
|
||||
(name "rust-zed-xim")
|
||||
(version "0.4.0-zed")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri
|
||||
(git-reference
|
||||
(url "https://github.com/zed-industries/xim-rs.git")
|
||||
(commit "16f35a2c881b815a2b6cdfd6687988e84f8447d8")))
|
||||
(file-name
|
||||
(git-file-name "rust-zed-xim" "0.4.0-zed.16f35a2"))
|
||||
(sha256
|
||||
(base32 "14cyxxdgjpbkf8ny4c46cfqjinavi2cyxzwfngldlls97m5zh555"))))
|
||||
(build-system cargo-build-system)
|
||||
(arguments
|
||||
(list #:skip-build? #t
|
||||
#:install-source? #t
|
||||
#:cargo-package-crates ''("xim-ctext"
|
||||
"xim-parser"
|
||||
"zed-xim")
|
||||
#:cargo-package-flags ''("--no-metadata" "--no-verify"
|
||||
"--exclude-lockfile")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(replace 'package
|
||||
(lambda* (#:key source (cargo-package-crates '())
|
||||
(cargo-package-flags '("--no-metadata" "--no-verify"))
|
||||
(vendor-dir "guix-vendor")
|
||||
#:allow-other-keys)
|
||||
(use-modules (ice-9 ftw))
|
||||
;; Same as the standard package phase, but deletes
|
||||
;; cargo's target/package/tmp-crate/ scratch directory
|
||||
;; between the packaging loop and the repacking step.
|
||||
(when (file-exists? "Cargo.toml.orig")
|
||||
(delete-file "Cargo.toml.orig"))
|
||||
(for-each
|
||||
(lambda (pkg)
|
||||
(apply invoke "cargo" "package" "--offline"
|
||||
"--package" pkg cargo-package-flags)
|
||||
(for-each
|
||||
(lambda (crate)
|
||||
(invoke "tar" "xzf" crate "-C" vendor-dir))
|
||||
(find-files "target/package" "\\.crate$"))
|
||||
((assoc-ref %standard-phases 'patch-cargo-checksums)
|
||||
#:vendor-dir vendor-dir))
|
||||
cargo-package-crates)
|
||||
(when (file-exists? "target/package/tmp-crate")
|
||||
(delete-file-recursively "target/package/tmp-crate"))
|
||||
(with-directory-excursion "target/package"
|
||||
(for-each
|
||||
(lambda (crate)
|
||||
(invoke "tar" "xf" crate)
|
||||
(delete-file crate)
|
||||
(let ((dir
|
||||
(car (scandir
|
||||
"."
|
||||
(lambda (file)
|
||||
(and (not (member file '("." "..")))
|
||||
(not (string-suffix?
|
||||
".crate" file))))))))
|
||||
(for-each
|
||||
(lambda (file)
|
||||
(let ((s (lstat file)))
|
||||
(unless (eq? (stat:type s) 'symlink)
|
||||
(utime file 0 0 0 0))))
|
||||
(find-files dir #:directories? #t))
|
||||
(apply invoke "tar" "czf"
|
||||
(string-append dir ".crate")
|
||||
"--sort=name" "--mtime=@0"
|
||||
"--owner=root:0" "--group=root:0"
|
||||
(find-files dir #:directories? #t))
|
||||
(delete-file-recursively dir)))
|
||||
(find-files "." "\\.crate$"))))))))
|
||||
(inputs (cargo-inputs 'rust-zed-xim-0.4.0-zed.16f35a2))
|
||||
(home-page "https://github.com/XDeme1/xim-rs")
|
||||
(synopsis "X input method client and server")
|
||||
(description
|
||||
"This package provides a library for @code{xim}, the X input method.")
|
||||
(license license:expat))))
|
||||
|
||||
@@ -1465,12 +1465,12 @@ inference for statistical models.")
|
||||
"|"))))))))
|
||||
(native-inputs
|
||||
(list bison
|
||||
dvisvgm
|
||||
flex
|
||||
python-numpydoc
|
||||
python-sphinx
|
||||
;; python-sphinx-gallery ;; Currently broken
|
||||
swig-4.0))
|
||||
swig-4.0
|
||||
texlive-dvisvgm))
|
||||
(inputs
|
||||
(list openblas ; the only required dependency
|
||||
;; The dependencies below are all optional.
|
||||
|
||||
@@ -77776,46 +77776,7 @@ documents. It makes writing LaTeX comfortable by providing features such as
|
||||
syntax-highlighting, an integrated viewer and reference checking.")
|
||||
(license license:gpl3)))
|
||||
|
||||
(define-public dvisvgm
|
||||
(package
|
||||
(name "dvisvgm")
|
||||
(version "3.0.3")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/mgieseki/dvisvgm")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"11r401yqbw61n1mwsfk5qmwx2c92djwpl0q756qkds5kh25l9ci8"))))
|
||||
(native-inputs (list pkg-config
|
||||
autoconf
|
||||
autoconf-archive
|
||||
automake
|
||||
python-wrapper
|
||||
libtool))
|
||||
(inputs (list texlive-libkpathsea
|
||||
freetype
|
||||
fontforge
|
||||
clipper
|
||||
ghostscript
|
||||
xxhash
|
||||
brotli
|
||||
woff2
|
||||
zlib))
|
||||
(build-system gnu-build-system)
|
||||
(synopsis "Command-line utility for generating SVG from DVI, EPS and PDF
|
||||
files")
|
||||
(description
|
||||
"Dvisvgm converts TeX DVI, EPS and PDF files into an
|
||||
SVG (Scalable Vector Graphics) image. It provides full font support including
|
||||
virtual fonts, font maps and sub-fonts. The embedded SVG fonts can optionally
|
||||
be replaced with graphics paths for applications that do not support SVG
|
||||
fonts. Dvisvgm supports also colors, emTeX, tpic, papersize, PDF mapfile
|
||||
and PostScript specials. A working TeX installation is needed.")
|
||||
(home-page "https://dvisvgm.de/")
|
||||
(license license:gpl3+)))
|
||||
(define-deprecated-package dvisvgm texlive-dvisvgm) ;14/04/26
|
||||
|
||||
(define-public teximpatient
|
||||
;; The homepage seems to be distributing this version which is currently the
|
||||
|
||||
@@ -121,6 +121,7 @@
|
||||
#:use-module (gnu packages pcre)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages protobuf)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-build)
|
||||
#:use-module (gnu packages python-web)
|
||||
@@ -133,7 +134,10 @@
|
||||
#:use-module (gnu packages sqlite)
|
||||
#:use-module (gnu packages terminals)
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages version-control)
|
||||
#:use-module (gnu packages vulkan)
|
||||
#:use-module (gnu packages xdisorg)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (gnu packages xorg))
|
||||
|
||||
@@ -2018,3 +2022,174 @@ with full unicode support and antialiased text rendering.")
|
||||
syntax highlighting, customizable color scheme (including support for 24-bit true
|
||||
colours), kitty keyboard protocol, editorconfig support, amongst other features.")
|
||||
(license license:gpl2)))
|
||||
|
||||
(define-public zed
|
||||
(package
|
||||
(name "zed")
|
||||
(version "0.225.10")
|
||||
(outputs '("out" ; editor, cli, icons, desktop file
|
||||
"remote" ; zed-remote-server for remote development
|
||||
"server" ; collab server daemon
|
||||
"tools")) ; extension_cli
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/zed-industries/zed")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1d6zr88s4nj4fw01gw908aw2mqgjj25baj4gx7qnm6rsbxqrp500"))
|
||||
(patches
|
||||
(search-patches "zed-0.225.10-add-message-notification-action.patch"
|
||||
"zed-0.225.10-add-guix-container-support.patch"
|
||||
"zed-0.225.10-collapse-multiline-git-deps.patch"
|
||||
"zed-0.225.10-disable-dlopen.patch"
|
||||
"zed-0.225.10-exclude-libwebrtc-from-audio.patch"
|
||||
"zed-0.225.10-fix-sqlite-memory-mode.patch"
|
||||
"zed-0.225.10-fix-test-db-isolation.patch"
|
||||
"zed-0.225.10-fix-workspace-race.patch"
|
||||
"zed-0.225.10-keep-regular-file-workspaces.patch"
|
||||
"zed-0.225.10-remove-patch-crates-io.patch"
|
||||
"zed-0.225.10-use-mock-livekit-on-linux.patch"))
|
||||
(snippet
|
||||
#~(begin (delete-file
|
||||
"crates/zed/resources/windows/bin/x64/OpenConsole.exe")))))
|
||||
(build-system cargo-build-system)
|
||||
(arguments
|
||||
(list #:install-source? #f
|
||||
#:cargo-build-flags ''("--release" "-p" "zed")
|
||||
;; Not installed:
|
||||
;; auto_update_helper - Windows-only (empty main on Linux)
|
||||
;; eval - internal AI agent benchmarking tool
|
||||
;; edit_prediction_cli - internal edit prediction training pipeline
|
||||
;; storybook - GPUI component viewer for Zed UI development
|
||||
;; docs_preprocessor - mdbook preprocessor for Zed's docs website
|
||||
;; zed_visual_test_runner - visual regression tests, macOS-only
|
||||
#:cargo-install-paths ''("crates/zed"
|
||||
"crates/cli" ; opens files in running Zed
|
||||
;;; Install remote_server via its own cargo invocation
|
||||
;;; to avoid feature unification with the zed build.
|
||||
"crates/remote_server" ; installs as zed-remote-server
|
||||
"crates/collab" ; self-hostable collaboration server
|
||||
"crates/extension_cli") ; builds extensions from source
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'install 'install-extras
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin"))
|
||||
(libexec (string-append out "/libexec"))
|
||||
(icons512 (string-append out "/share/icons/hicolor/512x512/apps"))
|
||||
(icons1024 (string-append out "/share/icons/hicolor/1024x1024/apps"))
|
||||
(apps (string-append out "/share/applications"))
|
||||
(remote-bin (string-append (assoc-ref outputs "remote") "/bin"))
|
||||
(server-bin (string-append (assoc-ref outputs "server") "/bin"))
|
||||
(tools-bin (string-append (assoc-ref outputs "tools") "/bin")))
|
||||
;;; The cli binary is the user-facing launcher that finds
|
||||
;;; and delegates to zed-editor via ../libexec/zed-editor.
|
||||
(mkdir-p libexec)
|
||||
(rename-file (string-append bin "/zed")
|
||||
(string-append libexec "/zed-editor"))
|
||||
(rename-file (string-append bin "/cli")
|
||||
(string-append bin "/zed"))
|
||||
;;; Move remote_server to "remote" output as zed-remote-server.
|
||||
(mkdir-p remote-bin)
|
||||
(rename-file (string-append bin "/remote_server")
|
||||
(string-append remote-bin "/zed-remote-server"))
|
||||
;;; Move collab to "server" output.
|
||||
(mkdir-p server-bin)
|
||||
(rename-file (string-append bin "/collab")
|
||||
(string-append server-bin "/collab"))
|
||||
(rename-file (string-append bin "/dotenv")
|
||||
(string-append server-bin "/dotenv"))
|
||||
;;; Move zed-extension to "tools" output.
|
||||
(mkdir-p tools-bin)
|
||||
(rename-file (string-append bin "/zed-extension")
|
||||
(string-append tools-bin "/zed-extension"))
|
||||
;;; Icons.
|
||||
(mkdir-p icons512)
|
||||
(mkdir-p icons1024)
|
||||
(copy-file "crates/zed/resources/app-icon.png"
|
||||
(string-append icons512 "/zed.png"))
|
||||
(copy-file "crates/zed/resources/app-icon@2x.png"
|
||||
(string-append icons1024 "/zed.png"))
|
||||
;;; Desktop file.
|
||||
(mkdir-p apps)
|
||||
(copy-file "crates/zed/resources/zed.desktop.in"
|
||||
(string-append apps "/dev.zed.Zed.desktop"))
|
||||
(substitute* (string-append apps "/dev.zed.Zed.desktop")
|
||||
(("\\$APP_NAME") "Zed")
|
||||
(("\\$APP_CLI") "zed")
|
||||
(("\\$APP_ARGS") "%U")
|
||||
(("\\$APP_ICON") "zed")
|
||||
(("\\$DO_STARTUP_NOTIFY") "true")))))
|
||||
(add-after 'unpack 'set-env
|
||||
(lambda _
|
||||
(setenv "LIBGIT2_NO_VENDOR" "1")
|
||||
(setenv "LIBSQLITE3_SYS_USE_PKG_CONFIG" "1")))
|
||||
(add-after 'set-env 'patch-git-deps
|
||||
(lambda _
|
||||
;; All multi-line entries are collapsed to single
|
||||
;; lines by the patch. reqwest and scap already
|
||||
;; carry version fields; just strip the git source.
|
||||
(substitute* "Cargo.toml"
|
||||
(("(reqwest = \\{) git = \"[^\"]+\", rev = \"[^\"]+\", " _ prefix)
|
||||
(string-append prefix " "))
|
||||
(("(scap = \\{) git = \"[^\"]+\", rev = \"[^\"]+\", " _ prefix)
|
||||
(string-append prefix " ")))
|
||||
;; Replace all remaining git fields with version = "*"
|
||||
;; and strip rev/branch.
|
||||
(substitute* "Cargo.toml"
|
||||
(("git = \"https://[^\"]+\"")
|
||||
"version = \"*\"")
|
||||
((", rev = \"[^\"]+\"") "")
|
||||
((", branch = \"[^\"]+\"") ""))
|
||||
;; Sub-crate Cargo.toml files also have git deps.
|
||||
(for-each
|
||||
(lambda (file)
|
||||
;; rev-before-git deps: replace pair with version = "*".
|
||||
(substitute* file
|
||||
(("rev = \"[^\"]+\", git = \"[^\"]+\"")
|
||||
"version = \"*\""))
|
||||
;; git-before-rev deps that already carry a version
|
||||
;; field: strip git+rev, keep everything else.
|
||||
(substitute* file
|
||||
(("git = \"[^\"]+\" *, rev = \"[^\"]+\" *, ") "")
|
||||
((", git *= *\"[^\"]+\"") "")
|
||||
((", branch = \"[^\"]+\"") "")))
|
||||
(find-files "crates" "^Cargo\\.toml$"))
|
||||
;; nvim-rs has no version field; add one.
|
||||
(substitute* "crates/vim/Cargo.toml"
|
||||
(("(nvim-rs = \\{) " _ prefix)
|
||||
(string-append prefix " version = \"*\", "))))))))
|
||||
(native-inputs (list cmake-minimal pkg-config protobuf))
|
||||
(inputs
|
||||
(cons* alsa-lib
|
||||
bzip2
|
||||
dbus
|
||||
fontconfig
|
||||
freetype
|
||||
libgit2-1.9
|
||||
libx11
|
||||
libxcb
|
||||
libxkbcommon
|
||||
openssl
|
||||
sqlite
|
||||
vulkan-loader
|
||||
wayland
|
||||
wayland-protocols
|
||||
xcb-util-cursor
|
||||
zlib
|
||||
(list zstd "lib")
|
||||
(cargo-inputs 'zed)))
|
||||
(home-page "https://zed.dev")
|
||||
(synopsis "High-performance, multiplayer code editor")
|
||||
(description
|
||||
"Zed is a high-performance, multiplayer code editor written in Rust.
|
||||
|
||||
Note: This build disables WebRTC (libwebrtc) support because libwebrtc is
|
||||
not yet packaged in Guix. As a result, voice and video calls in collaborative
|
||||
sessions are not available. Text-based collaboration, editing, and all other
|
||||
features work normally.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
@@ -792,7 +792,7 @@ is based on Vim's builtin plugin support.")
|
||||
(define-public neovim
|
||||
(package
|
||||
(name "neovim")
|
||||
(version "0.11.5")
|
||||
(version "0.12.1")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -801,7 +801,7 @@ is based on Vim's builtin plugin support.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1b524vi44gkcsyy8w4jggvprwdsgy0gjprgxpyhh0dmqm47c0c48"))
|
||||
"1lydhvm4abh2y3336nyqqbwiszllnw63c98wdna2mrhi44gfh2jf"))
|
||||
(patches (search-patches "neovim-tree-sitter-grammar-path.patch"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
@@ -1017,7 +1017,10 @@ With the package comes a plugin to use vifm as a vim file selector.")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0k98c0i14z3adx6l4ncf2zmzk9aykqkdnws6qw4m0yj5z61zh6av"))))
|
||||
(base32 "0k98c0i14z3adx6l4ncf2zmzk9aykqkdnws6qw4m0yj5z61zh6av"))
|
||||
;; This patch can be removed when the next pynvim version after 0.6.0 is
|
||||
;; released.
|
||||
(patches (search-patches "python-pynvim-fix-test-command-error.patch"))))
|
||||
(build-system pyproject-build-system)
|
||||
(native-inputs
|
||||
(list neovim
|
||||
|
||||
@@ -2560,7 +2560,7 @@ Open Container Initiative (OCI) image layout and its tagged images.")
|
||||
(define-public skopeo
|
||||
(package
|
||||
(name "skopeo")
|
||||
(version "1.22.1")
|
||||
(version "1.22.2")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -2569,7 +2569,7 @@ Open Container Initiative (OCI) image layout and its tagged images.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0h32h02dvh6dx587idqi11938k293kawvd4d3xk5hwdi6cmpabri"))))
|
||||
"05ag8rj2w6p78llhiwb2h460nf0vn7mppaara6l1dcb84sycj8jg"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
(list go-1.24
|
||||
|
||||
@@ -1653,13 +1653,13 @@ tiled on several screens.")
|
||||
(define-public ghc-xmobar
|
||||
(package
|
||||
(name "ghc-xmobar")
|
||||
(version "0.48.1")
|
||||
(version "0.50")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (hackage-uri "xmobar" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1infcisv7l00a4z4byjwjisg4yndk0cymibfii1c7yzyzrlvavhl"))))
|
||||
"026s0q718z89vzjgva19vg58dm1l016i67mzi0wbj7kgai89w909"))))
|
||||
(build-system haskell-build-system)
|
||||
(properties '((upstream-name . "xmobar")))
|
||||
(native-inputs
|
||||
|
||||
@@ -3863,7 +3863,7 @@ using @command{dmenu}.")
|
||||
(define-public fuzzel
|
||||
(package
|
||||
(name "fuzzel")
|
||||
(version "1.14.0")
|
||||
(version "1.14.1")
|
||||
(home-page "https://codeberg.org/dnkl/fuzzel")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
@@ -3871,7 +3871,7 @@ using @command{dmenu}.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1fx1y430iwdjzba1rb6m56k3phvjn8di5v7d6rnxdqvm30085vpl"))))
|
||||
"1bk49fq66a0fr9danpj7vnq3dcfmrw1hdcc2ygqkld9z5lv1h5an"))))
|
||||
(build-system meson-build-system)
|
||||
(arguments
|
||||
(list #:build-type "release"
|
||||
|
||||
@@ -84,7 +84,6 @@ and parameters ~s~%"
|
||||
(lib (assoc-ref outputs "lib"))
|
||||
(name-version (strip-store-file-name out))
|
||||
(extra-dirs (filter-map (cut assoc-ref inputs <>) extra-directories))
|
||||
(ghc-path (getenv "GHC_PACKAGE_PATH"))
|
||||
(params `(,(string-append "--prefix=" out)
|
||||
,(string-append "--libdir=" (or lib out) "/lib")
|
||||
,(string-append "--docdir=" (or doc out)
|
||||
@@ -120,9 +119,7 @@ and parameters ~s~%"
|
||||
;; <https://www.haskell.org/cabal/users-guide/developing-packages.html>.
|
||||
(when (file-exists? "configure")
|
||||
(setenv "CONFIG_SHELL" "sh"))
|
||||
(run-setuphs "configure" params)
|
||||
|
||||
(setenv "GHC_PACKAGE_PATH" ghc-path)))
|
||||
(run-setuphs "configure" params)))
|
||||
|
||||
(define* (build #:key parallel-build? #:allow-other-keys)
|
||||
"Build a given Haskell package."
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
(make-parameter "https://www.stackage.org/api/v1/snapshot"))
|
||||
|
||||
;; Latest LTS version compatible with current GHC.
|
||||
(define %default-lts-version "20.26")
|
||||
(define %default-lts-version "24.9")
|
||||
|
||||
(define-json-mapping <stackage-lts> make-stackage-lts
|
||||
stackage-lts?
|
||||
|
||||
Reference in New Issue
Block a user