On Sun, Jan 08, 2023 at 10:32:36PM +0000, John Kehayias wrote:
> Heartily agree here. This has come up a few times on #guix and generally with
> support (don't let me speak for everyone though). I think the idea of smaller
> and more frequent feature branches is a great idea: less code changes coming
> to master to review at once (compared to big core-updates merges),
> substitutes and closer to master to be easier for people to pull the branch
> and test, and some areas despite the number of builds would work nicely as a
> branch than just pushed (and lingering) into core-updates for much later.
I agree with all your points. We used to work this way back in the day
when there weren't very many Guix packages. There was always a
'core-updates' job, but if it was limited to packages that truly are
"core". Then, for several years, the build farm was underpowered
relative to the number of packages and it became impractical. I think we
are past that now.
I've attached a couple patches to get started but I need help getting
them to work.
There is 'etc/go-manifest.scm', which does work with `guix package -m
etc/go-manifest.scm --dry-run`.
And there is a diff for 'build-aux/cuirass/evaluate.scm', so that I can
test it with `make cuirass-jobs`.
But, `make cuirass-jobs` crashes with this manifest and I don't know
why:
------
$ make cuirass-jobs
Compiling Scheme modules...
Compiling Scheme modules...
Compiling Scheme modules...
Compiling Scheme modules...
Compiling Scheme modules...
rm -rf "cuirass-jobs"
GEN cuirass-jobs
Computing Guix derivation for 'x86_64-linux'... /
In thread:
uncaught throw to %exception: (#<&inferior-exception arguments: (wrong-type-arg
"primitive-load" "Wrong type argument in position ~A (expecting ~A): ~S" (1
"string" #f) (#f)) inferior: #<inferior pipe (0 1 1) 7f28f3ffd780> stack: ((#f
("ice-9/boot-9.scm" 1779 13)) (raise-exception ("ice-9/boot-9.scm" 1682 16))
(raise-exception ("ice-9/boot-9.scm" 1684 16)) (primitive-load (#f #f #f))
(save-module-excursion ("ice-9/boot-9.scm" 2835 4)) (#f (#f #f #f)) (map1
("srfi/srfi-1.scm" 585 17)) (append-map ("srfi/srfi-1.scm" 672 15)) (#f
("gnu/ci.scm" 449 8)) (map1 ("srfi/srfi-1.scm" 585 17)) (append-map
("srfi/srfi-1.scm" 672 15)) (cuirass-jobs ("gnu/ci.scm" 489 4)) (#f
("ice-9/eval.scm" 158 9)) (with-exception-handler ("ice-9/boot-9.scm" 1751 10))
(call-with-prompt ("ice-9/boot-9.scm" 723 2)) (#f (#f #f #f)) (#f
("guix/repl.scm" 98 21)) (with-exception-handler ("ice-9/boot-9.scm" 1751 10))
(with-exception-handler ("ice-9/boot-9.scm" 1746 15)) (#f ("guix/repl.scm" 125
7)))>)
In thread:
uncaught throw to %exception: (#<&inferior-exception arguments: (wrong-type-arg
"primitive-load" "Wrong type argument in position ~A (expecting ~A): ~S" (1
"string" #f) (#f)) inferior: #<inferior pipe (0 1 1) 7f28f3ffd740> stack: ((#f
("ice-9/boot-9.scm" 1779 13)) (raise-exception ("ice-9/boot-9.scm" 1682 16))
(raise-exception ("ice-9/boot-9.scm" 1684 16)) (primitive-load (#f #f #f))
(save-module-excursion ("ice-9/boot-9.scm" 2835 4)) (#f (#f #f #f)) (map1
("srfi/srfi-1.scm" 585 17)) (append-map ("srfi/srfi-1.scm" 672 15)) (#f
("gnu/ci.scm" 449 8)) (map1 ("srfi/srfi-1.scm" 585 17)) (append-map
("srfi/srfi-1.scm" 672 15)) (cuirass-jobs ("gnu/ci.scm" 489 4)) (#f
("ice-9/eval.scm" 158 9)) (with-exception-handler ("ice-9/boot-9.scm" 1751 10))
(call-with-prompt ("ice-9/boot-9.scm" 723 2)) (#f (#f #f #f)) (#f
("guix/repl.scm" 98 21)) (with-exception-handler ("ice-9/boot-9.scm" 1751 10))
(with-exception-handler ("ice-9/boot-9.scm" 1746 15)) (#f ("guix/repl.scm" 125
7)))>)
In thread:
uncaught throw to %exception: (#<&inferior-exception arguments: (wrong-type-arg
"primitive-load" "Wrong type argument in position ~A (expecting ~A): ~S" (1
"string" #f) (#f)) inferior: #<inferior pipe (0 1 1) 7f28f3ffd7c0> stack: ((#f
("ice-9/boot-9.scm" 1779 13)) (raise-exception ("ice-9/boot-9.scm" 1682 16))
(raise-exception ("ice-9/boot-9.scm" 1684 16)) (primitive-load (#f #f #f))
(save-module-excursion ("ice-9/boot-9.scm" 2835 4)) (#f (#f #f #f)) (map1
("srfi/srfi-1.scm" 585 17)) (append-map ("srfi/srfi-1.scm" 672 15)) (#f
("gnu/ci.scm" 449 8)) (map1 ("srfi/srfi-1.scm" 585 17)) (append-map
("srfi/srfi-1.scm" 672 15)) (cuirass-jobs ("gnu/ci.scm" 489 4)) (#f
("ice-9/eval.scm" 158 9)) (with-exception-handler ("ice-9/boot-9.scm" 1751 10))
(call-with-prompt ("ice-9/boot-9.scm" 723 2)) (#f (#f #f #f)) (#f
("guix/repl.scm" 98 21)) (with-exception-handler ("ice-9/boot-9.scm" 1751 10))
(with-exception-handler ("ice-9/boot-9.scm" 1746 15)) (#f ("guix/repl.scm" 125
7)))>)
In thread:
uncaught throw to %exception: (#<&inferior-exception arguments: (wrong-type-arg
"primitive-load" "Wrong type argument in position ~A (expecting ~A): ~S" (1
"string" #f) (#f)) inferior: #<inferior pipe (0 1 1) 7f28f3ffd9c0> stack: ((#f
("ice-9/boot-9.scm" 1779 13)) (raise-exception ("ice-9/boot-9.scm" 1682 16))
(raise-exception ("ice-9/boot-9.scm" 1684 16)) (primitive-load (#f #f #f))
(save-module-excursion ("ice-9/boot-9.scm" 2835 4)) (#f (#f #f #f)) (map1
("srfi/srfi-1.scm" 585 17)) (append-map ("srfi/srfi-1.scm" 672 15)) (#f
("gnu/ci.scm" 449 8)) (map1 ("srfi/srfi-1.scm" 585 17)) (append-map
("srfi/srfi-1.scm" 672 15)) (cuirass-jobs ("gnu/ci.scm" 489 4)) (#f
("ice-9/eval.scm" 158 9)) (with-exception-handler ("ice-9/boot-9.scm" 1751 10))
(call-with-prompt ("ice-9/boot-9.scm" 723 2)) (#f (#f #f #f)) (#f
("guix/repl.scm" 98 21)) (with-exception-handler ("ice-9/boot-9.scm" 1751 10))
(with-exception-handler ("ice-9/boot-9.scm" 1746 15)) (#f ("guix/repl.scm" 125
7)))>)
------
diff --git a/build-aux/cuirass/evaluate.scm b/build-aux/cuirass/evaluate.scm
index 7ae5c266d1..92743508df 100644
--- a/build-aux/cuirass/evaluate.scm
+++ b/build-aux/cuirass/evaluate.scm
@@ -96,7 +96,9 @@ (define derivation
inferior store
`(lambda (store)
(cuirass-jobs store
- '((subset . all)
+ '((subset
+ . (manifests
+ "etc/go-manifest.scm"))
(systems . ,(list system))
(channels . ,channels))))))
(file
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 Leo Famulari <[email protected]>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(use-modules (guix packages)
(guix profiles)
(gnu packages)
(guix build-system go))
(manifest
(map package->manifest-entry
(fold-packages
(lambda (package result)
(if (or (eq? (package-build-system package) go-build-system)
(equal? (package-name package) "go"))
(cons package result)
result))
'())))