diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm index ab421fe870..9cd2f6884e 100644 --- a/gnu/packages/ci.scm +++ b/gnu/packages/ci.scm @@ -164,7 +164,14 @@ (define-public cuirass ;; FIXME: this is propagated by "guile-git", but it needs to be among ;; the inputs to add it to GUILE_LOAD_PATH. guile-bytestructures - guix)) + + ;; FIXME: The 'cuirass evaluate' command is multithreaded, but it + ;; uses 'open-inferior', which calls 'primitive-fork', thus + ;; potentially creating child processes that deadlock. To work + ;; around that, use the last revision of Guix where + ;; 'open-inferior' was using 'open-pipe*' rather than + ;; 'primitive-fork'. See . + guix-for-cuirass)) (native-inputs (list autoconf automake pkg-config texinfo ephemeralpg)) (native-search-paths diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 619458a0d3..16ad4fe9db 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -489,6 +489,30 @@ (define code (license license:gpl3+) (properties '((ftp-server . "alpha.gnu.org")))))) +(define-public guix-for-cuirass + ;; Known-good revision before commit + ;; bd86bbd300474204878e927f6cd3f0defa1662a5, which introduced + ;; 'primitive-fork' in 'open-inferior'. + (let ((version "1.3.0") + (commit "a27e47f9d1e22dc32bb250cfeef88cfacb930e23") + (revision 23)) + (package + (inherit guix) + (version (string-append version "-" + (number->string revision) + "." (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/git/guix.git") + (commit commit))) + (sha256 + (base32 + "12jmvagbw05hmmlrb82i0qazhlv7mcfnl4dmknwx3a9hd760g9y1")) + (file-name (string-append "guix-" version "-checkout")))) + (properties `((hidden? . #t) + ,@(package-properties guix)))))) + (define-public guix-daemon ;; This package is for internal consumption: it allows us to quickly build ;; the 'guix-daemon' program and use that in (guix self), used by 'guix