Compare commits

...

81 Commits

Author SHA1 Message Date
Saku Laesvuori
4c8736cc64 gnu: ghc-haskeline: Fix build
* gnu/packages/haskell-xyz.scm
(ghc-haskeline): Update to version 0.8.4.1.
[native-inputs]: Add which.
[phases]: Add example binary to PATH before running tests.

Change-Id: I0c006c89b766397dd144da76ae20c5326ad776f4
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:23 +02:00
Saku Laesvuori
0a2dba4538 gnu: ghc-selective: Fix build
* gnu/packages/haskell-xyz.scm (ghc-selective)[origin]: Add a snippet to
relax dependency versions.

Change-Id: Ia922e9c160a72181d91ab380be88c6aab57f5a9d
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:23 +02:00
Saku Laesvuori
c531c5c494 gnu: ghc-curve25519: Update to 0.2.8.1.
* gnu/packages/haskell-crypto.scm (ghc-curve25519): Update to 0.2.8.1.

Change-Id: Iff88678a59fdd289f04efaac1dc92216f9b74c53
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:23 +02:00
Saku Laesvuori
e6baa8e9fa gnu: ghc-wave: Fix build
* gnu/packages/haskell-xyz.scm
(ghc-wave)[native-inputs]: Add hspec-discover.
[phases]: Add a phase to relax dependency versions.

Change-Id: I8d29bc716fa4ad97ff01a490ed1122ab226f89c0
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:23 +02:00
Saku Laesvuori
9ca97d8c39 gnu: ghc-edit-distance: Fix build
* gnu/packages/haskell-xyz.scm (ghc-edit-distance)[phases]: Add a phase
to relax dependency versions.

Change-Id: I661259862380d9ca5559b0727d3129042a7c1c6c
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:23 +02:00
Saku Laesvuori
2689a01e71 gnu: ghc-proctest: Update to version 0.1.3.1 to fix build
* gnu/packages/haskell-check.scm (ghc-proctest): Update.

Change-Id: Ice9fcc508bc84def32245aa2360bc93e3f6ac63f
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:23 +02:00
Saku Laesvuori
7b37197dce gnu: ghc-parsec: Add upstream-name property
This enables updating the package with guix refresh.

* gnu/packages/haskell-xyz.scm (ghc-parsec): Add properties field.

Change-Id: I01019aa8c43ec3ac837df3aecca39ee2809259f8
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:22 +02:00
Saku Laesvuori
711089969a gnu: ghc-parsec: Update to version 3.1.18.0
* gnu/packages/haskell-xyz.scm (ghc-parsec): Update.

Change-Id: I9c6186d566255fd5fc08ed05d33cdcc0e8fbc313
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:22 +02:00
Saku Laesvuori
511c15701c gnu: ghc-atomic-write: Fix build
* gnu/packages/haskell-xyz.scm
(ghc-atomic-write)[native-inputs]: Add hspec-discover.

Change-Id: Id5242c7be61e128c9fb5ae1f28365bbf3aedd88e
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:22 +02:00
Saku Laesvuori
358f464159 gnu: ghc-validity: Fix build
* gnu/packages/haskell-xyz.scm
(ghc-validity)[native-inputs]: Add hspec-discover.

Change-Id: I0f803c494c17563c9cf20d88384344ab1e06515d
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:22 +02:00
Saku Laesvuori
f4a364611b gnu: ghc-haskell-src: Fix build
* gnu/packages/haskell-xyz.scm
(ghc-haskell-src)[native-inputs]: Add ghc-happy.

Change-Id: Iadcd0b0189f11fb1225c67c4690824f138100151
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:22 +02:00
Saku Laesvuori
8e4ecef1c5 gnu: ghc-config-value: Fix build
* gnu/packages/haskell-xyz.scm (ghc-config-value)[native-inputs]:
Add ghc-alex and ghc-happy.

Change-Id: I7ade9d411a03835052457ffe1f15d74bb923809e
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:22 +02:00
Saku Laesvuori
3ae74b3d97 gnu: ghc-lib-parser: Fix build
* gnu/packages/haskell-xyz.scm (ghc-lib-parser)[native-inputs]:
Add ghc-alex and ghc-happy.

Change-Id: I994a006dcbeaadbba997c191f67e432bc0cd4631
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:22 +02:00
Saku Laesvuori
b787d733f4 gnu: ghc-pcre-light: Fix build
* gnu/packages/haskell-xyz.scm (ghc-pcre-light)[inputs]: Add pcre.

Change-Id: Ieacbad4487647da1bdf41032bd91826e46e488e4
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:22 +02:00
Saku Laesvuori
dad77aa713 gnu: ghc-cabal-syntax: Fix build
* gnu/packages/haskell-xyz.scm
(ghc-cabal-syntax)[native-inputs]: Add ghc-alex.

