[PATCH] gnu: Add guile-proba.

  • Done
  • quality assurance status badge
Details
4 participants
  • Jelle Licht
  • Ludovic Courtès
  • Luis Felipe
  • sirgazil
Owner
unassigned
Submitted by
Luis Felipe
Severity
normal
L
L
Luis Felipe wrote on 28 Dec 2022 19:07
(name . Luis Felipe via Guix-patches)(address . guix-patches@gnu.org)
nSZT0otTqh8SJirEUyeY-gOQrmjfQ5JSbI6MNIKZ0TlzwZ-8Xc0U_ggLZqI_exvM_hYXn5n9On7nl83zToicXU5HLgM8VpAENp0H4zKQ6po=@protonmail.com
Hi, a new package here.



---
Luis Felipe López Acevedo
From 332ea52f1f060a4fa1b8af7100b4cbd2f481f24b Mon Sep 17 00:00:00 2001
From: Luis Felipe <luis.felipe.la@protonmail.com>
Date: Wed, 28 Dec 2022 12:45:32 -0500
Subject: [PATCH] gnu: Add guile-proba.

* gnu/packages/check.scm (guile-proba): New variable.
---
gnu/packages/check.scm | 51 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)

Toggle diff (91 lines)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index aaa41777dc..3967a22f76 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -41,6 +41,7 @@
;;; Copyright © 2022 David Elsing <david.elsing@posteo.net>
;;; Copyright © 2022 Sharlatan Hellseher <sharlatanus@gmail.com>
;;; Copyright © 2022 jgart <jgart@dismail.de>
+;;; Copyright © 2022 Luis Felipe López Acevedo <luis.felipe.la@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -70,6 +71,8 @@ (define-module (gnu packages check)
#:use-module (gnu packages gnome)
#:use-module (gnu packages golang)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages guile)
+ #:use-module (gnu packages guile-xyz)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
@@ -78,6 +81,7 @@ (define-module (gnu packages check)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages python-science)
+ #:use-module (gnu packages texinfo)
#:use-module (gnu packages time)
#:use-module (gnu packages xml)
#:use-module (guix utils)
@@ -90,6 +94,7 @@ (define-module (gnu packages check)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
+ #:use-module (guix build-system guile)
#:use-module (guix build-system meson)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system python)
@@ -3455,3 +3460,49 @@ (define-public python-pytest-regressions
tables by saving expected data in a data directory (courtesy of pytest-datadir)
that can be used to verify that future runs produce the same data.")
(license license:expat)))
+
+(define-public guile-proba
+ (package
+ (name "guile-proba")
+ (version "0.2.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://codeberg.org/luis-felipe/guile-proba")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "04si01wzhc9c8rqy9vr12fpkf8gnlx7crkph8djy80s2c7b1lvr7"))))
+ (build-system guile-build-system)
+ (native-inputs (list guile-3.0 texinfo))
+ (propagated-inputs (list guile-3.0 guile-config guile-lib texinfo))
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'build 'check
+ (lambda _
+ (invoke "guile" "proba.scm" "run" "tests")))
+ (add-after 'install 'install-script-and-manual
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin-dir (string-append out "/bin"))
+ (info-dir (string-append out "/share/info"))
+ (script (string-append bin-dir "/proba")))
+ (mkdir-p bin-dir)
+ (mkdir-p info-dir)
+ (copy-file "proba.scm" script)
+ (chmod script #o555)
+ (invoke "makeinfo" "manual/main.texi")
+ (install-file "guile-proba" info-dir)))))
+ #:not-compiled-file-regexp
+ "((packages|tests)\\/.*.scm|(proba|manifest).scm)$"))
+ (home-page "https://luis-felipe.gitlab.io/guile-proba/")
+ (synopsis "Testing tools for GNU Guile projects with SRFI 64 test suites")
+ (description
+ "This software is a set of testing tools for GNU Guile projects
+with SRFI 64-based test suites. It comes with a command-line interface
+to run test collections, and a library that includes a test runner and
+helpers for writing tests.")
+ (license license:public-domain)))

base-commit: fc5dc3e04789a15d80a7b35987adaefc1a94b97c
--
2.38.1
Attachment: signature.asc
L
L
Ludovic Courtès wrote on 10 Jan 2023 11:48
(name . Luis Felipe)(address . luis.felipe.la@protonmail.com)(address . 60386@debbugs.gnu.org)
87358ioeb6.fsf@gnu.org
Hello!

Luis Felipe <luis.felipe.la@protonmail.com> skribis:

Toggle quote (7 lines)
> From 332ea52f1f060a4fa1b8af7100b4cbd2f481f24b Mon Sep 17 00:00:00 2001
> From: Luis Felipe <luis.felipe.la@protonmail.com>
> Date: Wed, 28 Dec 2022 12:45:32 -0500
> Subject: [PATCH] gnu: Add guile-proba.
>
> * gnu/packages/check.scm (guile-proba): New variable.

[...]

Toggle quote (3 lines)
> + (native-inputs (list guile-3.0 texinfo))
> + (propagated-inputs (list guile-3.0 guile-config guile-lib texinfo))

I don’t think ‘guile-3.0’ and ‘texinfo’ need to be propagated, do they?

Apart from that it LGTM, thanks!

Ludo’.
L
L
Luis Felipe wrote on 13 Jan 2023 16:41
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 60386@debbugs.gnu.org)
uALJOVktnZNNEWZHk7U0l-tF9iCTMB8_WRfCQ8yCGnf44wwllXi8kGz5eD1-6tkTeON9wy_QVo5IZylFzDixlqnvlZDvtEYHtuoA2VlQXSM=@protonmail.com
On Tuesday, January 10th, 2023 at 10:48, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (2 lines)
> I don’t think ‘guile-3.0’ and ‘texinfo’ need to be propagated, do they?

They do? If I don't propagate them, running the "proba" script fails because the "proba" library can't be found and running "info guile-proba" the info command is not found (I just tried in a foreign distro and also using a pure shell on my Guix system).


Things only work as expected if I propagate "guile-3.0" and "texinfo" or if I don't propagate them but tell users to install them themselves (guix install guile-proba guile texinfo).

So I'm not sure what I should do...
Attachment: signature.asc
L
L
Ludovic Courtès wrote on 17 Jan 2023 14:50
(name . Luis Felipe)(address . luis.felipe.la@protonmail.com)(address . 60386@debbugs.gnu.org)
87edrti82j.fsf@gnu.org
Hi!

Luis Felipe <luis.felipe.la@protonmail.com> skribis:

Toggle quote (6 lines)
> On Tuesday, January 10th, 2023 at 10:48, Ludovic Courtès <ludo@gnu.org> wrote:
>
>> I don’t think ‘guile-3.0’ and ‘texinfo’ need to be propagated, do they?
>
> They do? If I don't propagate them, running the "proba" script fails because the "proba" library can't be found and running "info guile-proba" the info command is not found (I just tried in a foreign distro and also using a pure shell on my Guix system).

Check out the section on search paths (info "(guix) Search Paths").

In essence, INFOPATH won’t be set if you don’t have an Info reader
(‘info-reader’ or ‘emacs’) in the profile, because then you’d have no
way to read the Info file. Yet, you shouldn’t force a specific Info
reader on the user via ‘propagated-inputs’.

The story is similar for ‘guile-3.0’. Here, you should wrap or modify
the ‘proba’ script such that it automatically adds its own
$PKG/share/guile/site/3.0 to its .scm search path (and likewise for .go
files).

See for example the ‘mcron’ or ‘shepherd’ script of the same-named
packages, or see the ‘wrap-guilescript’ phase of the ‘guilescript’
package.

HTH!

Ludo’.
L
L
Luis Felipe wrote on 18 Jan 2023 19:20
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 60386@debbugs.gnu.org)
0R2fGew0iuJD4YBAaHVjCshZMF52BTBE0WeK7DfiPAO5ebcSRE6PWiix30uJUY35OigiDykEQF_ZpjNc18IoQatNgRXsz4_cx6oMriFDo8M=@protonmail.com
On Tuesday, January 17th, 2023 at 13:50, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (19 lines)
> Check out the section on search paths (info "(guix) Search Paths").
>

> In essence, INFOPATH won’t be set if you don’t have an Info reader
> (‘info-reader’ or ‘emacs’) in the profile, because then you’d have no
> way to read the Info file. Yet, you shouldn’t force a specific Info
> reader on the user via ‘propagated-inputs’.
>

> The story is similar for ‘guile-3.0’. Here, you should wrap or modify
> the ‘proba’ script such that it automatically adds its own
> $PKG/share/guile/site/3.0 to its .scm search path (and likewise for .go
> files).
>

> See for example the ‘mcron’ or ‘shepherd’ script of the same-named
> packages, or see the ‘wrap-guilescript’ phase of the ‘guilescript’
> package.

Thanks. I attach a new patch where guile and texinfo are not propagated, and the script is wrapped.
From 4fd946321742e19a44b93e4d6d03fd09e92f70ba Mon Sep 17 00:00:00 2001
From: Luis Felipe <luis.felipe.la@protonmail.com>
Date: Wed, 28 Dec 2022 12:45:32 -0500
Subject: [PATCH] gnu: Add guile-proba.

* gnu/packages/check.scm (guile-proba): New variable.
---
gnu/packages/check.scm | 63 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 63 insertions(+)

