diff mbox series

[bug#56505] Use the target predicates from (guix utils)

Message ID 70b76f171502fc7122dbfd120093660616632980.camel@planete-kraus.eu
State Accepted
Headers show
Series [bug#56505] Use the target predicates from (guix utils) | expand

Checks

Context Check Description
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Vivien Kraus July 19, 2022, 6:37 p.m. UTC
Dear guix,

antipode on #guix told me that these archaic tests to determine the
openssl target should be replaced with the new target predicates in
(guix utils), and that the kernel and the architecture should be dealt
with independently.

However, it seems that mingw targets do not use the same scheme, so I
had to keep that special case.

I had to introduce a new predicate for mips64el. As far as I
understand, this is also a 64-bit target, so it should also be detected
by target-64bit?, but fortunately this is already the case, so I don’t
have to change target-64bit?. I don’t think there are other predicates
that I should change, but I may be wrong.

What do you think?

Best regards,

Vivien

Comments

Ludovic Courtès Aug. 4, 2022, 10:14 p.m. UTC | #1
Hi Vivien,

Vivien Kraus <vivien@planete-kraus.eu> skribis:

> antipode on #guix told me that these archaic tests to determine the
> openssl target should be replaced with the new target predicates in
> (guix utils), and that the kernel and the architecture should be dealt
> with independently.

Good idea.

> However, it seems that mingw targets do not use the same scheme, so I
> had to keep that special case.
>
> I had to introduce a new predicate for mips64el. As far as I
> understand, this is also a 64-bit target, so it should also be detected
> by target-64bit?, but fortunately this is already the case, so I don’t
> have to change target-64bit?. I don’t think there are other predicates
> that I should change, but I may be wrong.
>
> What do you think?

I think that’s good!

> From 4084fb014e84e6b15825c6c37dcdba8bde56fa4e Mon Sep 17 00:00:00 2001
> From: Vivien Kraus <vivien@planete-kraus.eu>
> Date: Sat, 9 Jul 2022 23:39:16 +0200
> Subject: [PATCH v2 1/3] gnu: openssl: Cross-compile to mingw.
>
> * gnu/packages/tls.scm (target->openssl-target): Add cases for mingw and
> mingw64.

[...]

> From e4631751a4e435a2125b5d72f665f6ec0ef5d6e1 Mon Sep 17 00:00:00 2001
> From: Vivien Kraus <vivien@planete-kraus.eu>
> Date: Tue, 19 Jul 2022 20:05:45 +0200
> Subject: [PATCH v2 2/3] guix: Add target-mips64el?.
>
> * guix/utils.scm (target-mips64el?): New function. It detects whether the
> target system is mips64el.

[...]

> From ae3bffd19c2887342e28372c3c613e998eb21840 Mon Sep 17 00:00:00 2001
> From: Vivien Kraus <vivien@planete-kraus.eu>
> Date: Tue, 19 Jul 2022 20:09:14 +0200
> Subject: [PATCH v2 3/3] gnu: openssl: use target predicates from (guix utils)
>  for openssl.
>
> ---
>  gnu/packages/tls.scm | 65 ++++++++++++++++++++++++++------------------
>  1 file changed, 38 insertions(+), 27 deletions(-)

Added a commit log to this one and committed, thanks!

‘guix build openssl --target=x86_64-w64-mingw32’ works and the funny
part is that .dll files end up in bin/, but I think that’s intended on
Windows?

Ludo’.
diff mbox series

Patch

From ae3bffd19c2887342e28372c3c613e998eb21840 Mon Sep 17 00:00:00 2001
From: Vivien Kraus <vivien@planete-kraus.eu>
Date: Tue, 19 Jul 2022 20:09:14 +0200
Subject: [PATCH v2 3/3] gnu: openssl: use target predicates from (guix utils)
 for openssl.

---
 gnu/packages/tls.scm | 65 ++++++++++++++++++++++++++------------------
 1 file changed, 38 insertions(+), 27 deletions(-)

diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index b838e75b5c..a32031acb8 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -359,33 +359,44 @@  (define (target->openssl-target target)
   ;; Keep this code outside the build code,
   ;; such that new targets can be added
   ;; without causing rebuilds for other targets.
-  (cond ((string-prefix? "i586" target)
-         "hurd-x86")
-        ((string-suffix? "mingw32" target)
-         (string-append
-          "mingw"
-          (if (string-prefix? "x86_64" target)
-              "64"
-              "")))
-        ((string-prefix? "i686" target)
-         "linux-x86")
-        ((string-prefix? "x86_64" target)
-         "linux-x86_64")
-        ((string-prefix? "mips64el" target)
-         "linux-mips64")
-        ((string-prefix? "arm" target)
-         "linux-armv4")
-        ((string-prefix? "aarch64" target)
-         "linux-aarch64")
-        ((string-prefix? "powerpc64le" target)
-         "linux-ppc64le")
-        ((string-prefix? "powerpc64" target)
-         "linux-ppc64")
-        ((string-prefix? "powerpc" target)
-         "linux-ppc")
-        ((string-prefix? "riscv64" target)
-         ;; linux64-riscv64 isn't recognized until 3.0.0.
-         "linux-generic64")))
+  (if (target-mingw? target)
+      (string-append
+       "mingw"
+       (if (target-x86-64? target)
+           "64"
+           ""))
+      (let ((kernel
+             (cond ((target-hurd? target)
+                    "hurd")
+                   ((target-linux? target)
+                    "linux")
+                   (else
+                    (error "unsupported openssl target kernel"))))
+            (arch
+             (cond
+              ((target-x86-32? target)
+               "x86")
+              ((target-x86-64? target)
+               "x86_64")
+              ((target-mips64el? target)
+               "mips64")
+              ((target-arm32? target)
+               "armv4")
+              ((target-aarch64? target)
+               "aarch64")
+              ((target-ppc64le? target)
+               "ppc64le")
+              ((target-ppc32? target)
+               "ppc")
+              ((and (target-powerpc? target)
+                    (target-64bit? target))
+               "ppc64")
+              ((target-64bit? target)
+               ;; linux64-riscv64 isn't recognized until 3.0.0.
+               "generic64")
+              (else
+               (error "unsupported openssl target architecture")))))
+        (string-append kernel "-" arch))))
 
 (define-public openssl
   (package
-- 
2.36.1