[PATCH] gnu: openssh: fix build on ppc64le.

  • Open
  • quality assurance status badge
Details
3 participants
  • Jack Hill
  • Marcel van der Boom
  • Marcel van der Boom
Owner
unassigned
Submitted by
Jack Hill
Severity
normal
J
J
Jack Hill wrote on 2 Jan 17:53 +0100
[PATCH] gnu: openssh: fix build one ppc64le.
(address . guix-patches@gnu.org)
0d64ed54ae7b8a0984e10b1be2f98257fe95377f.1704214408.git.jackhill@jackhill.us
* gnu/packages/ssh.scm (openssh)[source]:
Use 'openssh-gcc-13-ppc64le-fzero-call-used-regs.patch'.
* gnu/packages/patches/openssh-gcc-13-ppc64le-fzero-call-used-regs.patch:
New file.
* gnu/local.mk (dist_patch_DATA): Add it.

Reported by Marcel van der Boom <marcel@van-der-boom.nl>.

Change-Id: I41b1350b2cdd1487a8fd69b13b64f63c0dc166c9
---
gnu/local.mk | 1 +
...-gcc-13-ppc64le-fzero-call-used-regs.patch | 61 +++++++++++++++++++
gnu/packages/ssh.scm | 5 +-
3 files changed, 66 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/openssh-gcc-13-ppc64le-fzero-call-used-regs.patch

