unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#70985] [PATCH 0/4] Use specific errors for unsupported targets
@ 2024-05-16 14:59 Christopher Baines
  2024-05-16 15:06 ` [bug#70985] [PATCH 1/4] guix: packages: Add new &package-unsupported-target-error Christopher Baines
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Christopher Baines @ 2024-05-16 14:59 UTC (permalink / raw)
  To: 70985

[-- Attachment #1: Type: text/plain, Size: 1106 bytes --]

I think when computing derivations any errors except from a small list
should be treated as bugs.

This has become more of an issue with the avr, or1k-elf and
xtensa-ath9k-elf targets since these targets both seem to not support a
large number of packages, and lead to generic errors or crashes.

I'm seeing this because logs relating to errors computing package
derivations are now taking up most of the data service logs around
processing revisions.


Christopher Baines (4):
  guix: packages: Add new &package-unsupported-target-error.
  gnu: tls: Raise conditions from target->openssl-target.
  gnu: cross-libc*: Raise conditions rather than returning #f.
  guix: build-system: meson: Don't error on unsupported targets.

 gnu/packages/cross-base.scm |  12 +++-
 gnu/packages/tls.scm        |  17 ++++--
 guix/build-system/meson.scm | 115 +++++++++++++++++++-----------------
 guix/packages.scm           |   7 +++
 guix/ui.scm                 |   7 +++
 5 files changed, 98 insertions(+), 60 deletions(-)


base-commit: 5a624adfd7b14c3717237d137bd0766c77f0f570
-- 
2.41.0

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 987 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#70985] [PATCH 1/4] guix: packages: Add new &package-unsupported-target-error.
  2024-05-16 14:59 [bug#70985] [PATCH 0/4] Use specific errors for unsupported targets Christopher Baines
@ 2024-05-16 15:06 ` Christopher Baines
  2024-05-16 15:06   ` [bug#70985] [PATCH 2/4] gnu: tls: Raise conditions from target->openssl-target Christopher Baines
                     ` (2 more replies)
  2024-05-16 15:16 ` [bug#70985] [PATCH 0/4] Use specific errors for " Ludovic Courtès
  2024-05-17  9:53 ` [bug#70985] [PATCH 3/4] gnu: cross-libc*: Raise conditions rather than returning #f Jean-Pierre De Jesus Diaz
  2 siblings, 3 replies; 11+ messages in thread
From: Christopher Baines @ 2024-05-16 15:06 UTC (permalink / raw)
  To: 70985
  Cc: Christopher Baines, Josselin Poiret, Ludovic Courtès,
	Mathieu Othacehe, Ricardo Wurmus, Simon Tournier,
	Tobias Geerinckx-Rice

Some packages don't support cross building to specific targets, so add a error
type to signal this.

* guix/packages.scm (&package-unsupported-target-error): New condition type.
[package-unsupported-target-error? package-unsupported-target-error-target):
New procedures.
* guix/ui.scm (call-with-error-handling): Handle this new condition type.

Change-Id: Ib47813399e04b20d616a95f545b6aabe25736e92
---
 guix/packages.scm | 7 +++++++
 guix/ui.scm       | 7 +++++++
 2 files changed, 14 insertions(+)

diff --git a/guix/packages.scm b/guix/packages.scm
index abe89cdb07..7fbb8d126b 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -173,6 +173,9 @@ (define-module (guix packages)
             package-error-invalid-input
             &package-cross-build-system-error
             package-cross-build-system-error?
+            &package-unsupported-target-error
+            package-unsupported-target-error?
+            package-unsupported-target-error-target
 
             package->bag
             bag->derivation
@@ -850,6 +853,10 @@ (define-condition-type &package-cyclic-dependency-error &package-error
 (define-condition-type &package-cross-build-system-error &package-error
   package-cross-build-system-error?)
 
+(define-condition-type &package-unsupported-target-error &package-error
+  package-unsupported-target-error?
+  (target package-unsupported-target-error-target))
+
 (define* (package-full-name package #:optional (delimiter "@"))
   "Return the full name of PACKAGE--i.e., `NAME@VERSION'.  By specifying
 DELIMITER (a string), you can customize what will appear between the name and
diff --git a/guix/ui.scm b/guix/ui.scm
index d82fa533cc..0bb1b3b3ba 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -756,6 +756,13 @@ (define (call-with-error-handling thunk)
                        (location->string loc)
                        (package-full-name package)
                        (build-system-name system))))
+             ((package-unsupported-target-error? c)
+              (let* ((package (package-error-package c))
+                     (loc     (package-location package)))
+                (leave (G_ "~a: ~a: does not support target `~a'~%")
+                       (location->string loc)
+                       (package-full-name package)
+                       (package-unsupported-target-error-target c))))
              ((gexp-input-error? c)
               (let ((input (gexp-error-invalid-input c)))
                 (leave (G_ "~s: invalid G-expression input~%")

base-commit: 5a624adfd7b14c3717237d137bd0766c77f0f570
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#70985] [PATCH 2/4] gnu: tls: Raise conditions from target->openssl-target.
  2024-05-16 15:06 ` [bug#70985] [PATCH 1/4] guix: packages: Add new &package-unsupported-target-error Christopher Baines
@ 2024-05-16 15:06   ` Christopher Baines
  2024-05-16 15:06   ` [bug#70985] [PATCH 3/4] gnu: cross-libc*: Raise conditions rather than returning #f Christopher Baines
  2024-05-16 15:06   ` [bug#70985] [PATCH 4/4] guix: build-system: meson: Don't error on unsupported targets Christopher Baines
  2 siblings, 0 replies; 11+ messages in thread
From: Christopher Baines @ 2024-05-16 15:06 UTC (permalink / raw)
  To: 70985

Rather than rasising generic errors.

* gnu/packages/tls.scm (target->openssl-target): Raise conditions rather than
generic errors.
(openssl-1.1): Call target->openssl-target with the package.

Change-Id: I13c63328cdf6bc177b20879805246ad94ff2665b
---
 gnu/packages/tls.scm | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 719da8e113..f04e171a9b 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -84,7 +84,9 @@ (define-module (gnu packages tls)
   #:use-module (gnu packages time)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages base)
-  #:use-module (srfi srfi-1))
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-34)
+  #:use-module (srfi srfi-35))
 
 (define-public libtasn1
   (package
@@ -390,7 +392,7 @@ (define-public guile2.2-gnutls
      (modify-inputs (package-inputs guile-gnutls)
        (replace "guile" guile-2.2)))))
 
-(define (target->openssl-target target)
+(define (target->openssl-target pkg target)
   "Return the value to set CONFIGURE_TARGET_ARCH to when cross-compiling
 OpenSSL for TARGET."
   ;; Keep this code outside the build code,
@@ -411,7 +413,10 @@ (define (target->openssl-target target)
                    ((target-linux? target)
                     "linux")
                    (else
-                    (error "unsupported openssl target kernel"))))
+                    (raise (condition
+                            (&package-unsupported-target-error
+                             (package pkg)
+                             (target target)))))))
             (arch
              (cond
               ((target-x86-32? target)
@@ -438,7 +443,10 @@ (define (target->openssl-target target)
               ((target-64bit? target)
                "generic64")
               (else
-               (error "unsupported openssl target architecture")))))
+               (raise (condition
+                       (&package-unsupported-target-error
+                        (package pkg)
+                        (target target))))))))
         (string-append kernel "-" arch))))
 
 (define-public openssl-1.1
@@ -488,6 +496,7 @@ (define-public openssl-1.1
                         (setenv "CROSS_COMPILE" (string-append target "-"))
                         (setenv "CONFIGURE_TARGET_ARCH"
                                 #$(target->openssl-target
+                                   this-package
                                    (%current-target-system))))))
                  #~())
           #$@(if (target-hurd?)
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#70985] [PATCH 3/4] gnu: cross-libc*: Raise conditions rather than returning #f.
  2024-05-16 15:06 ` [bug#70985] [PATCH 1/4] guix: packages: Add new &package-unsupported-target-error Christopher Baines
  2024-05-16 15:06   ` [bug#70985] [PATCH 2/4] gnu: tls: Raise conditions from target->openssl-target Christopher Baines
@ 2024-05-16 15:06   ` Christopher Baines
  2024-05-16 15:15     ` Ludovic Courtès
  2024-05-16 15:06   ` [bug#70985] [PATCH 4/4] guix: build-system: meson: Don't error on unsupported targets Christopher Baines
  2 siblings, 1 reply; 11+ messages in thread
From: Christopher Baines @ 2024-05-16 15:06 UTC (permalink / raw)
  To: 70985; +Cc: Ludovic Courtès

As this means that the error will be clearer for targets which are
unsupported.

* gnu/packages/cross-base.scm (cross-libc*): Raise conditions rather than
returning #f.

Change-Id: I820780ad738d85a98950de5608f3019e961ff7c8
---
 gnu/packages/cross-base.scm | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 2cc5f52e47..0488e397ef 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -46,6 +46,8 @@ (define-module (gnu packages cross-base)
   #:use-module (guix gexp)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
+  #:use-module (srfi srfi-34)
+  #:use-module (srfi srfi-35)
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
   #:export (cross-binutils
@@ -671,8 +673,8 @@ (define* (cross-libc* target
                       (xbinutils (cross-binutils target))
                       (xheaders (cross-kernel-headers target)))
   "Return LIBC cross-built for TARGET, a GNU triplet. Use XGCC and XBINUTILS
-and the cross tool chain.  If TARGET doesn't have a standard C library #f is
-returned."
+and the cross tool chain.  If TARGET doesn't have a standard C library an
+exception is raised."
   (match target
    ((? target-mingw?)
     (let ((machine (substring target 0 (string-index target #\-))))
@@ -745,7 +747,11 @@ (define* (cross-libc* target
    ((? target-avr?)
     (make-avr-libc #:xbinutils xbinutils
                    #:xgcc xgcc))
-   (else #f)))
+   (else
+    (raise (condition
+            (&package-unsupported-target-error
+             (package libc)
+             (target target)))))))
 
 (define* (cross-gcc-toolchain/implementation target
                                              #:key
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#70985] [PATCH 4/4] guix: build-system: meson: Don't error on unsupported targets.
  2024-05-16 15:06 ` [bug#70985] [PATCH 1/4] guix: packages: Add new &package-unsupported-target-error Christopher Baines
  2024-05-16 15:06   ` [bug#70985] [PATCH 2/4] gnu: tls: Raise conditions from target->openssl-target Christopher Baines
  2024-05-16 15:06   ` [bug#70985] [PATCH 3/4] gnu: cross-libc*: Raise conditions rather than returning #f Christopher Baines
@ 2024-05-16 15:06   ` Christopher Baines
  2024-05-16 15:13     ` Ludovic Courtès
  2 siblings, 1 reply; 11+ messages in thread
From: Christopher Baines @ 2024-05-16 15:06 UTC (permalink / raw)
  To: 70985

Rather than raising generic errors.

* guix/build-system/meson.scm (make-machine-alist): Return #f if the triplet
is unsupported.
(lower): Return #f if the machine alist is #f.

Change-Id: If6a1f8d1c2073e43107406ac186aa9c845005a95
---
 guix/build-system/meson.scm | 115 +++++++++++++++++++-----------------
 1 file changed, 62 insertions(+), 53 deletions(-)

diff --git a/guix/build-system/meson.scm b/guix/build-system/meson.scm
index bf9ca15ecc..b321417773 100644
--- a/guix/build-system/meson.scm
+++ b/guix/build-system/meson.scm
@@ -46,39 +46,46 @@ (define (make-machine-alist triplet)
   "Make an association list describing what should go into
 the ‘host_machine’ section of the cross file when cross-compiling
 for TRIPLET."
-  `((system . ,(cond ((target-hurd? triplet) "gnu")
-                     ((target-linux? triplet) "linux")
-                     ((target-mingw? triplet) "windows")
-                     ((target-avr? triplet) "none")
-                     (#t (error "meson: unknown operating system"))))
-    (cpu_family . ,(cond ((target-x86-32? triplet) "x86")
+  (let ((system
+         (cond
+          ((target-hurd? triplet) "gnu")
+          ((target-linux? triplet) "linux")
+          ((target-mingw? triplet) "windows")
+          ((target-avr? triplet) "none")
+          (else #f)))
+        (cpu-family
+         (cond ((target-x86-32? triplet) "x86")
+               ((target-x86-64? triplet) "x86_64")
+               ((target-arm32? triplet) "arm")
+               ((target-aarch64? triplet) "aarch64")
+               ((target-avr? triplet) "avr")
+               ((target-mips64el? triplet) "mips64")
+               ((target-powerpc? triplet)
+                (if (target-64bit? triplet)
+                    "ppc64"
+                    "ppc"))
+               ((target-riscv64? triplet) "riscv64")
+               (else #f))))
+    (and system
+         cpu-family
+         `((system . ,system)
+           (cpu_family . ,cpu-family)
+           (cpu . ,(cond ((target-x86-32? triplet) ; i386, ..., i686
+                          (substring triplet 0 4))
                          ((target-x86-64? triplet) "x86_64")
-                         ((target-arm32? triplet) "arm")
-                         ((target-aarch64? triplet) "aarch64")
+                         ((target-aarch64? triplet) "armv8-a")
+                         ((target-arm32? triplet) "armv7")
                          ((target-avr? triplet) "avr")
-                         ((target-mips64el? triplet) "mips64")
-                         ((target-powerpc? triplet)
-                          (if (target-64bit? triplet)
-                              "ppc64"
-                              "ppc"))
-                         ((target-riscv64? triplet) "riscv64")
-                         (#t (error "meson: unknown architecture"))))
-    (cpu . ,(cond ((target-x86-32? triplet) ; i386, ..., i686
-                   (substring triplet 0 4))
-                  ((target-x86-64? triplet) "x86_64")
-                  ((target-aarch64? triplet) "armv8-a")
-                  ((target-arm32? triplet) "armv7")
-                  ((target-avr? triplet) "avr")
-                  ;; According to #mesonbuild on OFTC, there does not appear
-                  ;; to be an official-ish list of CPU types recognised by
-                  ;; Meson, the "cpu" field is not used by Meson itself and
-                  ;; most software doesn't look at this field, except perhaps
-                  ;; for selecting optimisations, so set it to something
-                  ;; arbitrary.
-                  (#t "strawberries")))
-    (endian . ,(if (target-little-endian? triplet)
-                   "little"
-                   "big"))))
+                         ;; According to #mesonbuild on OFTC, there does not appear
+                         ;; to be an official-ish list of CPU types recognised by
+                         ;; Meson, the "cpu" field is not used by Meson itself and
+                         ;; most software doesn't look at this field, except perhaps
+                         ;; for selecting optimisations, so set it to something
+                         ;; arbitrary.
+                         (#t "strawberries")))
+           (endian . ,(if (target-little-endian? triplet)
+                          "little"
+                          "big"))))))
 
 (define (make-binaries-alist triplet)
   "Make an associatoin list describing what should go into
@@ -146,29 +153,31 @@ (define* (lower name
             '()
             '(#:target))))
 
-  (bag
-    (name name)
-    (system system) (target target)
-    (build-inputs `(("meson" ,meson)
-                    ("ninja" ,ninja)
-                    ,@native-inputs
-                    ,@(if target '() inputs)
-                    ;; Keep the standard inputs of 'gnu-build-system'.
-                    ,@(if target
-                          (standard-cross-packages target 'host)
+  (and
+   (make-machine-alist target)
+   (bag
+     (name name)
+     (system system) (target target)
+     (build-inputs `(("meson" ,meson)
+                     ("ninja" ,ninja)
+                     ,@native-inputs
+                     ,@(if target '() inputs)
+                     ;; Keep the standard inputs of 'gnu-build-system'.
+                     ,@(if target
+                           (standard-cross-packages target 'host)
+                           '())
+                     ,@(standard-packages)))
+     (host-inputs `(,@(if source
+                          `(("source" ,source))
                           '())
-                    ,@(standard-packages)))
-    (host-inputs `(,@(if source
-                         `(("source" ,source))
-                         '())
-                   ,@(if target inputs '())))
-    ;; Keep the standard inputs of 'gnu-buid-system'.
-    (target-inputs (if target
-                       (standard-cross-packages target 'target)
-                       '()))
-    (outputs outputs)
-    (build (if target meson-cross-build meson-build))
-    (arguments (strip-keyword-arguments private-keywords arguments))))
+                    ,@(if target inputs '())))
+     ;; Keep the standard inputs of 'gnu-buid-system'.
+     (target-inputs (if target
+                        (standard-cross-packages target 'target)
+                        '()))
+     (outputs outputs)
+     (build (if target meson-cross-build meson-build))
+     (arguments (strip-keyword-arguments private-keywords arguments)))))
 
 (define* (meson-build name inputs
                       #:key
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#70985] [PATCH 4/4] guix: build-system: meson: Don't error on unsupported targets.
  2024-05-16 15:06   ` [bug#70985] [PATCH 4/4] guix: build-system: meson: Don't error on unsupported targets Christopher Baines
@ 2024-05-16 15:13     ` Ludovic Courtès
  2024-05-16 16:10       ` Christopher Baines
  0 siblings, 1 reply; 11+ messages in thread
From: Ludovic Courtès @ 2024-05-16 15:13 UTC (permalink / raw)
  To: Christopher Baines; +Cc: 70985

Hi,

Christopher Baines <mail@cbaines.net> writes:

> Rather than raising generic errors.
>
> * guix/build-system/meson.scm (make-machine-alist): Return #f if the triplet
> is unsupported.
> (lower): Return #f if the machine alist is #f.
>
> Change-Id: If6a1f8d1c2073e43107406ac186aa9c845005a95

[...]

> +  (and
> +   (make-machine-alist target)

I think this call is unnecessary (and kinda confusing because
‘make-machine-alist’ is a pure function) because ‘meson-cross-build’
calls ‘make-cross-file’, which calls ‘make-machine-alist’.

Ludo’.




^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#70985] [PATCH 3/4] gnu: cross-libc*: Raise conditions rather than returning #f.
  2024-05-16 15:06   ` [bug#70985] [PATCH 3/4] gnu: cross-libc*: Raise conditions rather than returning #f Christopher Baines
@ 2024-05-16 15:15     ` Ludovic Courtès
  2024-05-16 16:16       ` Christopher Baines
  0 siblings, 1 reply; 11+ messages in thread
From: Ludovic Courtès @ 2024-05-16 15:15 UTC (permalink / raw)
  To: Christopher Baines; +Cc: 70985

Christopher Baines <mail@cbaines.net> writes:

> As this means that the error will be clearer for targets which are
> unsupported.
>
> * gnu/packages/cross-base.scm (cross-libc*): Raise conditions rather than
> returning #f.
>
> Change-Id: I820780ad738d85a98950de5608f3019e961ff7c8

[...]

> -   (else #f)))
> +   (else
> +    (raise (condition
> +            (&package-unsupported-target-error
> +             (package libc)
> +             (target target)))))))

What I'm unsure is whether this works with libc-less triplets such as
‘avr’ or ‘or1k-elf’.

If it does, LGTM.

Ludo’.




^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#70985] [PATCH 0/4] Use specific errors for unsupported targets
  2024-05-16 14:59 [bug#70985] [PATCH 0/4] Use specific errors for unsupported targets Christopher Baines
  2024-05-16 15:06 ` [bug#70985] [PATCH 1/4] guix: packages: Add new &package-unsupported-target-error Christopher Baines
@ 2024-05-16 15:16 ` Ludovic Courtès
  2024-05-17  9:53 ` [bug#70985] [PATCH 3/4] gnu: cross-libc*: Raise conditions rather than returning #f Jean-Pierre De Jesus Diaz
  2 siblings, 0 replies; 11+ messages in thread
From: Ludovic Courtès @ 2024-05-16 15:16 UTC (permalink / raw)
  To: Christopher Baines; +Cc: 70985

Christopher Baines <mail@cbaines.net> writes:

> I think when computing derivations any errors except from a small list
> should be treated as bugs.
>
> This has become more of an issue with the avr, or1k-elf and
> xtensa-ath9k-elf targets since these targets both seem to not support a
> large number of packages, and lead to generic errors or crashes.
>
> I'm seeing this because logs relating to errors computing package
> derivations are now taking up most of the data service logs around
> processing revisions.

Looks to me like a much welcome improvement, modulo the minor issues I
commented on.  Thanks!

Ludo'.




^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#70985] [PATCH 4/4] guix: build-system: meson: Don't error on unsupported targets.
  2024-05-16 15:13     ` Ludovic Courtès
@ 2024-05-16 16:10       ` Christopher Baines
  0 siblings, 0 replies; 11+ messages in thread
From: Christopher Baines @ 2024-05-16 16:10 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 70985

[-- Attachment #1: Type: text/plain, Size: 1354 bytes --]

Ludovic Courtès <ludo@gnu.org> writes:

> Christopher Baines <mail@cbaines.net> writes:
>
>> Rather than raising generic errors.
>>
>> * guix/build-system/meson.scm (make-machine-alist): Return #f if the triplet
>> is unsupported.
>> (lower): Return #f if the machine alist is #f.
>>
>> Change-Id: If6a1f8d1c2073e43107406ac186aa9c845005a95
>
> [...]
>
>> +  (and
>> +   (make-machine-alist target)
>
> I think this call is unnecessary (and kinda confusing because
> ‘make-machine-alist’ is a pure function) because ‘meson-cross-build’
> calls ‘make-cross-file’, which calls ‘make-machine-alist’.

The situation here is that the meson build system does support cross
builds, but make-machine-alist calls error for some targets which I'm
treating as a bug here, because error isn't really machine readable.

I think this line should actually be (or (not target)
(make-machine-alist target)) to handle the case where the target is #f,
but this is sort of helpful in that it changes the error to the usual
error when the build system doesn't support cross builds.

This is still far from perfect though as the UI would say that "build
system `meson' does not support cross builds", which is obviously wrong,
it just doesn't support cross builds for the given target. I'm not sure
how to signal this though?

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 987 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#70985] [PATCH 3/4] gnu: cross-libc*: Raise conditions rather than returning #f.
  2024-05-16 15:15     ` Ludovic Courtès
@ 2024-05-16 16:16       ` Christopher Baines
  0 siblings, 0 replies; 11+ messages in thread
From: Christopher Baines @ 2024-05-16 16:16 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 70985

[-- Attachment #1: Type: text/plain, Size: 1193 bytes --]

Ludovic Courtès <ludo@gnu.org> writes:

> Christopher Baines <mail@cbaines.net> writes:
>
>> As this means that the error will be clearer for targets which are
>> unsupported.
>>
>> * gnu/packages/cross-base.scm (cross-libc*): Raise conditions rather than
>> returning #f.
>>
>> Change-Id: I820780ad738d85a98950de5608f3019e961ff7c8
>
> [...]
>
>> -   (else #f)))
>> +   (else
>> +    (raise (condition
>> +            (&package-unsupported-target-error
>> +             (package libc)
>> +             (target target)))))))
>
> What I'm unsure is whether this works with libc-less triplets such as
> ‘avr’ or ‘or1k-elf’.

Hmm, it seems like this is erroring in some cases where it didn't
before, I'm not sure why though.

I ended up here through rust-sysroot-for-... since it calls
cross-libc. Handling cross-libc returning #f in the packages which use
it seems error prone, hence adding the exception inside of cross-libc*.

It looks liek cross-gcc-toolchain/implementation is expecting cross-libc
to return #f in some cases though, so maybe I need to add a guard there
somehow to handle the exception and ignore it, as happens when it
returns #f.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 987 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#70985] [PATCH 3/4] gnu: cross-libc*: Raise conditions rather than returning #f.
  2024-05-16 14:59 [bug#70985] [PATCH 0/4] Use specific errors for unsupported targets Christopher Baines
  2024-05-16 15:06 ` [bug#70985] [PATCH 1/4] guix: packages: Add new &package-unsupported-target-error Christopher Baines
  2024-05-16 15:16 ` [bug#70985] [PATCH 0/4] Use specific errors for " Ludovic Courtès
@ 2024-05-17  9:53 ` Jean-Pierre De Jesus Diaz
  2 siblings, 0 replies; 11+ messages in thread
From: Jean-Pierre De Jesus Diaz @ 2024-05-17  9:53 UTC (permalink / raw)
  To: 70985; +Cc: ludo, mail

Hello,

>> Christopher Baines <mail@cbaines.net> writes:
>>
>>> As this means that the error will be clearer for targets which are
>>> unsupported.
>>>
>>> * gnu/packages/cross-base.scm (cross-libc*): Raise conditions rather than
>>> returning #f.
>>>
>>> Change-Id: I820780ad738d85a98950de5608f3019e961ff7c8
>>
>> [...]
>>
>>> -   (else #f)))
>>> +   (else
>>> +    (raise (condition
>>> +            (&package-unsupported-target-error
>>> +             (package libc)
>>> +             (target target)))))))
>>
>> What I'm unsure is whether this works with libc-less triplets such as
>> ‘avr’ or ‘or1k-elf’.
>
>Hmm, it seems like this is erroring in some cases where it didn't
>before, I'm not sure why though.
>
>I ended up here through rust-sysroot-for-... since it calls
>cross-libc. Handling cross-libc returning #f in the packages which use
>it seems error prone, hence adding the exception inside of cross-libc*.
>
>It looks liek cross-gcc-toolchain/implementation is expecting cross-libc
>to return #f in some cases though, so maybe I need to add a guard there
>somehow to handle the exception and ignore it, as happens when it
>returns #f.

This is because some targets as Ludovic mentioned don't have a proper
libc, like most *-elf targets.  Also, gnu-build-system also depends on
cross-libc returning #f to check for those targets that don't have a
libc in `cross-standard-packages'.

Thanks,

Jean-Pierre




^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2024-05-17  9:55 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-16 14:59 [bug#70985] [PATCH 0/4] Use specific errors for unsupported targets Christopher Baines
2024-05-16 15:06 ` [bug#70985] [PATCH 1/4] guix: packages: Add new &package-unsupported-target-error Christopher Baines
2024-05-16 15:06   ` [bug#70985] [PATCH 2/4] gnu: tls: Raise conditions from target->openssl-target Christopher Baines
2024-05-16 15:06   ` [bug#70985] [PATCH 3/4] gnu: cross-libc*: Raise conditions rather than returning #f Christopher Baines
2024-05-16 15:15     ` Ludovic Courtès
2024-05-16 16:16       ` Christopher Baines
2024-05-16 15:06   ` [bug#70985] [PATCH 4/4] guix: build-system: meson: Don't error on unsupported targets Christopher Baines
2024-05-16 15:13     ` Ludovic Courtès
2024-05-16 16:10       ` Christopher Baines
2024-05-16 15:16 ` [bug#70985] [PATCH 0/4] Use specific errors for " Ludovic Courtès
2024-05-17  9:53 ` [bug#70985] [PATCH 3/4] gnu: cross-libc*: Raise conditions rather than returning #f Jean-Pierre De Jesus Diaz

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).