Toggle diff (103 lines)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index aaa41777dc..753d3f597d 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -41,6 +41,7 @@
;;; Copyright © 2022 David Elsing <david.elsing@posteo.net>
;;; Copyright © 2022 Sharlatan Hellseher <sharlatanus@gmail.com>
;;; Copyright © 2022 jgart <jgart@dismail.de>
+;;; Copyright © 2022 Luis Felipe López Acevedo <luis.felipe.la@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -70,6 +71,8 @@ (define-module (gnu packages check)
#:use-module (gnu packages gnome)
#:use-module (gnu packages golang)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages guile)
+ #:use-module (gnu packages guile-xyz)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
@@ -78,6 +81,7 @@ (define-module (gnu packages check)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages python-science)
+ #:use-module (gnu packages texinfo)
#:use-module (gnu packages time)
#:use-module (gnu packages xml)
#:use-module (guix utils)
@@ -90,6 +94,7 @@ (define-module (gnu packages check)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
+ #:use-module (guix build-system guile)
#:use-module (guix build-system meson)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system python)
@@ -3455,3 +3460,61 @@ (define-public python-pytest-regressions
tables by saving expected data in a data directory (courtesy of pytest-datadir)
that can be used to verify that future runs produce the same data.")
(license license:expat)))
+
+(define-public guile-proba
+ (package
+ (name "guile-proba")
+ (version "0.2.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://codeberg.org/luis-felipe/guile-proba")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "04si01wzhc9c8rqy9vr12fpkf8gnlx7crkph8djy80s2c7b1lvr7"))))
+ (build-system guile-build-system)
+ (inputs (list bash-minimal))
+ (native-inputs (list guile-3.0 texinfo))
+ (propagated-inputs (list guile-config guile-lib))
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'build 'check
+ (lambda _
+ (invoke "guile" "proba.scm" "run" "tests")))
+ (add-after 'install 'install-wrapped-script
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (version (target-guile-effective-version))
+ (scm (string-append "/share/guile/site/" version))
+ (go (string-append "/lib/guile/" version "/site-ccache"))
+ (bin-dir (string-append out "/bin"))
+ (script (string-append bin-dir "/proba")))
+ (mkdir-p bin-dir)
+ (copy-file "proba.scm" script)
+ (chmod script #o555)
+ (wrap-program script
+ `("GUILE_LOAD_PATH" prefix
+ (,(string-append out scm)))
+ `("GUILE_LOAD_COMPILED_PATH" prefix
+ (,(string-append out go)))))))
+ (add-after 'install 'install-manual
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (info-dir (string-append out "/share/info")))
+ (mkdir-p info-dir)
+ (invoke "makeinfo" "manual/main.texi")
+ (install-file "guile-proba" info-dir)))))
+ #:not-compiled-file-regexp
+ "((packages|tests)\\/.*.scm|(proba|manifest).scm)$"))
+ (home-page "https://luis-felipe.gitlab.io/guile-proba/")
+ (synopsis "Testing tools for GNU Guile projects with SRFI 64 test suites")
+ (description
+ "This software is a set of testing tools for GNU Guile projects
+with SRFI 64-based test suites. It comes with a command-line interface
+to run test collections, and a library that includes a test runner and
+helpers for writing tests.")
+ (license license:public-domain)))

base-commit: fc5dc3e04789a15d80a7b35987adaefc1a94b97c
--
2.38.1
Attachment: signature.asc
L
L
Ludovic Courtès wrote on 23 Jan 2023 23:25
(name . Luis Felipe)(address . luis.felipe.la@protonmail.com)(address . 60386@debbugs.gnu.org)
87wn5cyjkw.fsf@gnu.org
Hi,

Luis Felipe <luis.felipe.la@protonmail.com> skribis:

Toggle quote (9 lines)
> Thanks. I attach a new patch where guile and texinfo are not propagated, and the script is wrapped.
>
> From 4fd946321742e19a44b93e4d6d03fd09e92f70ba Mon Sep 17 00:00:00 2001
> From: Luis Felipe <luis.felipe.la@protonmail.com>
> Date: Wed, 28 Dec 2022 12:45:32 -0500
> Subject: [PATCH] gnu: Add guile-proba.
>
> * gnu/packages/check.scm (guile-proba): New variable.

It LGTM, but it fails to build:

Toggle snippet (23 lines)
starting phase `check'
Backtrace:
7 (primitive-load "/tmp/guix-build-guile-proba-0.2.0.drv-…")
In ice-9/eval.scm:
619:8 6 (_ #(#<directory (guile-user) 7ffff5d01c80> #<test-ru…>))
196:43 5 (_ #(#<directory (guile-user) 7ffff5d01c80> #<test-ru…>))
155:9 4 (_ #(#<directory (guile-user) 7ffff5d01c80> #<test-ru…>))
159:9 3 (_ #(#<directory (guile-user) 7ffff5d01c80> #<test-ru…>))
182:19 2 (proc #(#<directory (guile-user) 7ffff5d01c80> #<test…>))
142:16 1 (compile-top-call #<directory (guile-user) 7ffff5d01c80> …)
In unknown file:
0 (%resolve-variable (7 . unit-name) #<directory (guile-u…>)

ERROR: In procedure %resolve-variable:
Unbound variable: unit-name
------------------------------------------------------------
TEST SUITE
------------------------------------------------------------
error: in phase 'check': uncaught exception:
%exception #<&invoke-error program: "guile" arguments: ("proba.scm" "run" "tests") exit-status: 1 term-signal: #f stop-signal: #f>
phase `check' failed after 0.1 seconds

Any idea?