Toggle diff (99 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 4b2393bfdd..b52134e34e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1735,6 +1735,7 @@ dist_patch_DATA = \
%D%/packages/patches/openjdk-15-xcursor-no-dynamic.patch \
%D%/packages/patches/openjdk-21-fix-rpath.patch \
%D%/packages/patches/openmpi-mtl-priorities.patch \
+ %D%/packages/patches/openssh-gcc-13-ppc64le-fzero-call-used-regs.patch \
%D%/packages/patches/openssh-trust-guix-store-directory.patch \
%D%/packages/patches/openresolv-restartcmd-guix.patch \
%D%/packages/patches/openrgb-unbundle-hueplusplus.patch \
diff --git a/gnu/packages/patches/openssh-gcc-13-ppc64le-fzero-call-used-regs.patch b/gnu/packages/patches/openssh-gcc-13-ppc64le-fzero-call-used-regs.patch
new file mode 100644
index 0000000000..1af9868b9a
--- /dev/null
+++ b/gnu/packages/patches/openssh-gcc-13-ppc64le-fzero-call-used-regs.patch
@@ -0,0 +1,61 @@
+From 1036d77b34a5fa15e56f516b81b9928006848cbd Mon Sep 17 00:00:00 2001
+From: Damien Miller <djm@mindrot.org>
+Date: Fri, 22 Dec 2023 17:56:26 +1100
+Subject: [PATCH] better detection of broken -fzero-call-used-regs
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+gcc 13.2.0 on ppc64le refuses to compile some function, including
+cipher.c:compression_alg_list() with an error:
+
+> sorry, unimplemented: argument ‘used’ is not supportedcw
+> for ‘-fzero-call-used-regs’ on this target
+
+This extends the autoconf will-it-work test with a similarly-
+structured function that seems to catch this.
+
+Spotted/tested by Colin Watson; bz3645
+---
+
+Taken from upsteam, and for Guix by jackhill@jackhill.us
+Thanks Marcel van der Boom for noticing: https://issues.guix.gnu.org/67948#2
+
+m4/openssh.m4 | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/m4/openssh.m4 b/m4/openssh.m4
+index 5d4c56280..033df501c 100644
+--- a/m4/openssh.m4
++++ b/m4/openssh.m4
+@@ -20,18 +20,24 @@ char *f2(char *s, ...) {
+ va_end(args);
+ return strdup(ret);
+ }
++const char *f3(int s) {
++ return s ? "good" : "gooder";
++}
+ int main(int argc, char **argv) {
+- (void)argv;
+ char b[256], *cp;
++ const char *s;
+ /* Some math to catch -ftrapv problems in the toolchain */
+ int i = 123 * argc, j = 456 + argc, k = 789 - argc;
+ float l = i * 2.1;
+ double m = l / 0.5;
+ long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
++ (void)argv;
+ f(1);
+- snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o);
++ s = f3(f(2));
++ snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s);
+ if (write(1, b, 0) == -1) exit(0);
+- cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o);
++ cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s);
++ if (write(1, cp, 0) == -1) exit(0);
+ free(cp);
+ /*
+ * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
+--
+2.41.0
+
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index 0b364bbe90..e33a18f408 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -204,7 +204,10 @@ (define-public openssh
(method url-fetch)
(uri (string-append "mirror://openbsd/OpenSSH/portable/"
"openssh-" version ".tar.gz"))
- (patches (search-patches "openssh-trust-guix-store-directory.patch"))
+ (patches (search-patches "openssh-trust-guix-store-directory.patch"
+ ;; Can be removed with next openssh update
+ ;; https://issues.guix.gnu.org/67948#2
+ "openssh-gcc-13-ppc64le-fzero-call-used-regs.patch"))
(sha256
(base32 "0z3pgam8b4z05lvdb78iv06p204qwl7b94a3cnnwba2mfb0120li"))))
(build-system gnu-build-system)

base-commit: 8f03c69b428923dc4d51cda23b10aa7fa7d89f05
--
2.41.0
J
J
Jack Hill wrote on 2 Jan 17:54 +0100
[PATCH v2] gnu: openssh: fix build on ppc64le.
(address . 68212@debbugs.gnu.org)
0b1513509acb7ae7215cc50e9222494ba9cb3075.1704214486.git.jackhill@jackhill.us
* gnu/packages/ssh.scm (openssh)[source]:
Use 'openssh-gcc-13-ppc64le-fzero-call-used-regs.patch'.
* gnu/packages/patches/openssh-gcc-13-ppc64le-fzero-call-used-regs.patch:
New file.
* gnu/local.mk (dist_patch_DATA): Add it.

Reported by Marcel van der Boom <marcel@van-der-boom.nl>.

Change-Id: I41b1350b2cdd1487a8fd69b13b64f63c0dc166c9
---

v2: fix typo in commit message

gnu/local.mk | 1 +
...-gcc-13-ppc64le-fzero-call-used-regs.patch | 61 +++++++++++++++++++
gnu/packages/ssh.scm | 5 +-
3 files changed, 66 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/openssh-gcc-13-ppc64le-fzero-call-used-regs.patch

Toggle diff (99 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 4b2393bfdd..b52134e34e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1735,6 +1735,7 @@ dist_patch_DATA = \
%D%/packages/patches/openjdk-15-xcursor-no-dynamic.patch \
%D%/packages/patches/openjdk-21-fix-rpath.patch \
%D%/packages/patches/openmpi-mtl-priorities.patch \
+ %D%/packages/patches/openssh-gcc-13-ppc64le-fzero-call-used-regs.patch \
%D%/packages/patches/openssh-trust-guix-store-directory.patch \
%D%/packages/patches/openresolv-restartcmd-guix.patch \
%D%/packages/patches/openrgb-unbundle-hueplusplus.patch \
diff --git a/gnu/packages/patches/openssh-gcc-13-ppc64le-fzero-call-used-regs.patch b/gnu/packages/patches/openssh-gcc-13-ppc64le-fzero-call-used-regs.patch
new file mode 100644
index 0000000000..1af9868b9a
--- /dev/null
+++ b/gnu/packages/patches/openssh-gcc-13-ppc64le-fzero-call-used-regs.patch
@@ -0,0 +1,61 @@
+From 1036d77b34a5fa15e56f516b81b9928006848cbd Mon Sep 17 00:00:00 2001
+From: Damien Miller <djm@mindrot.org>
+Date: Fri, 22 Dec 2023 17:56:26 +1100
+Subject: [PATCH] better detection of broken -fzero-call-used-regs
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+gcc 13.2.0 on ppc64le refuses to compile some function, including
+cipher.c:compression_alg_list() with an error:
+
+> sorry, unimplemented: argument ‘used’ is not supportedcw
+> for ‘-fzero-call-used-regs’ on this target
+
+This extends the autoconf will-it-work test with a similarly-
+structured function that seems to catch this.
+
+Spotted/tested by Colin Watson; bz3645
+---
+
+Taken from upsteam, and for Guix by jackhill@jackhill.us
+Thanks Marcel van der Boom for noticing: https://issues.guix.gnu.org/67948#2
+
+m4/openssh.m4 | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/m4/openssh.m4 b/m4/openssh.m4
+index 5d4c56280..033df501c 100644
+--- a/m4/openssh.m4
++++ b/m4/openssh.m4
+@@ -20,18 +20,24 @@ char *f2(char *s, ...) {
+ va_end(args);
+ return strdup(ret);
+ }
++const char *f3(int s) {
++ return s ? "good" : "gooder";
++}
+ int main(int argc, char **argv) {
+- (void)argv;
+ char b[256], *cp;
++ const char *s;
+ /* Some math to catch -ftrapv problems in the toolchain */
+ int i = 123 * argc, j = 456 + argc, k = 789 - argc;
+ float l = i * 2.1;
+ double m = l / 0.5;
+ long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
++ (void)argv;
+ f(1);
+- snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o);
++ s = f3(f(2));
++ snprintf(b, sizeof b, "%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s);
+ if (write(1, b, 0) == -1) exit(0);
+- cp = f2("%d %d %d %f %f %lld %lld\n", i,j,k,l,m,n,o);
++ cp = f2("%d %d %d %f %f %lld %lld %s\n", i,j,k,l,m,n,o,s);
++ if (write(1, cp, 0) == -1) exit(0);
+ free(cp);
+ /*
+ * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
+--
+2.41.0
+
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index 0b364bbe90..e33a18f408 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -204,7 +204,10 @@ (define-public openssh
(method url-fetch)
(uri (string-append "mirror://openbsd/OpenSSH/portable/"
"openssh-" version ".tar.gz"))
- (patches (search-patches "openssh-trust-guix-store-directory.patch"))
+ (patches (search-patches "openssh-trust-guix-store-directory.patch"
+ ;; Can be removed with next openssh update
+ ;; https://issues.guix.gnu.org/67948#2
+ "openssh-gcc-13-ppc64le-fzero-call-used-regs.patch"))
(sha256
(base32 "0z3pgam8b4z05lvdb78iv06p204qwl7b94a3cnnwba2mfb0120li"))))
(build-system gnu-build-system)

base-commit: 8f03c69b428923dc4d51cda23b10aa7fa7d89f05
--
2.41.0
J
J
Jack Hill wrote on 2 Jan 17:56 +0100
typo fix
(address . control@debbugs.gnu.org)
f3aed768-0e7b-3d32-80cb-e2ed0f3e8a04@jackhill.us
retitle 68212 [PATCH] gnu: openssh: fix build on ppc64le.
J
J
Jack Hill wrote on 17 Jan 18:07 +0100
Re: [bug#68212] [PATCH v2] gnu: openssh: fix build on ppc64le.
(address . 68212-done@debbugs.gnu.org)
f9de675e-4fc4-c48f-9ae1-7a4c0288daca@jackhill.us
This was applied to master by Ludo’ in
ef270f9d73203c1b19c6163ce4d4257a52bfb605

Thanks and closing!

Best,
Jack
Closed
M
M
Marcel van der Boom wrote on 18 Jan 10:22 +0100
(name . Jack Hill)(address . jackhill@jackhill.us)
874jfb9et9.fsf@van-der-boom.nl
This still fails for me, and apparently also on the build farm:


if I am reading it properly that build is after the described
patch. The log has the same error as I have locally when building
openssh

Interestingly, since the openssh release I have this in my
manifest which *succeeds* in building openssh:


(define-public openssh-next
(let ((xcommit "1036d77b34a5fa15e56f516b81b9928006848cbd"))
(package
(inherit openssh)
(name "openssh-next")
(version "9.6p1-1")
(native-inputs
(list autoconf
automake
pkg-config))
(source
(origin
(method git-fetch)
(uri (git-reference
(url
(commit xcommit)))
(file-name (git-file-name name version))
(patches (search-patches
"openssh-trust-guix-store-directory.patch"))
(sha256
(base32
"1sary1ig972l4zjvpzncf9whfp5ab8snff2fw9sy5a8pda5n2a7w")))))))

This just refers to the commit that holds the patch, so in theory
it should be the same as the applied patch, no?

Am I overlooking something?



[Jack Hill]:
Toggle quote (8 lines)
> This was applied to master by Ludo’ in
> ef270f9d73203c1b19c6163ce4d4257a52bfb605

> Thanks and closing!

> Best,
> Jack

--
Marcel van der Boom → marcel@van-der-boom.nl
M
M
Marcel van der Boom wrote on 29 Jan 07:30 +0100
control message for bug #68212
(address . control@debbugs.gnu.org)
87frygfy8b.fsf@hsdev.com
reopen 68212
tags 68212 - fixed patch
quit
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 68212@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 68212
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch