GNU bug report logs - #60386
[PATCH] gnu: Add guile-proba.

Previous Next

Package: guix-patches;

Reported by: Luis Felipe <luis.felipe.la <at> protonmail.com>

Date: Wed, 28 Dec 2022 18:09:02 UTC

Severity: normal

Tags: patch

Done: Jelle Licht <jlicht <at> fsfe.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 60386 in the body.
You can then email your comments to 60386 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#60386; Package guix-patches. (Wed, 28 Dec 2022 18:09:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Luis Felipe <luis.felipe.la <at> protonmail.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Wed, 28 Dec 2022 18:09:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Luis Felipe <luis.felipe.la <at> protonmail.com>
To: Luis Felipe via Guix-patches <guix-patches <at> gnu.org>
Subject: [PATCH] gnu: Add guile-proba.
Date: Wed, 28 Dec 2022 18:07:52 +0000
[Message part 1 (text/plain, inline)]
Hi, a new package here.



---
Luis Felipe López Acevedo
https://luis-felipe.gitlab.io/
[0001-gnu-Add-guile-proba.patch (text/x-patch, attachment)]
[publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc (application/pgp-keys, attachment)]
[signature.asc (application/pgp-signature, attachment)]

Information forwarded to guix-patches <at> gnu.org:
bug#60386; Package guix-patches. (Tue, 10 Jan 2023 10:49:02 GMT) Full text and rfc822 format available.

Message #8 received at 60386 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Luis Felipe <luis.felipe.la <at> protonmail.com>
Cc: 60386 <at> debbugs.gnu.org
Subject: Re: bug#60386: [PATCH] gnu: Add guile-proba.
Date: Tue, 10 Jan 2023 11:48:45 +0100
Hello!

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

> From 332ea52f1f060a4fa1b8af7100b4cbd2f481f24b Mon Sep 17 00:00:00 2001
> From: Luis Felipe <luis.felipe.la <at> 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.

[...]

> +    (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’.




Information forwarded to guix-patches <at> gnu.org:
bug#60386; Package guix-patches. (Fri, 13 Jan 2023 15:42:02 GMT) Full text and rfc822 format available.

Message #11 received at 60386 <at> debbugs.gnu.org (full text, mbox):

From: Luis Felipe <luis.felipe.la <at> protonmail.com>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 60386 <at> debbugs.gnu.org
Subject: Re: bug#60386: [PATCH] gnu: Add guile-proba.
Date: Fri, 13 Jan 2023 15:41:42 +0000
[Message part 1 (text/plain, inline)]
On Tuesday, January 10th, 2023 at 10:48, Ludovic Courtès <ludo <at> 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). 


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...
[publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc (application/pgp-keys, attachment)]
[signature.asc (application/pgp-signature, attachment)]

Information forwarded to guix-patches <at> gnu.org:
bug#60386; Package guix-patches. (Tue, 17 Jan 2023 13:51:02 GMT) Full text and rfc822 format available.

Message #14 received at 60386 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Luis Felipe <luis.felipe.la <at> protonmail.com>
Cc: 60386 <at> debbugs.gnu.org
Subject: Re: bug#60386: [PATCH] gnu: Add guile-proba.
Date: Tue, 17 Jan 2023 14:50:28 +0100
Hi!

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

> On Tuesday, January 10th, 2023 at 10:48, Ludovic Courtès <ludo <at> 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’.




Information forwarded to guix-patches <at> gnu.org:
bug#60386; Package guix-patches. (Wed, 18 Jan 2023 18:21:02 GMT) Full text and rfc822 format available.

Message #17 received at 60386 <at> debbugs.gnu.org (full text, mbox):

From: Luis Felipe <luis.felipe.la <at> protonmail.com>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 60386 <at> debbugs.gnu.org
Subject: Re: bug#60386: [PATCH] gnu: Add guile-proba.
Date: Wed, 18 Jan 2023 18:20:00 +0000
[Message part 1 (text/plain, inline)]
On Tuesday, January 17th, 2023 at 13:50, Ludovic Courtès <ludo <at> gnu.org> wrote:

> 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.
[0001-gnu-Add-guile-proba.patch (text/x-patch, attachment)]
[publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc (application/pgp-keys, attachment)]
[signature.asc (application/pgp-signature, attachment)]

Information forwarded to guix-patches <at> gnu.org:
bug#60386; Package guix-patches. (Mon, 23 Jan 2023 22:26:01 GMT) Full text and rfc822 format available.

Message #20 received at 60386 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Luis Felipe <luis.felipe.la <at> protonmail.com>
Cc: 60386 <at> debbugs.gnu.org
Subject: Re: bug#60386: [PATCH] gnu: Add guile-proba.
Date: Mon, 23 Jan 2023 23:25:35 +0100
Hi,

Luis Felipe <luis.felipe.la <at> 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 <at> 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?

Thanks,
Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#60386; Package guix-patches. (Wed, 25 Jan 2023 01:13:02 GMT) Full text and rfc822 format available.

Message #23 received at 60386 <at> debbugs.gnu.org (full text, mbox):

From: Luis Felipe <luis.felipe.la <at> protonmail.com>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 60386 <at> debbugs.gnu.org
Subject: Re: bug#60386: [PATCH] gnu: Add guile-proba.
Date: Wed, 25 Jan 2023 01:11:47 +0000
[Message part 1 (text/plain, inline)]
On Monday, January 23rd, 2023 at 22:25, Ludovic Courtès <ludo <at> gnu.org> wrote:

> Hi,
>
> Luis Felipe luis.felipe.la <at> 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 <at> 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
2. git clone https://git.savannah.gnu.org/git/guix.git
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
[publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc (application/pgp-keys, attachment)]
[signature.asc (application/pgp-signature, attachment)]