Thanks,
Ludo’.
L
L
Luis Felipe wrote on 25 Jan 2023 02:11
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 60386@debbugs.gnu.org)
_jbPEie6ho5J8_1hgP63VBuPhumFn1hAzjkWOv0rD7BwHVYo7ZgAa7UAxkuXNRxGvPBwbz6xNBQ2S2TZMwbDnme8JVwnDqtwElWisSfBr8E=@protonmail.com
On Monday, January 23rd, 2023 at 22:25, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (52 lines)
> Hi,
>
> Luis Felipe luis.felipe.la@protonmail.com skribis:
>
> > Thanks. I attach a new patch where guile and texinfo are not propagated, and the script is wrapped.
> >
> > From 4fd946321742e19a44b93e4d6d03fd09e92f70ba Mon Sep 17 00:00:00 2001
> > From: Luis Felipe luis.felipe.la@protonmail.com
> > Date: Wed, 28 Dec 2022 12:45:32 -0500
> > Subject: [PATCH] gnu: Add guile-proba.
> >
> > * gnu/packages/check.scm (guile-proba): New variable.
>
>
> It LGTM, but it fails to build:
>
> --8<---------------cut here---------------start------------->8---
>
> starting phase `check'
> Backtrace:
> 7 (primitive-load "/tmp/guix-build-guile-proba-0.2.0.drv-…")
> In ice-9/eval.scm:
> 619:8 6 (_ #(#<directory (guile-user) 7ffff5d01c80> #<test-ru…>))
>
> 196:43 5 (_ #(#<directory (guile-user) 7ffff5d01c80> #<test-ru…>))
>
> 155:9 4 (_ #(#<directory (guile-user) 7ffff5d01c80> #<test-ru…>))
>
> 159:9 3 (_ #(#<directory (guile-user) 7ffff5d01c80> #<test-ru…>))
>
> 182:19 2 (proc #(#<directory (guile-user) 7ffff5d01c80> #<test…>))
>
> 142:16 1 (compile-top-call #<directory (guile-user) 7ffff5d01c80> …)
>
> In unknown file:
> 0 (%resolve-variable (7 . unit-name) #<directory (guile-u…>)
>
>
> ERROR: In procedure %resolve-variable:
> Unbound variable: unit-name
> ------------------------------------------------------------
> TEST SUITE
> ------------------------------------------------------------
> error: in phase 'check': uncaught exception:
> %exception #<&invoke-error program: "guile" arguments: ("proba.scm" "run" "tests") exit-status: 1 term-signal: #f stop-signal: #f>
>
> phase `check' failed after 0.1 seconds
> --8<---------------cut here---------------end--------------->8---
>
>
> Any idea?

It beats me... I built the package several times today on two different machines using the latest patch; the test suite passes and the package is built successfully.

Basically, I did the following:

1. Download latest patch
3. git am path/to/the.patch

4. guix shell --pure -D guix
5. ./bootstrap
6. ./configure --localstatedir=/var
7. make
8. ./pre-inst-env guix build [--no-grafts --check] guile-proba
Attachment: signature.asc
L
L
Ludovic Courtès wrote on 26 Jan 2023 10:35
(name . Luis Felipe)(address . luis.felipe.la@protonmail.com)(address . 60386@debbugs.gnu.org)
87sffxr63g.fsf_-_@gnu.org
Hi,

Luis Felipe <luis.felipe.la@protonmail.com> skribis:

Toggle quote (2 lines)
> It beats me... I built the package several times today on two different machines using the latest patch; the test suite passes and the package is built successfully.

I tried again and it always fails in the same way, on top of
a84ceaa8b2e8e121957afea1d1d3fe7c8141cb8d, even when passing ‘-c1’ (thus
disabling parallel tests).

This is fixed by adding a (proba utils) to the ‘use-modules’ list of
‘tests/test-templates.scm’.

I’ll let you decide whether you want to make a new release or patch it
in some other way.

Thanks,
Ludo’.
L
L
Luis Felipe wrote on 26 Jan 2023 15:29
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 60386@debbugs.gnu.org)
nBJyTZ_tE68u0eBgNa1QuVeiU8uYlvDdpRWbcavsxWxUhLxj-Unfi6U14QKk6Cn-1sNc6rOkU35KD5sFY5QM0mcS7uV0TVi84H3aPiCqpr4=@protonmail.com
Hey,

On Thursday, January 26th, 2023 at 09:35, Ludovic Courtès <ludo@gnu.org> wrote:


Toggle quote (19 lines)
> Hi,
>

> Luis Felipe luis.felipe.la@protonmail.com skribis:
>

> > It beats me... I built the package several times today on two different machines using the latest patch; the test suite passes and the package is built successfully.
>

>

> I tried again and it always fails in the same way, on top of
> a84ceaa8b2e8e121957afea1d1d3fe7c8141cb8d, even when passing ‘-c1’ (thus
> disabling parallel tests).
>

> This is fixed by adding a (proba utils) to the ‘use-modules’ list of
> ‘tests/test-templates.scm’.

Dammit, sorry about that :[


Toggle quote (3 lines)
> I’ll let you decide whether you want to make a new release or patch it
> in some other way.

Yeah, new release it is. And I need to figure out why it magically builds me...

Thanks for the tutoring,
Attachment: signature.asc
L
L
Luis Felipe wrote on 6 Feb 2023 16:40
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 60386@debbugs.gnu.org)
REtOheZAbpl8H2a73GxbVc3Iegd9VNhDv1PO6AAPng_t2opK95fuNXoXbHewNb3YvYv62CcJP4jQEPTKxpH9VXEjAjxS7cy-jcsd4glk56Q=@protonmail.com
Hello again,

This is a new patch with guile-proba version 0.3.0, which solves the missing module import problem.

?
From 528f7d43933aa5e5a5528499b852ed274f33e406 Mon Sep 17 00:00:00 2001
From: Luis Felipe <luis.felipe.la@protonmail.com>
Date: Wed, 28 Dec 2022 12:45:32 -0500
Subject: [PATCH] gnu: Add guile-proba.

* gnu/packages/check.scm (guile-proba): New variable.
---
gnu/packages/check.scm | 63 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 63 insertions(+)

