* %current-system and --system
@ 2023-03-03 15:37 Greg Hogan
2023-03-07 12:08 ` Efraim Flashner
2023-03-07 16:09 ` Ludovic Courtès
0 siblings, 2 replies; 3+ messages in thread
From: Greg Hogan @ 2023-03-03 15:37 UTC (permalink / raw)
To: Guix Help
Hi Guix,
From my x86_64 machine I am executing offload builds targeting an
aarch64 machine:
$ guix build --system=aarch64-linux --manifest=manifest.scm
Several packages do not build for aarch64 and need to be filtered out.
%current-target-system is #f as these are offload builds not cross
compilation, and %current-system is reported as "x86_64-linux". How
can I access the current "build system"?
If it helps, the manifest is defined at
https://github.com/greghogan/guix-manifest
Thanks,
Greg
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: %current-system and --system
2023-03-03 15:37 %current-system and --system Greg Hogan
@ 2023-03-07 12:08 ` Efraim Flashner
2023-03-07 16:09 ` Ludovic Courtès
1 sibling, 0 replies; 3+ messages in thread
From: Efraim Flashner @ 2023-03-07 12:08 UTC (permalink / raw)
To: Greg Hogan; +Cc: Guix Help
[-- Attachment #1: Type: text/plain, Size: 1686 bytes --]
On Fri, Mar 03, 2023 at 10:37:44AM -0500, Greg Hogan wrote:
> Hi Guix,
>
> From my x86_64 machine I am executing offload builds targeting an
> aarch64 machine:
>
> $ guix build --system=aarch64-linux --manifest=manifest.scm
>
> Several packages do not build for aarch64 and need to be filtered out.
> %current-target-system is #f as these are offload builds not cross
> compilation, and %current-system is reported as "x86_64-linux". How
> can I access the current "build system"?
>
> If it helps, the manifest is defined at
> https://github.com/greghogan/guix-manifest
>
> Thanks,
> Greg
Here's a (reduced) snippet I have from my home-config (and previously in
my manifest file):
(define %my-package-list
(list "git"
"git:send-email"
"git-annex")
(define package-list
(map (compose list specification->package+output)
(filter (lambda (pkg)
(member (or (%current-system)
(%current-target-system))
(package-transitive-supported-systems
(specification->package+output pkg))))
%my-package-list)))
(%current-target-system) doesn't currently work with guix-home but I
figured I'd have it ready. package-transitive-supported-systems makes it
so that git-annex, which shows as supported on aarch64-linux, isn't
added because ghc, one of its dependencies, isn't supported on
aarch64-linux.
--
Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: %current-system and --system
2023-03-03 15:37 %current-system and --system Greg Hogan
2023-03-07 12:08 ` Efraim Flashner
@ 2023-03-07 16:09 ` Ludovic Courtès
1 sibling, 0 replies; 3+ messages in thread
From: Ludovic Courtès @ 2023-03-07 16:09 UTC (permalink / raw)
To: Greg Hogan; +Cc: Guix Help
Hi,
Greg Hogan <code@greghogan.com> skribis:
> From my x86_64 machine I am executing offload builds targeting an
> aarch64 machine:
>
> $ guix build --system=aarch64-linux --manifest=manifest.scm
>
> Several packages do not build for aarch64 and need to be filtered out.
> %current-target-system is #f as these are offload builds not cross
> compilation, and %current-system is reported as "x86_64-linux". How
> can I access the current "build system"?
Not via ‘%current-system’ because at the time the manifest is evaluated,
it can be bound to anything, as you saw.
What you could do is wrap packages in ‘let-system’, which lets you check
the “current system” as the time the object is “lowered” (untested):
(define (package-or-emptiness p)
(let-system system
(if (supported-package? p system)
p
(plain-file "emptyness" "Nothing to see here."))))
(manifest
(map (lambda (p)
(manifest-entry
(inherit (package->manifest-entry p))
(item (package-or-emptiness p))))
the-packages))
Obviously that’s not great because you still end up with entries for
non-existing packages. It’s good enough for ‘guix build -m’ though.
HTH!
Ludo’.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-03-07 16:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-03 15:37 %current-system and --system Greg Hogan
2023-03-07 12:08 ` Efraim Flashner
2023-03-07 16:09 ` Ludovic Courtès
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.