Change-Id: I45664ab5fef4f45d2b8c8b52a8a4970b01e22585
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:22 +02:00
Saku Laesvuori
ea7e135271 gnu: ghc-newtype-generics: Fix build
* gnu/packages/haskell-xyz.scm
(ghc-newtype-generics)[native-inputs]: Add hspec-discover.

Change-Id: Ic7355738440d491404b10e60423d915b6bcc4a55
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:21 +02:00
Saku Laesvuori
c205e41353 gnu: ghc-easyplot: Fix build
* gnu/packages/haskell-xyz.scm (ghc-easyplot)[source]: Add a snippet to
fix the name of the setup script.

Change-Id: Ica8955b566eaf9cd76a1fedfe79d9f1383615dc8
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:21 +02:00
Saku Laesvuori
86825be2ab gnu: ghc-data-clist: Fix build
* gnu/packages/haskell-xyz.scm (ghc-data-clist)[arguments]<phases>: Add
a phase to relax dependecy constraints.

Change-Id: If6a2269fb71febb401cf00100bfc6f8c4987805b
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:21 +02:00
Saku Laesvuori
975aa48cae gnu: ghc-template-haskell: Fix build
* gnu/packages/haskell-xyz.scm (ghc-template-haskell)[arguments]: Relax
dependency version constraints on ghc-boot-th.

Change-Id: I2ce7fdf31d9206745ac53a6de595cadd5b56cc95
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:21 +02:00
Saku Laesvuori
6acf7a9c06 gnu: ghc-ed25519: Fix build
The tests no longer build with current versions of the test frameworks.

* gnu/packages/haskell-crypto.scm
(ghc-ed25519)[arguments]: Disable tests.

Change-Id: I4d727bc0616aff7992995b1711acf23442c8d2e2
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:21 +02:00
Saku Laesvuori
0fff5dd5ce gnu: ghc-doctest-driver-gen: Fix tests
* gnu/packages/haskell-xyz.scm (ghc-doctest-driver-gen)[arguments]: Add
the built binary to PATH before running the testsuite.

Change-Id: I4bf0988e1a4cd3aa190d825d9a52ad97e0d4f1c7
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:21 +02:00
Saku Laesvuori
236903e218 gnu: ghc-mysql: Fix build
* gnu/packages/haskell-xyz.scm (ghc-mysql)[inputs]: Add mariadb:dev,
openssl and zlib.
[arguments]: Disable failing tests.

Change-Id: Ib8dae50c15c84edeab9f1a6f9b2ddce19ae7bf93
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:21 +02:00
Saku Laesvuori
3e5df68673 gnu: ghc-base-compat-batteries: Fix build
* gnu/packages/haskell-xyz.scm
(ghc-base-compat-batteries)[native-inputs]: Add hspec-discover.

Change-Id: I383f8ede11b0c5632d7e53fb4975455b1fbb515f
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:21 +02:00
Saku Laesvuori
e298edb28e gnu: ghc-getopt-generics: Fix build
* gnu/packages/haskell-xyz.scm
(ghc-getopt-generics)[native-inputs]: Add hspec-discover.

Change-Id: I691c3522341c95b1b6b9162d16b961a75a8ab413
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:21 +02:00
Saku Laesvuori
86aa4e3bfc gnu: ghc-roman-numerals: Fix build.
* gnu/packages/haskell-xyz.scm (ghc-roman-numerals)[arguments]<phases>:
Relax dependency constraints on text.

Change-Id: Iad9e99d49a20925dbbfb41c285325b495c410327
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:20 +02:00
Saku Laesvuori
88aff62d8e gnu: ghc-fgl-arbitrary: Fix build
* gnu/packages/haskell-xyz.scm (ghc-fgl-arbitrary)[arguments]<phases>:
Relax dependency constraints on QuickCheck.

Change-Id: I3f09e56295b35362cfecd31c3f93df84bda7a913
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:20 +02:00
Saku Laesvuori
05c8e8cb3d gnu: ghc-pqueue: Update to version 1.5.0.0
* gnu/packages/haskell-xyz.scm (ghc-pqueue): Update to version 1.5.0.0.

Change-Id: Ie14590d5e22f8ca5c201f3f2d8baf393605570b3
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:20 +02:00
Saku Laesvuori
36b9ed4445 gnu: ghc-lzma: Fix build
* gnu/packages/haskell-xyz.scm
(ghc-lzma)[native-inputs]: Add pkg-config.

Change-Id: I1d3dbb61770ab5aa673b2f7d977948a127c27873
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:20 +02:00
Saku Laesvuori
6ed858c4c0 gnu: ghc-openglraw: Fix build
* gnu/packages/haskell-xyz.scm (ghc-openglraw)[inputs]: Add glu.