Toggle diff (103 lines)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index aaa41777dc..c5b3b825e1 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -41,6 +41,7 @@
;;; Copyright © 2022 David Elsing <david.elsing@posteo.net>
;;; Copyright © 2022 Sharlatan Hellseher <sharlatanus@gmail.com>
;;; Copyright © 2022 jgart <jgart@dismail.de>
+;;; Copyright © 2023 Luis Felipe López Acevedo <luis.felipe.la@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -70,6 +71,8 @@ (define-module (gnu packages check)
#:use-module (gnu packages gnome)
#:use-module (gnu packages golang)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages guile)
+ #:use-module (gnu packages guile-xyz)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
@@ -78,6 +81,7 @@ (define-module (gnu packages check)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages python-science)
+ #:use-module (gnu packages texinfo)
#:use-module (gnu packages time)
#:use-module (gnu packages xml)
#:use-module (guix utils)
@@ -90,6 +94,7 @@ (define-module (gnu packages check)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
+ #:use-module (guix build-system guile)
#:use-module (guix build-system meson)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system python)
@@ -3455,3 +3460,61 @@ (define-public python-pytest-regressions
tables by saving expected data in a data directory (courtesy of pytest-datadir)
that can be used to verify that future runs produce the same data.")
(license license:expat)))
+
+(define-public guile-proba
+ (package
+ (name "guile-proba")
+ (version "0.3.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://codeberg.org/luis-felipe/guile-proba")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1mjnrbb6gv5f95i1ihn75yh7ya445pcnj13cy34x2v58h9n2r80s"))))
+ (build-system guile-build-system)
+ (inputs (list bash-minimal))
+ (native-inputs (list guile-3.0 texinfo))
+ (propagated-inputs (list guile-config guile-lib))
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'build 'check
+ (lambda _
+ (invoke "guile" "proba.scm" "run" "tests")))
+ (add-after 'install 'install-wrapped-script
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (version (target-guile-effective-version))
+ (scm (string-append "/share/guile/site/" version))
+ (go (string-append "/lib/guile/" version "/site-ccache"))
+ (bin-dir (string-append out "/bin"))
+ (script (string-append bin-dir "/proba")))
+ (mkdir-p bin-dir)
+ (copy-file "proba.scm" script)
+ (chmod script #o555)
+ (wrap-program script
+ `("GUILE_LOAD_PATH" prefix
+ (,(string-append out scm)))
+ `("GUILE_LOAD_COMPILED_PATH" prefix
+ (,(string-append out go)))))))
+ (add-after 'install 'install-manual
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (info-dir (string-append out "/share/info")))
+ (mkdir-p info-dir)
+ (invoke "makeinfo" "manual/main.texi")
+ (install-file "guile-proba" info-dir)))))
+ #:not-compiled-file-regexp
+ "((bogus|bogus-tests|packages|tests)\\/.*.scm|(proba|manifest).scm)$"))
+ (home-page "https://luis-felipe.gitlab.io/guile-proba/")
+ (synopsis "Testing tools for GNU Guile projects with SRFI 64 test suites")
+ (description
+ "This software is a set of testing tools for GNU Guile projects
+with SRFI 64-based test suites. It comes with a command-line interface
+to run test collections, and a library that includes a test runner and
+helpers for writing tests.")
+ (license license:public-domain)))

