help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Help with channel build system and package


From: Jesse Millwood
Subject: Re: Help with channel build system and package
Date: Thu, 8 Feb 2024 13:33:09 -0500
User-agent: Mozilla Thunderbird

Thanks for the response Marek

On 2/8/24 12:00, Marek Paśnikowski wrote:
08.02.2024 15:32:44 CET Jesse:
Thanks for taking a look Carlo!

On 2/7/24 22:37, Carlo Zancanaro wrote:
Hi Jesse,

I know very little about what you're trying to do, but there's one thing
that looked wrong to me:

On Wed, Feb 07 2024, Jesse wrote:
...

      (build-system crosstool-ng)

...
This isn't a build system, right? It's just the package? I think you may
want crosstool-ng-build-system here.
However, now I get this:

guix build -v3 -L embedded-dev ct-ng-riscv64-unknown-elf
guix build: warning: invalid argument list
guix build: warning: source expression failed to match any pattern
error: crosstool-ng-build-system: unbound variable
hint: Did you forget `(use-modules (embedded-dev build-system
crosstool-ng))'?

guix build: error: ct-ng-riscv64-unknown-elf: unknown package

This confuses me a bit because it says that it is an unbound variable
but it is defined in embedded-dev/build-system/crosstool-ng.scm. I
believe I should be importing this module with the "#:use-module
(embedded-dev build-system crosstool-ng)" line in the package file. The
symbol should be exported with:
I am just starting to understand how packaging works, but one thing that
stands out to me is the #:sample keyword in arguments of the *riscv64* package
definition. Where is it defined? Is the source correctly imported?

Ha, I am just trying to understand how packaging works too (or at least I think I am, lol).

That's a good catch and suggestion. I thought that by doing this in build-system/crosstool-ng.scm:

(define* (crosstool-ng-build name inputs
                             #:key (sample "unknown")
                             (test-target "test")
                             (tests? #t)
                             (phases '%standard-phases)
                             (outputs '("out"))
                             (search-paths '())
                             (system (%current-system))
                             (guile #f)
                             (imported-modules %crosstool-ng-build-system-modules)                              (modules '((guix build crosstool-ng-build-system)
                                        (guix build utils)))
                             )

That the #:key (sample "unknown") was defining that as a keyword argument. It was a hold over from an idea I had that I kind of abandoned but didn't think it was causing any issues. I just removed that and the arguments line from the packages.

Now I get two invalid argument list errors:

guix build -v3 -L embedded-dev ct-ng-riscv64-unknown-elf
guix build: warning: invalid argument list
guix build: warning: invalid argument list
error: crosstool-ng-build-system: unbound variable
hint: Did you forget `(use-modules (embedded-dev build-system crosstool-ng))'?

guix build: error: ct-ng-riscv64-unknown-elf: unknown package

I guess I was thinking that it was saying that my invocation of the guix build command had an invalid argument given. I hadn't thought that it was talking about an argument given to one of the functions. That gives me some where to start looking at least.


My hypothesis is that guix, upon loading the module in question:
1. fails to parse the #:sample keyword (invalid argument list warning)
2. fails to parse the package definition due to the above (pattern failure)
3. fails to find the package definition due to the above (unbound variable)

This problem is educational to me, so give me the benefit of the doubt.

That's a sound hypothesis. It gives me a good idea of where to look, thanks!

Do you know of any way to increase the verbosity of error messages or logs to help debug where things are going awry?


Sincerely,

Marek Paśnikowski

Thanks,

Jesse




reply via email to

[Prev in Thread] Current Thread [Next in Thread]