Change-Id: I3b6590c759aa2abd603e03aa1467a903812a1ffa
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:20 +02:00
Saku Laesvuori
42faa9d63a gnu: ghc-say: Fix build
* gnu/packages/haskell-xyz.scm (ghc-say)[arguments]: Disable tests.

Change-Id: Ia183669127c67636724863e5766ee5f4496151e0
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:20 +02:00
Saku Laesvuori
fcb7e4f0a3 gnu: ghc-pgp-wordlist: Update to version 0.1.0.3-1f0cfd90d62
The latest release no longer builds, but it is fixed upstream. In fact
the new version only adds the fix compared to the previous one.

* gnu/packages/haskell-xyz.scm
(ghc-pgp-wordlist): Update to version 0.1.0.3-1f0cfd90d62.
[arguments]: Run doctests with GHC_PACKAGE_PATH.

Change-Id: I58256b32ea749240db91e84beac59aae37f6fd2c
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:20 +02:00
Saku Laesvuori
2624a1b3b1 gnu: ghc-text-zipper: Fix build
* gnu/packages/haskell-xyz.scm
(ghc-text-zipper)[native-inputs]: Add hspec-discover.

Change-Id: I3c2250a2a595ec4ce45803f70c62b7e0783c29cb
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:20 +02:00
Saku Laesvuori
614cd94444 gnu: ghc-infer-license: Fix build
* gnu/packages/haskell-xyz.scm
(ghc-infer-license)[native-inputs]: Add hspec-discover.

Change-Id: I37bf070abb625510d09bdec523b77e90db07e474
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:20 +02:00
Saku Laesvuori
af1ff7b4f8 gnu: apply-refact: Update to version 0.15.0.0
* gnu/packages/haskell-apps.scm (apply-refact): Update to version
0.15.0.0.

Change-Id: I56527481ae41fed1d527ed4f753d7e4b29acd00c
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:19 +02:00
Saku Laesvuori
429f17e5ca gnu: ghc-text-icu: Fix build
* gnu/packages/haskell-xyz.scm (ghc-text-icu)[inputs]: Add icu4c.
[native-inputs]: Add pkg-config.

Change-Id: If6348e049b65f8b65db8ec854ca74d5b09b709e9
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:19 +02:00
Saku Laesvuori
91dad5a1a1 gnu: ghc-vty: Replace by ghc-vty-6
Nothing in Guix depended on vty@5 anymore and it no longer built.

* gnu/packages/haskell-xyz.scm (ghc-vty): Replace definition with that
of ghc-vty-6.
[arguments]: Add cabal revision 2.
(ghc-vty-6): Removed.
(ghc-brick-skylighting): Use ghc-vty instead of ghc-vty-6
* gnu/packages/haskell-apps.scm (matterhorn): Likewise.

Change-Id: Ib070724021c4f6485a3cc4bb108dc9040bfff042
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:19 +02:00
Saku Laesvuori
226a3509b8 gnu: ghc-vector-hashtables: Update to version 0.1.2.1
* gnu/packages/haskell-xyz.scm (ghc-vector-hashtables): Update to
version 0.1.2.1.

Change-Id: I52c14454db6f525d492f8768790cb54b08a5e124
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:19 +02:00
Saku Laesvuori
199270ef19 gnu: ghc-hs-conllu: Fix build
* gnu/packages/haskell-xyz.scm (ghc-hs-conllu)[source]: Relax dependency
versions with a snippet.

Change-Id: I53b4ad18ce52422380244fa5f46a147aa1ff3b94
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:19 +02:00
Saku Laesvuori
0cc7ff6864 gnu: ghc-irc-core: Update to version 2.13
* gnu/packages/haskell-xyz.scm (ghc-irc-core): Update to version 2.13.

Change-Id: I45d4eefc0547352283e68835ea3f39e837eb15ed
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:19 +02:00
Saku Laesvuori
aac95cc67f gnu: ghc-string-conversions: Fix build
* gnu/packages/haskell-xyz.scm (ghc-string-conversions)[native-inputs]:
Add hspec-discover.

Change-Id: I729447cb4ff39a3c094384c3d0fab28988a0ce94
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:19 +02:00
Saku Laesvuori
96af3e9bb4 gnu: ghc-hookup: Update to version 0.8
* gnu/packages/haskell-xyz.scm (ghc-hookup): Update to version 0.8.

Change-Id: I47f26a04aff65202fc9b7ee889a26e26b2f4ce64
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:18 +02:00
Saku Laesvuori
42697f220f gnu: nixfmt: Update to version 1.1.0
* gnu/packages/haskell-apps.scm (nixfmt): Update to version 1.1.0.

Change-Id: Ifff0156ebbba2fbcd559d0eae62adca85dca01aa
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:18 +02:00
Saku Laesvuori
93f6400631 gnu: ghc-generic-lens: Fix tests
* gnu/packages/haskell-xyz.scm (ghc-generic-lens)[arguments]: Run
doctests with GHC_PACKAGE_PATH.