base-commit: fc5dc3e04789a15d80a7b35987adaefc1a94b97c
--
2.38.1
Attachment: signature.asc
J
J
Jelle Licht wrote on 13 Feb 2023 14:44
Re: [bug#60386] [PATCH] gnu: Add guile-proba.
(address . 60386@debbugs.gnu.org)
87pmadr86d.fsf@fsfe.org
Hi Luis,

Luis Felipe via Guix-patches via <guix-patches@gnu.org> writes:

Toggle quote (4 lines)
> Hello again,
>
> This is a new patch with guile-proba version 0.3.0, which solves the missing module import problem.

Thank you for working on this, both upstream and the package itself.

Toggle quote (20 lines)
> [snip]

> +
> +(define-public guile-proba
> + (package
> + (name "guile-proba")
> + (version "0.3.0")
> + (source
> + (origin
> + (method git-fetch)
> + (uri (git-reference
> + (url "https://codeberg.org/luis-felipe/guile-proba")
> + (commit version)))
> + (file-name (git-file-name name version))
> + (sha256
> + (base32 "1mjnrbb6gv5f95i1ihn75yh7ya445pcnj13cy34x2v58h9n2r80s"))))
> + (build-system guile-build-system)
> + (inputs (list bash-minimal))
> + (native-inputs (list guile-3.0 texinfo))

I think guile should be a normal input. Other packages like this
(e.g. guilescript, ccwl) seem to do it that way.

Toggle quote (25 lines)
> + (propagated-inputs (list guile-config guile-lib))
> + (arguments
> + (list
> + #:phases
> + #~(modify-phases %standard-phases
> + (add-after 'build 'check
> + (lambda _
> + (invoke "guile" "proba.scm" "run" "tests")))
> + (add-after 'install 'install-wrapped-script
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let* ((out (assoc-ref outputs "out"))
> + (version (target-guile-effective-version))
> + (scm (string-append "/share/guile/site/" version))
> + (go (string-append "/lib/guile/" version "/site-ccache"))
> + (bin-dir (string-append out "/bin"))
> + (script (string-append bin-dir "/proba")))
> + (mkdir-p bin-dir)
> + (copy-file "proba.scm" script)
> + (chmod script #o555)
> + (wrap-program script
> + `("GUILE_LOAD_PATH" prefix
> + (,(string-append out scm)))
> + `("GUILE_LOAD_COMPILED_PATH" prefix
> + (,(string-append out go)))))))

This seems almost correct, as it extends the GUILE_LOAD_{,COMPILED}_PATH
at runtime; the user would for still need to have the guile-config and
guile in their profile. Although guile-config is also listed as a
propagated input, when the guile search paths specifications are not
active, the following would not work:

`guix shell --pure guile-proba -- proba run tests'

You could have a look at the 'wrap phase of the ccwl package; they use
the value of (getenv "GUILE_LOAD_{,COMPILED}_PATH") retrieved while
building the package to wrap their script.

Toggle quote (7 lines)
> + (add-after 'install 'install-manual
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let* ((out (assoc-ref outputs "out"))
> + (info-dir (string-append out "/share/info")))
> + (mkdir-p info-dir)
> + (invoke "makeinfo" "manual/main.texi")
> + (install-file "guile-proba" info-dir)))))
Nitpick, so feel free to ignore:
You could split up building and installing the manual.

Toggle quote (3 lines)
> + #:not-compiled-file-regexp
> + "((bogus|bogus-tests|packages|tests)\\/.*.scm|(proba|manifest).scm)$"))

All of the files listed in this regex are still installed in
<out>/share/guile/site/3.0. Do you think it would be possible to ensure
these files are not installed?

Toggle quote (12 lines)
> + (synopsis "Testing tools for GNU Guile projects with SRFI 64 test suites")
> + (description
> + "This software is a set of testing tools for GNU Guile projects
> +with SRFI 64-based test suites. It comes with a command-line interface
> +to run test collections, and a library that includes a test runner and
> +helpers for writing tests.")
> + (license license:public-domain)))
>
> base-commit: fc5dc3e04789a15d80a7b35987adaefc1a94b97c
> --
> 2.38.1
L
L
Luis Felipe wrote on 15 Feb 2023 22:56
(name . Jelle Licht)(address . jlicht@fsfe.org)
kAHFGz-9oKkqwkhd_oxPlA_VS2jqFuwsRPysoiD_bdwnoVYViCvCnzXxTuonohbnE7M2ntFWfdaYCt1-KSOaqp4cOkNGxyE2azjU86Jm_DY=@protonmail.com
Hi Jelle, thanks for taking a look.

I'm sending a new patch after this message, but I'm replying to your review below.


On Monday, February 13th, 2023 at 13:44, Jelle Licht <jlicht@fsfe.org> wrote:

Toggle quote (8 lines)
> > + (native-inputs (list guile-3.0 texinfo))
>

>

> I think guile should be a normal input. Other packages like this
> (e.g. guilescript, ccwl) seem to do it that way.

I moved it to inputs now. But I placed it in native-inputs following the guile-build-system documentation in the manual:

"Packages built with ‘guile-build-system’ must provide a Guile package in their ‘native-inputs’ field."

Did I misunderstand or should that part of the manual be updated?


Toggle quote (40 lines)
> > + (propagated-inputs (list guile-config guile-lib))
> > + (arguments
> > + (list
> > + #:phases
> > + #~(modify-phases %standard-phases
> > + (add-after 'build 'check
> > + (lambda _
> > + (invoke "guile" "proba.scm" "run" "tests")))
> > + (add-after 'install 'install-wrapped-script
> > + (lambda* (#:key outputs #:allow-other-keys)
> > + (let* ((out (assoc-ref outputs "out"))
> > + (version (target-guile-effective-version))
> > + (scm (string-append "/share/guile/site/" version))
> > + (go (string-append "/lib/guile/" version "/site-ccache"))
> > + (bin-dir (string-append out "/bin"))
> > + (script (string-append bin-dir "/proba")))
> > + (mkdir-p bin-dir)
> > + (copy-file "proba.scm" script)
> > + (chmod script #o555)
> > + (wrap-program script
> > + `("GUILE_LOAD_PATH" prefix + (,(string-append out scm))) +` ("GUILE_LOAD_COMPILED_PATH" prefix
> > + (,(string-append out go)))))))
>

>

> This seems almost correct, as it extends the GUILE_LOAD_{,COMPILED}PATH
> at runtime; the user would for still need to have the guile-config and
> guile in their profile. Although guile-config is also listed as a
> propagated input, when the guile search paths specifications are not
> active, the following would not work:
>

> `guix shell --pure guile-proba -- proba run tests'
>

> You could have a look at the 'wrap phase of the ccwl package; they use
> the value of (getenv "GUILE_LOAD{,COMPILED}_PATH") retrieved while
> building the package to wrap their script.

I added a new phase to set Guile load paths so that they take (getenv "GUILE_LOAD{,COMPILED}_PATH") into account, and modified the wrapping accordingly. In my test, running "guix shell --pure guile-proba -- proba run tests" works now.


Toggle quote (12 lines)
> > + (add-after 'install 'install-manual
> > + (lambda* (#:key outputs #:allow-other-keys)
> > + (let* ((out (assoc-ref outputs "out"))
> > + (info-dir (string-append out "/share/info")))
> > + (mkdir-p info-dir)
> > + (invoke "makeinfo" "manual/main.texi")
> > + (install-file "guile-proba" info-dir)))))
>

> Nitpick, so feel free to ignore:
> You could split up building and installing the manual.

I put building into a separate phase.


Toggle quote (10 lines)
> > + #:not-compiled-file-regexp
> > + "((bogus|bogus-tests|packages|tests)\\/.*.scm|(proba|manifest).scm)$"))
>

>

> All of the files listed in this regex are still installed in
> <out>/share/guile/site/3.0. Do you think it would be possible to ensure
> these files are not installed?

It was possible. Now it looks like this:

/gnu/store/xaqmf7n83h5dq9xv6is46ybjk98ssakr-guile-proba-0.3.0
|-- bin
| `-- proba
|-- lib
| `-- guile
| `-- 3.0
| `-- site-ccache
| `-- proba
| |-- cli.go
| |-- commands.go
| |-- runners.go
| |-- templates.go
| `-- utils.go
`-- share
|-- doc
| `-- guile-proba-0.3.0
| |-- README.org
| `-- index.html
|-- guile
| `-- site
| `-- 3.0
| `-- proba
| |-- cli.scm
| |-- commands.scm
| |-- runners.scm
| |-- templates.scm
| `-- utils.scm
`-- info
`-- guile-proba
Attachment: signature.asc
S
S
sirgazil wrote on 15 Feb 2023 22:59
[PATCH v4] gnu: Add guile-proba.
(address . 60386@debbugs.gnu.org)
20230215215937.25935-1-sirgazil@zoho.com
From: Luis Felipe <luis.felipe.la@protonmail.com>

* gnu/packages/check.scm (guile-proba): New variable.
---
gnu/packages/check.scm | 81 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 81 insertions(+)

Toggle diff (121 lines)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index aaa41777dc..d9e547b308 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -41,6 +41,7 @@
;;; Copyright © 2022 David Elsing <david.elsing@posteo.net>
;;; Copyright © 2022 Sharlatan Hellseher <sharlatanus@gmail.com>
;;; Copyright © 2022 jgart <jgart@dismail.de>
+;;; Copyright © 2023 Luis Felipe López Acevedo <luis.felipe.la@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -70,6 +71,8 @@ (define-module (gnu packages check)
#:use-module (gnu packages gnome)
#:use-module (gnu packages golang)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages guile)
+ #:use-module (gnu packages guile-xyz)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
@@ -78,6 +81,7 @@ (define-module (gnu packages check)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages python-science)
+ #:use-module (gnu packages texinfo)
#:use-module (gnu packages time)
#:use-module (gnu packages xml)
#:use-module (guix utils)
@@ -90,6 +94,7 @@ (define-module (gnu packages check)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
+ #:use-module (guix build-system guile)
#:use-module (guix build-system meson)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system python)
@@ -3455,3 +3460,79 @@ (define-public python-pytest-regressions
tables by saving expected data in a data directory (courtesy of pytest-datadir)
that can be used to verify that future runs produce the same data.")
(license license:expat)))
+
+(define-public guile-proba
+ (package
+ (name "guile-proba")
+ (version "0.3.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://codeberg.org/luis-felipe/guile-proba")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1mjnrbb6gv5f95i1ihn75yh7ya445pcnj13cy34x2v58h9n2r80s"))))
+ (build-system guile-build-system)
+ (inputs (list bash-minimal guile-3.0))
+ (native-inputs (list texinfo))
+ (propagated-inputs (list guile-config guile-lib))
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'set-paths 'add-output-to-guile-load-paths
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (guile-version (target-guile-effective-version))
+ (scm-path (string-append out
+ "/share/guile/site/"
+ guile-version))
+ (go-path (string-append out
+ "/lib/guile/"
+ guile-version
+ "/site-ccache")))
+ (setenv "GUILE_LOAD_PATH"
+ (string-append scm-path ":"
+ (getenv "GUILE_LOAD_PATH")))
+ (setenv "GUILE_LOAD_COMPILED_PATH"
+ (string-append
+ go-path ":"
+ (getenv "GUILE_LOAD_COMPILED_PATH"))))))
+ (add-after 'build 'build-manual
+ (lambda _
+ (invoke "makeinfo" "manual/main.texi")))
+ (add-after 'build 'check
+ (lambda _
+ (invoke "guile" "proba.scm" "run" "tests")))
+ (add-after 'install 'install-wrapped-script
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin-dir (string-append out "/bin"))
+ (script (string-append bin-dir "/proba")))
+ (mkdir-p bin-dir)
+ (copy-file "proba.scm" script)
+ (chmod script #o555)
+ (wrap-program script
+ `("GUILE_LOAD_PATH" = (,(getenv "GUILE_LOAD_PATH")))
+ `("GUILE_LOAD_COMPILED_PATH" =
+ (,(getenv "GUILE_LOAD_COMPILED_PATH")))))))
+ (add-after 'install 'install-manual
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (info-dir (string-append out "/share/info")))
+ (mkdir-p info-dir)
+ (install-file "guile-proba" info-dir)))))
+ #:scheme-file-regexp
+ #~(begin
+ (use-modules (ice-9 regex))
+ (lambda (file stat) (string-match "/proba/.*\\.scm$" file)))))
+ (home-page "https://luis-felipe.gitlab.io/guile-proba/")
+ (synopsis "Testing tools for GNU Guile projects with SRFI 64 test suites")
+ (description
+ "This software is a set of testing tools for GNU Guile projects
+with SRFI 64-based test suites. It comes with a command-line interface
+to run test collections, and a library that includes a test runner and
+helpers for writing tests.")
+ (license license:public-domain)))

base-commit: fc5dc3e04789a15d80a7b35987adaefc1a94b97c
--
2.39.1
J
J
Jelle Licht wrote on 21 Feb 2023 18:54
Re: [bug#60386] [PATCH] gnu: Add guile-proba.
(name . Luis Felipe)(address . luis.felipe.la@protonmail.com)
87bklmdhvc.fsf@fsfe.org
Hi Luis,

Pushed to master! Some comments still follow.

Luis Felipe <luis.felipe.la@protonmail.com> writes:

Toggle quote (21 lines)
> Hi Jelle, thanks for taking a look.
>
> I'm sending a new patch after this message, but I'm replying to your review below.
>
>
> On Monday, February 13th, 2023 at 13:44, Jelle Licht <jlicht@fsfe.org> wrote:
>
>> > + (native-inputs (list guile-3.0 texinfo))
>>
>
>>
>
>> I think guile should be a normal input. Other packages like this
>> (e.g. guilescript, ccwl) seem to do it that way.
>
> I moved it to inputs now. But I placed it in native-inputs following the guile-build-system documentation in the manual:
>
> "Packages built with ‘guile-build-system’ must provide a Guile package in their ‘native-inputs’ field."
>
> Did I misunderstand or should that part of the manual be updated?

You are correct, but in order to cleanly cross compile, we'd need to:
- add guile to both inputs (for the shebang) and native-inputs (for
cross compilation)
- add all guile libraries to both propagated-inputs and native-inputs
- ensure all guile libraries we depend on can be cross compiled.
- rework the `(getenv ...)' trick again, to be constructed out of the
guile libraries in (propagated-)inputs, instead of the native-inputs.

A quick bit of research makes me think guix is one of few packages
written in guile using autotools that supports cross compilation. I
think we can just leave the entire cross-compilation thing to be done
later, and then have it be done properly for all guile packages at once.

Toggle quote (99 lines)
>> > + (propagated-inputs (list guile-config guile-lib))
>> > + (arguments
>> > + (list
>> > + #:phases
>> > + #~(modify-phases %standard-phases
>> > + (add-after 'build 'check
>> > + (lambda _
>> > + (invoke "guile" "proba.scm" "run" "tests")))
>> > + (add-after 'install 'install-wrapped-script
>> > + (lambda* (#:key outputs #:allow-other-keys)
>> > + (let* ((out (assoc-ref outputs "out"))
>> > + (version (target-guile-effective-version))
>> > + (scm (string-append "/share/guile/site/" version))
>> > + (go (string-append "/lib/guile/" version "/site-ccache"))
>> > + (bin-dir (string-append out "/bin"))
>> > + (script (string-append bin-dir "/proba")))
>> > + (mkdir-p bin-dir)
>> > + (copy-file "proba.scm" script)
>> > + (chmod script #o555)
>> > + (wrap-program script
>> > + `("GUILE_LOAD_PATH" prefix + (,(string-append out scm))) +` ("GUILE_LOAD_COMPILED_PATH" prefix
>> > + (,(string-append out go)))))))
>>
>
>>
>
>> This seems almost correct, as it extends the GUILE_LOAD_{,COMPILED}PATH
>> at runtime; the user would for still need to have the guile-config and
>> guile in their profile. Although guile-config is also listed as a
>> propagated input, when the guile search paths specifications are not
>> active, the following would not work:
>>
>
>> `guix shell --pure guile-proba -- proba run tests'
>>
>
>> You could have a look at the 'wrap phase of the ccwl package; they use
>> the value of (getenv "GUILE_LOAD{,COMPILED}_PATH") retrieved while
>> building the package to wrap their script.
>
> I added a new phase to set Guile load paths so that they take (getenv "GUILE_LOAD{,COMPILED}_PATH") into account, and modified the wrapping accordingly. In my test, running "guix shell --pure guile-proba -- proba run tests" works now.
>
>
>> > + (add-after 'install 'install-manual
>> > + (lambda* (#:key outputs #:allow-other-keys)
>> > + (let* ((out (assoc-ref outputs "out"))
>> > + (info-dir (string-append out "/share/info")))
>> > + (mkdir-p info-dir)
>> > + (invoke "makeinfo" "manual/main.texi")
>> > + (install-file "guile-proba" info-dir)))))
>>
>
>> Nitpick, so feel free to ignore:
>> You could split up building and installing the manual.
>
> I put building into a separate phase.
>
>
>> > + #:not-compiled-file-regexp
>> > + "((bogus|bogus-tests|packages|tests)\\/.*.scm|(proba|manifest).scm)$"))
>>
>
>>
>
>> All of the files listed in this regex are still installed in
>> <out>/share/guile/site/3.0. Do you think it would be possible to ensure
>> these files are not installed?
>
> It was possible. Now it looks like this:
>
> /gnu/store/xaqmf7n83h5dq9xv6is46ybjk98ssakr-guile-proba-0.3.0
> |-- bin
> | `-- proba
> |-- lib
> | `-- guile
> | `-- 3.0
> | `-- site-ccache
> | `-- proba
> | |-- cli.go
> | |-- commands.go
> | |-- runners.go
> | |-- templates.go
> | `-- utils.go
> `-- share
> |-- doc
> | `-- guile-proba-0.3.0
> | |-- README.org
> | `-- index.html
> |-- guile
> | `-- site
> | `-- 3.0
> | `-- proba
> | |-- cli.scm
> | |-- commands.scm
> | |-- runners.scm
> | |-- templates.scm
> | `-- utils.scm
> `-- info
> `-- guile-proba
Closed
?