diff --git a/gnu/local.mk b/gnu/local.mk index 7fd658abac..29237b1138 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1279,8 +1279,6 @@ dist_patch_DATA = \ %D%/packages/patches/guile-linux-syscalls.patch \ %D%/packages/patches/guile-3.0-linux-syscalls.patch \ %D%/packages/patches/guile-ac-d-bus-fix-tests.patch \ - %D%/packages/patches/guile-continuation-stack-leak.patch \ - %D%/packages/patches/guile-cross-compilation.patch \ %D%/packages/patches/guile-fibers-destroy-peer-schedulers.patch \ %D%/packages/patches/guile-fibers-epoll-instance-is-dead.patch \ %D%/packages/patches/guile-fibers-fd-finalizer-leak.patch \ diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm index b78e8b739b..4380f327be 100644 --- a/gnu/packages/ci.scm +++ b/gnu/packages/ci.scm @@ -166,13 +166,7 @@ (define-public cuirass ;; the inputs to add it to GUILE_LOAD_PATH. guile-bytestructures - ;; 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)) + guix)) (native-inputs (list autoconf automake pkg-config texinfo ephemeralpg)) (native-search-paths diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 5c0065279d..edf289e574 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -391,19 +391,17 @@ (define-public guile-3.0 (define-public guile-3.0-latest (package (inherit guile-3.0) - (version "3.0.8") + (version "3.0.9") (source (origin (inherit (package-source guile-3.0)) (uri (string-append "mirror://gnu/guile/guile-" version ".tar.xz")) (sha256 (base32 - "04wagg0zr0sib0w9ly5jm91jplgfigzfgmy8fjdlx07jaq50d9ys")) - (patches (search-patches "guile-cross-compilation.patch" - "guile-continuation-stack-leak.patch")))) + "03bm1mnfc9kkg2ls942a0js7bxrdzmcffgrgg6anwdmjfan2a9hs")))) (arguments (substitute-keyword-arguments (package-arguments guile-3.0) - ;; Guile 3.0.8 is bit-reproducible when built in parallel, thanks to + ;; Guile 3.0.9 is bit-reproducible when built in parallel, thanks to ;; its multi-stage build process for cross-module inlining, except when ;; cross-compiling. ((#:parallel-build? _ #f) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 091febe6ac..6ae6f58b6b 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -510,30 +510,6 @@ (define* (channel-source->package source #:key commit) (export channel-source->package) -(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 diff --git a/gnu/packages/patches/guile-continuation-stack-leak.patch b/gnu/packages/patches/guile-continuation-stack-leak.patch deleted file mode 100644 index 0e57b7bb4e..0000000000 --- a/gnu/packages/patches/guile-continuation-stack-leak.patch +++ /dev/null @@ -1,27 +0,0 @@ -This patch fixes a memory leak when capturing and resuming delimited -continuations intensively, as is the case with the Shepherd 0.9+: - - https://issues.guix.gnu.org/59021 - -diff --git a/libguile/vm.c b/libguile/vm.c -index 6fd5c554f..516bae773 100644 ---- a/libguile/vm.c -+++ b/libguile/vm.c -@@ -165,11 +165,13 @@ capture_stack (union scm_vm_stack_element *stack_top, - scm_t_dynstack *dynstack, uint32_t flags) - { - struct scm_vm_cont *p; -+ size_t stack_size; - -- p = scm_gc_malloc (sizeof (*p), "capture_vm_cont"); -- p->stack_size = stack_top - sp; -- p->stack_bottom = scm_gc_malloc (p->stack_size * sizeof (*p->stack_bottom), -- "capture_vm_cont"); -+ stack_size = stack_top - sp; -+ p = scm_gc_malloc (sizeof (*p) + stack_size * sizeof (*p->stack_bottom), -+ "capture_vm_cont"); -+ p->stack_size = stack_size; -+ p->stack_bottom = (void *) ((char *) p + sizeof (*p)); - p->vra = vra; - p->mra = mra; - p->fp_offset = stack_top - fp; diff --git a/gnu/packages/patches/guile-cross-compilation.patch b/gnu/packages/patches/guile-cross-compilation.patch deleted file mode 100644 index a594cb9421..0000000000 --- a/gnu/packages/patches/guile-cross-compilation.patch +++ /dev/null @@ -1,55 +0,0 @@ -When cross-compiling, get type sizes of the host system, not the build system. - -This is Guile commit 24b30130ca75653bdbacea84ce0443608379d630, which -fixes , with one difference: it uses -8 instead of SIZEOF_INTMAX_T, such that we do not need to modify -'configure.ac' to check for the size of 'intmax_t' and to run 'autoreconf' -(libguile/numbers.c expects SCM_SIZEOF_INTMAX_T = 8). - -diff --git a/libguile/gen-scmconfig.c b/libguile/gen-scmconfig.c -index 01b14f14d..691ebd0af 100644 ---- a/libguile/gen-scmconfig.c -+++ b/libguile/gen-scmconfig.c -@@ -1,4 +1,4 @@ --/* Copyright 2003-2013,2018,2020,2021 -+/* Copyright 2003-2013, 2018, 2020-2022 - Free Software Foundation, Inc. - - This file is part of Guile. -@@ -238,21 +238,21 @@ main (int argc, char *argv[]) - pf ("\n"); - pf ("/* Standard types. */\n"); - -- pf ("#define SCM_SIZEOF_CHAR %zu\n", sizeof (char)); -- pf ("#define SCM_SIZEOF_UNSIGNED_CHAR %zu\n", sizeof (unsigned char)); -- pf ("#define SCM_SIZEOF_SHORT %zu\n", sizeof (short)); -- pf ("#define SCM_SIZEOF_UNSIGNED_SHORT %zu\n", sizeof (unsigned short)); -- pf ("#define SCM_SIZEOF_LONG %zu\n", sizeof (long)); -- pf ("#define SCM_SIZEOF_UNSIGNED_LONG %zu\n", sizeof (unsigned long)); -- pf ("#define SCM_SIZEOF_INT %zu\n", sizeof (int)); -- pf ("#define SCM_SIZEOF_UNSIGNED_INT %zu\n", sizeof (unsigned int)); -- pf ("#define SCM_SIZEOF_SIZE_T %zu\n", sizeof (size_t)); -- pf ("#define SCM_SIZEOF_LONG_LONG %zu\n", sizeof (long long)); -- pf ("#define SCM_SIZEOF_UNSIGNED_LONG_LONG %zu\n", sizeof (unsigned long long)); -- pf ("#define SCM_SIZEOF_INTMAX %zu\n", sizeof (intmax_t)); -- pf ("#define SCM_SIZEOF_SCM_T_PTRDIFF %zu\n", sizeof (ptrdiff_t)); -- pf ("#define SCM_SIZEOF_INTPTR_T %zu\n", sizeof (intptr_t)); -- pf ("#define SCM_SIZEOF_UINTPTR_T %zu\n", sizeof (uintptr_t)); -+ pf ("#define SCM_SIZEOF_CHAR %d\n", SIZEOF_CHAR); -+ pf ("#define SCM_SIZEOF_UNSIGNED_CHAR %d\n", SIZEOF_UNSIGNED_CHAR); -+ pf ("#define SCM_SIZEOF_SHORT %d\n", SIZEOF_SHORT); -+ pf ("#define SCM_SIZEOF_UNSIGNED_SHORT %d\n", SIZEOF_UNSIGNED_SHORT); -+ pf ("#define SCM_SIZEOF_LONG %d\n", SIZEOF_LONG); -+ pf ("#define SCM_SIZEOF_UNSIGNED_LONG %d\n", SIZEOF_UNSIGNED_LONG); -+ pf ("#define SCM_SIZEOF_INT %d\n", SIZEOF_INT); -+ pf ("#define SCM_SIZEOF_UNSIGNED_INT %d\n", SIZEOF_UNSIGNED_INT); -+ pf ("#define SCM_SIZEOF_SIZE_T %d\n", SIZEOF_SIZE_T); -+ pf ("#define SCM_SIZEOF_LONG_LONG %d\n", SIZEOF_LONG_LONG); -+ pf ("#define SCM_SIZEOF_UNSIGNED_LONG_LONG %d\n", SIZEOF_UNSIGNED_LONG_LONG); -+ pf ("#define SCM_SIZEOF_INTMAX %d\n", 8); /* like SIZEOF_INTMAX_T */ -+ pf ("#define SCM_SIZEOF_SCM_T_PTRDIFF %d\n", SIZEOF_PTRDIFF_T); -+ pf ("#define SCM_SIZEOF_INTPTR_T %d\n", SIZEOF_INTPTR_T); -+ pf ("#define SCM_SIZEOF_UINTPTR_T %d\n", SIZEOF_UINTPTR_T); - - pf ("\n"); - pf ("/* same as POSIX \"struct timespec\" -- always defined */\n");