Change-Id: Id8d03d77489a6da9efc5cc1a951df864654607b3
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:18 +02:00
Saku Laesvuori
cc5edbcc1d gnu: ghc-interpolate: Fix tests
* gnu/packages/haskell-xyz.scm (ghc-interpolate)[native-inputs]: Add
hspec-discover.

Change-Id: I9552a501d5dac36af40c7260cdedf0610a5cad8a
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:18 +02:00
Saku Laesvuori
fdd6e9391f gnu: ghc-sdl2: Fix build
* gnu/packages/haskell-xyz.scm (ghc-sdl2)[inputs]: Add sdl2.
[arguments]: Disable tests which fail due to wrong performance scaling.
[native-inputs]: Add pkg-config.

Change-Id: I607495260394d544a8c911691b3902669d971c76
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:18 +02:00
Saku Laesvuori
125d05a3f8 gnu: ghc-statistics: Fix testsuite
* gnu/packages/haskell-xyz.scm (ghc-statistics)[arguments]: Run doctests
with GHC_PACKAGE_PATH.

Change-Id: I35629afab9009b59761cc999b65ad1c56f4e9a6a
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:18 +02:00
Saku Laesvuori
d1b6ae6922 gnu: ghc-project-template: Fix testsuite
* gnu/packages/haskell-xyz.scm (ghc-project-template)[native-inputs]:
Add hspec-discover.

Change-Id: I67b48dfacbd5163300144443cf26adde70a624f2
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:18 +02:00
Saku Laesvuori
76c137ebfa gnu: ghc-aws: Fix build
* gnu/packages/haskell-xyz.scm (ghc-aws)[arguments]: Disable
network-reliant testsuite.

Change-Id: I9bd7c2f11aaf55c78cfde427b002b666d8d94aef
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-20 17:10:18 +02:00
Saku Laesvuori
f0a9b062ac gnu: packages: Update haskell packages to current Stackage
* gnu/packages/patches/ghc-chell-quickcheck-enable-qc-2.15.patch: New patch.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/dhall.scm (...): Update Haskell packages
to current Stackage.
* gnu/packages/finance.scm (...): As above.
* gnu/packages/haskell-apps.scm (...): As above.
* gnu/packages/haskell-check.scm (...): As above.
* gnu/packages/haskell-crypto.scm (...): As above.
* gnu/packages/haskell-web.scm (...): As above.
* gnu/packages/wm.scm (...): As above.
* gnu/packages/haskell-xyz.scm (...): As above.
(ghc-chell-quickcheck): Patch testsuite to work with current quickcheck.

Change-Id: I8c8bea6755121706c46606a658cba8b590780fe1

FIXUP add the chell patch

Change-Id: I5efc8f467efe85b038cd44b18acbb27826036484
Signed-off-by: Lars-Dominik Braun <lars@6xq.net>
2026-04-15 13:17:38 +02:00
Saku Laesvuori
03401147f2 guix: import: stackage: Update default LTS version to 24.9
* guix/import/stackage.scm (%default-lts-version): Update to 24.9.

Change-Id: I4bd431ef79d0ecf28b9a10c46847f1d59f670c89
Signed-off-by: Lars-Dominik Braun <lars@6xq.net>
2026-04-15 13:14:06 +02:00
Saku Laesvuori
b4f7c683cd haskell-build-system: Do not re-set GHC_PACKAGE_PATH after configure
The Cabal shipped with GHC 9.10 refuses to run tests if GHC_PACKAGE_PATH
is set. Since Cabal anyway uses the package database that it was given
in configure, this environment variable is not needed for any later
phases and we may just unset it.

* guix/build/haskell-build-system.scm (configure): Do not set
  GHC_PACKAGE_PATH after unsetting it.

Change-Id: I5b2c662c31d84be79eb39688d6dd43285fbddcb3
Signed-off-by: Lars-Dominik Braun <lars@6xq.net>
2026-04-15 13:14:06 +02:00
Saku Laesvuori
b87ca9a3d5 gnu: ghc: Update to version 9.10.2
* gnu/packages/haskell.scm (ghc): Update to ghc-9.10

Change-Id: I40da6cacc4d260902cd66d7d626375038fba4346
Signed-off-by: Lars-Dominik Braun <lars@6xq.net>
2026-04-15 13:14:06 +02:00
Saku Laesvuori
97f8dd37cd gnu: Add ghc-9.10
* gnu/packages/haskell.scm (ghc-9.10): New variable.

Change-Id: I4e4c9c4b8f135936a52ff8df16924f50de4ce726
Signed-off-by: Lars-Dominik Braun <lars@6xq.net>
2026-04-15 13:14:06 +02:00
Saku Laesvuori
f63700e8d3 gnu: Add ghc-9.8
* gnu/packages/haskell.scm (ghc-9.8): New variable.