Information forwarded to guix-patches <at> gnu.org:
bug#60386; Package guix-patches. (Thu, 26 Jan 2023 09:37:01 GMT) Full text and rfc822 format available.

Message #26 received at 60386 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Luis Felipe <luis.felipe.la <at> protonmail.com>
Cc: 60386 <at> debbugs.gnu.org
Subject: Re: bug#60386: [PATCH] gnu: Add guile-proba.
Date: Thu, 26 Jan 2023 10:35:31 +0100
Hi,

Luis Felipe <luis.felipe.la <at> 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’.

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

Thanks,
Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#60386; Package guix-patches. (Thu, 26 Jan 2023 14:30:02 GMT) Full text and rfc822 format available.

Message #29 received at 60386 <at> debbugs.gnu.org (full text, mbox):

From: Luis Felipe <luis.felipe.la <at> protonmail.com>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 60386 <at> debbugs.gnu.org
Subject: Re: bug#60386: [PATCH] gnu: Add guile-proba.
Date: Thu, 26 Jan 2023 14:29:13 +0000
[Message part 1 (text/plain, inline)]
Hey,

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


> Hi,
> 

> Luis Felipe luis.felipe.la <at> 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 :[


> 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,
[publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc (application/pgp-keys, attachment)]
[signature.asc (application/pgp-signature, attachment)]

Information forwarded to guix-patches <at> gnu.org:
bug#60386; Package guix-patches. (Mon, 06 Feb 2023 15:41:01 GMT) Full text and rfc822 format available.

Message #32 received at 60386 <at> debbugs.gnu.org (full text, mbox):

From: Luis Felipe <luis.felipe.la <at> protonmail.com>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 60386 <at> debbugs.gnu.org
Subject: Re: bug#60386: [PATCH] gnu: Add guile-proba.
Date: Mon, 06 Feb 2023 15:40:14 +0000
[Message part 1 (text/plain, inline)]
Hello again,

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

🤞
[0001-gnu-Add-guile-proba.patch (text/x-patch, attachment)]
[publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc (application/pgp-keys, attachment)]
[signature.asc (application/pgp-signature, attachment)]

Information forwarded to guix-patches <at> gnu.org:
bug#60386; Package guix-patches. (Mon, 13 Feb 2023 13:46:02 GMT) Full text and rfc822 format available.

Message #35 received at 60386 <at> debbugs.gnu.org (full text, mbox):

From: Jelle Licht <jlicht <at> fsfe.org>
To: Luis Felipe <luis.felipe.la <at> protonmail.com>, Ludovic Courtès <ludo <at> gnu.org>
Cc: 60386 <at> debbugs.gnu.org
Subject: Re: [bug#60386] [PATCH] gnu: Add guile-proba.
Date: Mon, 13 Feb 2023 14:44:58 +0100
Hi Luis,

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

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

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

> +    (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.

> +          (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.

> +      #: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?

> +    (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







Information forwarded to guix-patches <at> gnu.org:
bug#60386; Package guix-patches. (Wed, 15 Feb 2023 21:57:02 GMT) Full text and rfc822 format available.

Message #38 received at 60386 <at> debbugs.gnu.org (full text, mbox):

From: Luis Felipe <luis.felipe.la <at> protonmail.com>
To: Jelle Licht <jlicht <at> fsfe.org>
Cc: Ludovic Courtès <ludo <at> gnu.org>, 60386 <at> debbugs.gnu.org
Subject: Re: [bug#60386] [PATCH] gnu: Add guile-proba.
Date: Wed, 15 Feb 2023 21:56:07 +0000
[Message part 1 (text/plain, inline)]
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 <at> 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?


> > + (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
[publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc (application/pgp-keys, attachment)]
[signature.asc (application/pgp-signature, attachment)]

Information forwarded to guix-patches <at> gnu.org:
bug#60386; Package guix-patches. (Wed, 15 Feb 2023 22:01:02 GMT) Full text and rfc822 format available.

Message #41 received at 60386 <at> debbugs.gnu.org (full text, mbox):

From: sirgazil <at> zoho.com
To: 60386 <at> debbugs.gnu.org
Cc: Luis Felipe <luis.felipe.la <at> protonmail.com>, jlicht <at> fsfe.org
Subject: [PATCH v4] gnu: Add guile-proba.
Date: Wed, 15 Feb 2023 16:59:37 -0500
From: Luis Felipe <luis.felipe.la <at> protonmail.com>

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

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 <at> posteo.net>
 ;;; Copyright © 2022 Sharlatan Hellseher <sharlatanus <at> gmail.com>
 ;;; Copyright © 2022 jgart <jgart <at> dismail.de>
+;;; Copyright © 2023 Luis Felipe López Acevedo <luis.felipe.la <at> 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





Reply sent to Jelle Licht <jlicht <at> fsfe.org>:
You have taken responsibility. (Tue, 21 Feb 2023 17:55:02 GMT) Full text and rfc822 format available.

Notification sent to Luis Felipe <luis.felipe.la <at> protonmail.com>:
bug acknowledged by developer. (Tue, 21 Feb 2023 17:55:02 GMT) Full text and rfc822 format available.

Message #46 received at 60386-done <at> debbugs.gnu.org (full text, mbox):

From: Jelle Licht <jlicht <at> fsfe.org>
To: Luis Felipe <luis.felipe.la <at> protonmail.com>
Cc: Ludovic Courtès <ludo <at> gnu.org>, 60386-done <at> debbugs.gnu.org
Subject: Re: [bug#60386] [PATCH] gnu: Add guile-proba.
Date: Tue, 21 Feb 2023 18:54:15 +0100
Hi Luis,

Pushed to master! Some comments still follow.

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

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

>> > + (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




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 22 Mar 2023 11:24:08 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 33 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.