Change-Id: I6883ed973bdd1d6eaf981605c1bc8f855f850187
Signed-off-by: Lars-Dominik Braun <lars@6xq.net>
2026-04-15 13:14:06 +02:00
Saku Laesvuori
e8c35a2d49 gnu: ghc-9.4: Fix build for bootstrapping GHC 9.8's Hadrian
The testsuite driver's worker thread pool gets filled with zombie
processes which causes it to hang and the build to time out. No idea
what might be causing that, but as 9.4 is only used to build later GHC
versions it should be enough that they pass their testsuites.

* gnu/packages/haskell.scm
(ghc-9.4): Downgrade to 9.4.3 for bootstrapping GHC 9.8's hadrian.
<arguments>[#:tests?]: Set to #f to disable failing testsuite.

Change-Id: I2c889f5fc7a6898562fcb8377fc1f582ad835434
Signed-off-by: Lars-Dominik Braun <lars@6xq.net>
2026-04-15 13:14:06 +02:00
Saku Laesvuori
eda1a86685 gnu: patches: Fix recomp015 test in GHC testsuite
*  gnu/packages/patches/ghc-testsuite-recomp015-execstack.patch: Append
   non-executable stack marker to ManySections.s instead of replacing
   the entire file with it.

Change-Id: I3c3cfbeb1a156412db7b4a633db2030fb0f0ee30
Signed-off-by: Lars-Dominik Braun <lars@6xq.net>
2026-04-15 13:14:05 +02:00
André Batista
10ea4f874e gnu: ungoogled-chromium: Update to 147.0.7727.55.
Fixes various CVEs, too many to list.

* gnu/packages/chromium.scm (%preserved-third-party-files): Add
  base/third_party/nspr,
  buildtools/third_party/libc++,
  buildtools/third_party/libc++abi,
  third_party/catapult/third_party/beautifulsoup4-4.9.3,
  third_party/catapult/third_party/html5lib-1.1,
  third_party/catapult/third_party/typ,
  third_party/dawn/third_party/renderdoc,
  third_party/dawn/third_party/webgpu-headers,
  third_party/devscripts,
  third_party/devtools-frontend/src/front_end/third_party/csp_evaluator,
  third_party/devtools-frontend/src/front_end/third_party/legacy-javascript,
  third_party/devtools-frontend/src/front_end/third_party/source-map-scopes-codec,
  third_party/federated_compute/chromium/fcp/confidentialcompute,
  third_party/freetype,
  third_party/fxdiv,
  third_party/hyphenation-patterns,
  third_party/icu,
  third_party/libc++,
  third_party/libpfm4,
  third_party/libpng,
  third_party/libx11,
  third_party/libxcb-keysyms,
  third_party/llvm-libc,
  third_party/neon_2_sse,
  third_party/opus,
  third_party/pdfium/third_party/lcms,
  third_party/pdfium/third_party/libopenjpeg,
  third_party/perfetto/protos/third_party/pprof,
  third_party/perfetto/protos/third_party/primes,
  third_party/perfetto/protos/third_party/simpleperf,
  third_party/pyyaml,
  third_party/sentencepiece,
  third_party/sentencepiece/src/third_party/darts_clone,
  third_party/six and
  third_party/skia/include/third_party/vulkan.
Remove:
  net/third_party/nss,
  third_party/compiler-rt/src/lib,
  third_party/libaom/source/libaom/third_party/SVT-AV1,
  third_party/skia/third_party/vulkanmemoryallocator and
  third_party/webrtc/rtc_base/third_party/sigslot.

(%chromium-version): Update to 147.0.7727.55.
(%ungoogled-origin, %debian-origin): Update hashes.
(%debian-patches): Add debianization/safe-libcxx.patch,
  disable/enterprise-tests.patch,
  disable/rustc-allow-features.patch,
  fixes/bytemuck.patch,
  fixes/libpng-testonly.patch,
  llvm-19/clang19.patch (move from bookwork),
  llvm-19/clone-traits.patch,
  llvm-19/keyfactory.patch,
  llvm-19/value-or.patch,
  llvm-22/ignore-for-ubsan.patch,
  trixie/cookie-string-view.patch and
  trixie/nodejs-main.patch.
Remove trixie/rust-no-alloc-shim.patch.

(%guix-patches): Add ungoogled-chromium-custom-compiler.patch and
ungoogled-chromium-empty-parsed-rustc-args.patch.  Remove
ungoogled-chromium-unbundle-icu-target.patch which was merged upstream.
(ungoogled-chromium-snippet): Remove icu from replace_gn_files args.  Our
icu does not have ucmndata.h, umapfile.h and putilimp.h which are required
to build now.
(ungoogled-chromium) [arguments] <#:configure-flags>: Add is_component_build,
webnn_use_tflite, fatal_linker_warnings, enable_perfetto_unittests,
skia_enable_skshapper_tests, tint_build_unittests, enable_nocompile_tests,
enable_screen_ai_browsertests flags and set them to false.  Set
use_system_icu to false.  Remove enable_glic, enable_js_type_check and
removed_rust_stdlib_libs.  The first two were removed and the last one is
not necessary any longer.  Add blink_symbol_level and v8_symbol_level and
set them to zero.
[arguments] <#:phases> {patch-stuff}: Remove compiler substitution which
is not needed anymore.  Adjust rustfmt_path to guix.
{include-pthreadpool}: New phase.
{adjust-CPLUS_INCLUDE_PATH}: Help clang find gcc's bits/c++config.h.
[inputs]: icu-77 is required now, even though we're not using it this time.

* gnu/packages/patches/ungoogled-chromium-custom-compiler.patch: Add it.
* gnu/packages/patches/ungoogled-chromium-empty-parsed-rustc-args.patch: Same.
* gnu/packages/patches/ungoogled-chromium-unbundle-icu-target.patch: Remove it.
* gnu/local.mk: (Un)register the above patches.

Change-Id: I597b69b15368e9b410fa3d29342700d9ea0b0d82
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-15 13:10:02 +02:00
André Batista
c5280fd612 gnu: gn: Update to 0.0-2354.6e8dcde.
* gnu/packages/build-tools.scm (gn): Update to 0.0-2354.6e8dcde.

Change-Id: Idc9f52ae9f4a758d47413922de742409d9fee4c7
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-15 13:09:55 +02:00
Efraim Flashner
ed63c9e8f7 gnu: rust-crates: Sort alphabetically.
* gnu/packages/rust-crates.scm: Sort rust crates alphabetically.

Change-Id: I2d793ef07dc9aff97216be21714c3bd180935ba3
2026-04-15 13:25:53 +03:00
Efraim Flashner
297b593f62 gnu: zed: Remove a prebuilt binary.
* gnu/packages/text-editors.scm (zed)[source]: Add a snippet to remove a
bundled binary.

Change-Id: Ie4d94807c51d71d8199195225a6e019512021719
2026-04-15 13:25:53 +03:00
Cayetano Santos
07ecb050c0 gnu: coreboot.scm: Update to 26.03.
* gnu/packages/coreboot.scm (%coreboot-version): Update to 26.03.
(%coreboot-origin): Update sha256.

Merges guix/guix!7862

Change-Id: I0cafb9431afeab0cb5a3ce80c3ffaf99ab27b0f6
2026-04-15 11:52:33 +02:00
Cayetano Santos
ac316e522a gnu: coreboot.scm: Use local variables.
* gnu/packages/coreboot.scm (%coreboot-version, %coreboot-origin): New
variables.
* gnu/packages/coreboot.scm (bincfg, ifdtool, intelmetool,
nvramtool)[version]: Replace by %coreboot-version.
[source]: Replace by %coreboot-source.

Merges guix/guix!7862

Change-Id: I9b586347823729680a1958524985abadfa67ab09
2026-04-15 11:52:22 +02:00
Ryan Campbell
99fdbdef6a gnu: python-pynvim: Fix test_command_error with neovim 0.12.x.
Neovim 0.12.0 changed the error message for invalid cursor positions
from "Cursor position outside buffer" to "Invalid cursor line: out of
range", causing test_command_error to fail.

This applies the upstream patch temporarily until a new pynvim release
is created.

Merges guix/guix!7755

* gnu/packages/patches/python-pynvim-fix-test-command-error.patch: New
patch.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/vim.scm (python-pynvim)[source]: Use it.

Change-Id: Ibff0545a60948c946c420fe7118a37d161d93a30
Signed-off-by: Cayetano Santos <csantosb@inventati.org>
2026-04-15 11:42:50 +02:00
Ryan Campbell
101b12a54a gnu: neovim: Update to 0.12.1.
* gnu/packages/vim.scm (neovim): Update to 0.12.1.

Merges guix/guix!7755

Change-Id: I56afc43fff966720e80d6c85003bdb15a87d339f
Signed-off-by: Cayetano Santos <csantosb@inventati.org>
2026-04-15 11:42:48 +02:00
Andreas Enge
aafdf7ecf7 gnu: Remove python-pydantic-1.
* gnu/packages/python-xyz.scm (python-pydantic-1): Delete variable.

Fixes: guix/guix#7186
Change-Id: I75088c0eaa764fc6dd499801da64124eb7fbecf4
2026-04-15 11:07:31 +02:00
Ada Stevenson
0999b3268c gnu: icedove: Update to 140.9.1.
Follow-up to 6ab6e5b75d

* gnu/packages/gnuzilla.scm (%icedove-build-id, %icedove-version,
thunderbird-comm-source): Update to 140.9.1.

Change-Id: Id8f6ecb30138b6e36b3856ec795d77f8ca796df1
Signed-off-by: Maxim Cournoyer <maxim@guixotic.coop>
2026-04-15 15:08:34 +09:00
Andy Tai
e296f3f012 gnu: libmicrohttpd: Update to 1.0.3.
* gnu/packages/gnunet.scm (libmicrohttpd): Update to 1.0.3.

Change-Id: I018d6b06ebab5440cfc7a4fa919228a7d3c4e04e
Merges: https://codeberg.org/guix/guix/pulls/7676
Signed-off-by: Nguyễn Gia Phong <cnx@loang.net>
2026-04-15 14:07:42 +09:00
Patrick Norton
759bdcb469 gnu: fuzzel: Update to 1.14.1.
* gnu/packages/xdisorg.scm (fuzzel): 1.14.1.

Change-Id: Ib5c29af4b9bcc19013e3be2b0a698266f0a32066
Merges: https://codeberg.org/guix/guix/pulls/7675
Signed-off-by: Nguyễn Gia Phong <cnx@loang.net>
2026-04-15 14:05:01 +09:00
Foster Hangdaan
ee985ff4d6 gnu: wesnoth: Update to 1.18.7.
* gnu/packages/games.scm (wesnoth): Update to 1.18.7.

Change-Id: I61040ae6417afa851c51799aef1f6245bf0c5dd0
Merges: https://codeberg.org/guix/guix/pulls/7721
Reviewed-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
Signed-off-by: Nguyễn Gia Phong <cnx@loang.net>
2026-04-15 13:30:48 +09:00
Danylo Kondratiev
4fdaa6e2f2 gnu: gkrellm: Update to 2.5.1.
* gnu/packages/gkrellm.scm (gkrellm): Update to 2.5.1.
  [inputs]: Drop libice.

Change-Id: Ie907b82395607dfa856000c69ea45569d4fe3266
Merges: https://codeberg.org/guix/guix/pulls/7876
Reviewed-by: Nicolas Graves <ngraves@ngraves.fr>
Signed-off-by: Nguyễn Gia Phong <cnx@loang.net>
2026-04-15 13:25:55 +09:00
Danylo Kondratiev
445e61337e gnu: gkrellm: Improve style.
* gnu/packages/gkrellm.scm (gkrellm): Run guix style.
  [inputs]: Drop input labels, remove gettext-minimal.
  [native-inputs]: Add gettext-minimal.
  [source]: Set https URL scheme.
  [arguments]<#:phases>: Convert to GExps.
  [arguments]<#:make-flags>: Set CC to (cc-for-target).
  [home-page]: Set https URL scheme.

Change-Id: I854cc3cd4537dd2ed64fa34500a6b280d6573cad
Reviewed-by: Nicolas Graves <ngraves@ngraves.fr>
Signed-off-by: Nguyễn Gia Phong <cnx@loang.net>
2026-04-15 13:25:13 +09:00
Daniel Martins
d632b423d5 gnu: Add rtcqs.
* gnu/packages/audio.scm (rtcqs): New variable.

Change-Id: If0a28098773e3daa106830d69a87666d3fe14368
Merges: https://codeberg.org/guix/guix/pulls/7858
Reviewed-by: Hugo Buddelmeijer <hugo@buddelmeijer.nl>
Signed-off-by: Nguyễn Gia Phong <cnx@loang.net>
2026-04-15 13:20:08 +09:00
aecepoglu
4a4ef229e6 gnu: sbcl-coalton: Update to 0.0.1-5.bf475c8.
* gnu/packages/lisp-xyz.scm (sbcl-coalton): Update to 0.0.1-5.bf475c8.

Change-Id: I92c6a057b982500ba0629ed663c5a86c0616e358
Signed-off-by: jgart <jgart@dismail.de>
2026-04-14 22:03:56 -04:00
Danny Milosavljevic
2c51b803e3 gnu: Add zed.
* gnu/packages/patches/zed-0.225.10-add-guix-container-support.patch: New file.
* gnu/packages/patches/zed-0.225.10-collapse-multiline-git-deps.patch: New
file.
* gnu/packages/patches/zed-0.225.10-disable-dlopen.patch: New file.
* gnu/packages/patches/zed-0.225.10-exclude-libwebrtc-from-audio.patch: New
file.
* gnu/packages/patches/zed-0.225.10-fix-sqlite-memory-mode.patch: New file.
* gnu/packages/patches/zed-0.225.10-fix-test-db-isolation.patch: New file.
* gnu/packages/patches/zed-0.225.10-fix-workspace-race.patch: New file.
* gnu/packages/patches/zed-0.225.10-keep-regular-file-workspaces.patch: New file.
* gnu/packages/patches/zed-0.225.10-remove-patch-crates-io.patch: New file.
* gnu/packages/patches/zed-0.225.10-use-mock-livekit-on-linux.patch: New file.
* gnu/packages/patches/rust-candle-0.9.1-add-candle-onnx-to-workspace.patch:
New file.
* gnu/local.mk (dist_patch_DATA): Register them.
* gnu/packages/rust-sources.scm (rust-alacritty-0.25.1.9d9640d,
rust-candle-0.9.1.724d75e, rust-dap-types-0.0.1.1b461b3,
rust-gh-workflow-0.8.0.c9eac0e, rust-livekit-0.7.8.5f04705,
rust-notify-8.2.0.ce58c24, rust-pet-0.1.0.d5b5bb0,
rust-tiktoken-rs-0.9.1.2570c43, rust-zed-xim-0.4.0-zed.16f35a2): New
variables.
* gnu/packages/rust-crates.scm (lookup-cargo-inputs): Modify.
* gnu/packages/text-editors.scm (zed): New variable.

Change-Id: I16d4c5431e3398261ac4eb74483747c09cf74449
2026-04-15 03:19:10 +02:00
jgart
6690bf46c6 gnu: trealla: Update to 2.92.30.
* gnu/packages/prolog.scm (trealla): Update to 2.92.30.
[inputs]: Add libedit.

Change-Id: Ica510ab3eed3f79a5333dda8b5f2a460780467e7
2026-04-14 19:16:11 -04:00
Igorj Gorjaĉev
58266bb4ba gnu: jpm: Update to 1.2.0.
* gnu/packages/lisp.scm (jpm): Update to 1.2.0.

Change-Id: Ib8c7c9ac1e66a767b9e280761ae48140f866a443
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-14 22:58:15 +02:00
Foster Hangdaan
69f512e520 gnu: skopeo: Update to 1.22.2.
* gnu/packages/virtualization.scm (skopeo): Update to 1.22.2.

Change-Id: I7c860a205c40cd5efd329770f6262b80716b2e4d
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-14 22:38:26 +02:00
Foster Hangdaan
83e5fe437f gnu: podman: Update to 5.8.2.
* gnu/packages/containers.scm (podman): Update to 5.8.2.

Change-Id: I681067e7c2ac11f4e12c94db5898e121b6a1e0f2
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-14 22:21:25 +02:00
Nicolas Goaziou
ef81d340cd gnu: dvisvgm: Deprecate in favor of texlive-dvisvgm.
* gnu/packages/tex.scm (dvisvgm): Deprecate.
* etc/teams/tex/tex-manifest.scm (%sundry-texlive-packages): Do not monitor
dvisvgm anymore.
* gnu/packages/statistics.scm (python-openturns): Use texlive-dvisvgm.

Change-Id: I1903a0bdd4e66f9f2a49d21029371e87924435ac
2026-04-14 22:17:55 +02:00
André Batista
5ce1b4a3e3 gnu: ublock-origin: Update to 1.70.0.
* gnu/packages/browser-extensions.scm (ublock-origin): Update to 1.70.0.
(ublock-main-assets): Update to 0-6.004af606e6a0e.
(ublock-prod-assets): Update to 0-6.6c15e4ef91888.

Change-Id: I730ef9d4623a9abe972d82c5700458f6c888077c
Signed-off-by: Andreas Enge <andreas@enge.fr>
2026-04-14 21:19:44 +02:00
Artyom V. Poptsov
e155ef7c4b gnu: Add guile-pnm.
* gnu/packages/guile-xyz.scm (guile-pnm): New variable.

Change-Id: I0e5e2fa77c6d75567983ab61c61880bef34f3e30
2026-04-14 20:03:58 +03:00
54 changed files with 16980 additions and 5913 deletions

View File

@@ -26,7 +26,6 @@
(define %sundry-texlive-packages
(list bibtool
dvisvgm
rubber
texmaker
texstudio

View File

@@ -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 \

View File

@@ -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")

View File

@@ -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")))

View File

@@ -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 _

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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.

View File

@@ -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")

View File

@@ -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))

View File

@@ -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))

View File

@@ -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

View File

@@ -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 dont 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

View File

@@ -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))

View File

@@ -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

View File

@@ -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:

View File

@@ -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

View File

@@ -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:

View File

@@ -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"

View 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

View File

@@ -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

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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)
+ }),
),
),
)

View File

@@ -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

View 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 }

View File

@@ -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, _| {

View 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();
}
}

View 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,
);

View 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))
})

View File

@@ -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;

View File

@@ -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

View File

@@ -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::*;

View File

@@ -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

View File

@@ -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

View File

@@ -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))))

View File

@@ -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.

View File

@@ -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

View File

@@ -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+)))

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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"

View File

@@ -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."

View File

@@ -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?