diff mbox series

[bug#49437,core-updates] build-system/qt: Fix build failures when

Message ID 52c57042714d524c092002e64dfd53e4ebde5b02.camel@telenet.be
State New
Headers show
Series [bug#49437,core-updates] build-system/qt: Fix build failures when | expand

Checks

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

Commit Message

M July 8, 2021, 5:51 p.m. UTC
Mathieu Othacehe schreef op do 08-07-2021 om 16:45 [+0200]:
> Hey Maxime,
> 
> > I am unable to test this at the moment (too little substitutes
> > for core-updates, too little processing power locally ...), but
> > I intent to do so later.
> 
> I think you are missing the attached patch here.

Now attached!

Greetings,
Maxime.

Comments

Mathieu Othacehe July 8, 2021, 7:37 p.m. UTC | #1
Hey,

> One of the features of 'qt-build-system' is that it automatically
> creates wrappers, but it needs 'bash' (or 'bash-minimal') to do
> so.  If "bin/bash" doesn't exist among the 'inputs', then
> 'search-input-file' (used by 'wrap-all-programs') will raise an
> exception.  Address this exception by adding "bash-minimal" to
> 'host-inputs' when cross-compiling.

I'd like to test it but it looks like qt-build-system drags glib which
uses the meson-build-system that doesn't support cross-compilation.

Did you test this patch, on top of your meson series?

Otherwise, it looks fine to me.

Thanks,

Mathieu
M July 8, 2021, 8:59 p.m. UTC | #2
Mathieu Othacehe schreef op do 08-07-2021 om 21:37 [+0200]:
> Hey,
> 
> > One of the features of 'qt-build-system' is that it automatically
> > creates wrappers, but it needs 'bash' (or 'bash-minimal') to do
> > so.  If "bin/bash" doesn't exist among the 'inputs', then
> > 'search-input-file' (used by 'wrap-all-programs') will raise an
> > exception.  Address this exception by adding "bash-minimal" to
> > 'host-inputs' when cross-compiling.
> 
> I'd like to test it but it looks like qt-build-system drags glib which
> uses the meson-build-system that doesn't support cross-compilation.
> 
> Did you test this patch, on top of your meson series?

I had started "./pre-inst-env guix build qtsvg" but that's no
cross-compilation.  I'll rebase the meson series and test it!

Greetings,
Maxime.
Maxim Cournoyer Sept. 23, 2021, 3:53 a.m. UTC | #3
Hello,

Maxime Devos <maximedevos@telenet.be> writes:

> Mathieu Othacehe schreef op do 08-07-2021 om 21:37 [+0200]:
>> Hey,
>> 
>> > One of the features of 'qt-build-system' is that it automatically
>> > creates wrappers, but it needs 'bash' (or 'bash-minimal') to do
>> > so.  If "bin/bash" doesn't exist among the 'inputs', then
>> > 'search-input-file' (used by 'wrap-all-programs') will raise an
>> > exception.  Address this exception by adding "bash-minimal" to
>> > 'host-inputs' when cross-compiling.
>> 
>> I'd like to test it but it looks like qt-build-system drags glib which
>> uses the meson-build-system that doesn't support cross-compilation.
>> 
>> Did you test this patch, on top of your meson series?
>
> I had started "./pre-inst-env guix build qtsvg" but that's no
> cross-compilation.  I'll rebase the meson series and test it!

Did it test fine?

Thanks,

Maxim
M Oct. 3, 2021, 8:56 a.m. UTC | #4
Maxim Cournoyer schreef op wo 22-09-2021 om 23:53 [-0400]:
> Hello,
> 
> Maxime Devos <maximedevos@telenet.be> writes:
> 
> > Mathieu Othacehe schreef op do 08-07-2021 om 21:37 [+0200]:
> > > Hey,
> > > 
> > > > One of the features of 'qt-build-system' is that it automatically
> > > > creates wrappers, but it needs 'bash' (or 'bash-minimal') to do
> > > > so.  If "bin/bash" doesn't exist among the 'inputs', then
> > > > 'search-input-file' (used by 'wrap-all-programs') will raise an
> > > > exception.  Address this exception by adding "bash-minimal" to
> > > > 'host-inputs' when cross-compiling.
> > > 
> > > I'd like to test it but it looks like qt-build-system drags glib which
> > > uses the meson-build-system that doesn't support cross-compilation.
> > > 
> > > Did you test this patch, on top of your meson series?
> > 
> > I had started "./pre-inst-env guix build qtsvg" but that's no
> > cross-compilation.  I'll rebase the meson series and test it!
> 
> Did it test fine?

Didn't test it yet, because I first wanted the meson series merged.
Now the meson series and the gtk+ cross-compilation fixes are merged,
I'll take a look again.

> Thanks,
> 
> Maxim
Maxim Cournoyer March 29, 2023, 2:15 a.m. UTC | #5
Hi Maxime,

I hope you are doing well.

Maxime Devos <maximedevos@telenet.be> writes:

> Maxim Cournoyer schreef op wo 22-09-2021 om 23:53 [-0400]:
>> Hello,
>> 
>> Maxime Devos <maximedevos@telenet.be> writes:
>> 
>> > Mathieu Othacehe schreef op do 08-07-2021 om 21:37 [+0200]:
>> > > Hey,
>> > > 
>> > > > One of the features of 'qt-build-system' is that it automatically
>> > > > creates wrappers, but it needs 'bash' (or 'bash-minimal') to do
>> > > > so.  If "bin/bash" doesn't exist among the 'inputs', then
>> > > > 'search-input-file' (used by 'wrap-all-programs') will raise an
>> > > > exception.  Address this exception by adding "bash-minimal" to
>> > > > 'host-inputs' when cross-compiling.
>> > > 
>> > > I'd like to test it but it looks like qt-build-system drags glib which
>> > > uses the meson-build-system that doesn't support cross-compilation.
>> > > 
>> > > Did you test this patch, on top of your meson series?
>> > 
>> > I had started "./pre-inst-env guix build qtsvg" but that's no
>> > cross-compilation.  I'll rebase the meson series and test it!
>> 
>> Did it test fine?
>
> Didn't test it yet, because I first wanted the meson series merged.
> Now the meson series and the gtk+ cross-compilation fixes are merged,
> I'll take a look again.

core-updates is pretty "hot" at the moment, so it may be a good time to
test.

On the other hand, there aren't that many Qt packages, so it could also
go to staging IMO.  And if it only touches cross-compilation drv,
perhaps it's good for master too?

It just needs testing.
M April 4, 2023, 6:59 p.m. UTC | #6
Op 29-03-2023 om 04:15 schreef Maxim Cournoyer:
> Hi Maxime,
> 
> I hope you are doing well.
> 
> [...]
> 
> core-updates is pretty "hot" at the moment, so it may be a good time to
> test.
> 
> On the other hand, there aren't that many Qt packages, so it could also
> go to staging IMO.  And if it only touches cross-compilation drv,
> perhaps it's good for master too?
> 
> It just needs testing.

I am not participating in Guix development anymore, except perhaps for 
bug reports and for when Guix intersects GNUnet, and currently it 
appears a permanent decision.

Greetings,
Maxime.
Maxim Cournoyer April 7, 2023, 9:15 p.m. UTC | #7
Hi,

Maxime Devos <maximedevos@telenet.be> writes:

> Op 29-03-2023 om 04:15 schreef Maxim Cournoyer:
>> Hi Maxime,
>> I hope you are doing well.
>> [...]
>> core-updates is pretty "hot" at the moment, so it may be a good time
>> to
>> test.
>> On the other hand, there aren't that many Qt packages, so it could
>> also
>> go to staging IMO.  And if it only touches cross-compilation drv,
>> perhaps it's good for master too?
>> It just needs testing.
>
> I am not participating in Guix development anymore, except perhaps for
> bug reports and for when Guix intersects GNUnet, and currently it
> appears a permanent decision.

OK.  It's sad that it's come to this, but I respect your decision;
thanks for making it clear.  Your thoughtful inputs and high-impact Guix
contributions will be missed!
Maxim Cournoyer Jan. 20, 2024, 9:11 p.m. UTC | #8
Hi,

Maxime Devos <maximedevos@telenet.be> writes:

> Mathieu Othacehe schreef op do 08-07-2021 om 16:45 [+0200]:
>> Hey Maxime,
>> 
>> > I am unable to test this at the moment (too little substitutes
>> > for core-updates, too little processing power locally ...), but
>> > I intent to do so later.
>> 
>> I think you are missing the attached patch here.
>
> Now attached!
>
> Greetings,
> Maxime.
>
> From b9e46156e1f35303b56fbe2ed4694385b6104214 Mon Sep 17 00:00:00 2001
> From: Maxime Devos <maximedevos@telenet.be>
> Date: Tue, 6 Jul 2021 10:57:49 +0200
> Subject: [PATCH core-updates] build-system/qt: Fix build failures when
>  cross-compiling.
>
> One of the features of 'qt-build-system' is that it automatically
> creates wrappers, but it needs 'bash' (or 'bash-minimal') to do
> so.  If "bin/bash" doesn't exist among the 'inputs', then
> 'search-input-file' (used by 'wrap-all-programs') will raise an
> exception.  Address this exception by adding "bash-minimal" to
> 'host-inputs' when cross-compiling.
>
> This change does not impact native compilation; the derivations
> for natively-compiled packages remain identical.
>
> * guix/build-system/qt.scm
>   (bash-for-wrappers): New procedure.
>   (lower): Add 'bash-minimal' to 'host-inputs' when cross-compiling.

I don't think our Qt packages can be already cross-built; hence there's
no current value in adding this before addressing cross-compilation of
the qt-build-system in the first place.

Also, 'guix lint' would still complain, so for now I'm opting to close
this without applying it.
diff mbox series

Patch

From b9e46156e1f35303b56fbe2ed4694385b6104214 Mon Sep 17 00:00:00 2001
From: Maxime Devos <maximedevos@telenet.be>
Date: Tue, 6 Jul 2021 10:57:49 +0200
Subject: [PATCH core-updates] build-system/qt: Fix build failures when
 cross-compiling.

One of the features of 'qt-build-system' is that it automatically
creates wrappers, but it needs 'bash' (or 'bash-minimal') to do
so.  If "bin/bash" doesn't exist among the 'inputs', then
'search-input-file' (used by 'wrap-all-programs') will raise an
exception.  Address this exception by adding "bash-minimal" to
'host-inputs' when cross-compiling.

This change does not impact native compilation; the derivations
for natively-compiled packages remain identical.

* guix/build-system/qt.scm
  (bash-for-wrappers): New procedure.
  (lower): Add 'bash-minimal' to 'host-inputs' when cross-compiling.
---
 guix/build-system/qt.scm | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/guix/build-system/qt.scm b/guix/build-system/qt.scm
index ccee89d5ef..9fa90baeeb 100644
--- a/guix/build-system/qt.scm
+++ b/guix/build-system/qt.scm
@@ -3,6 +3,7 @@ 
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -63,6 +64,13 @@ 
   (let ((module (resolve-interface '(gnu packages cmake))))
     (module-ref module 'cmake-minimal)))
 
+(define (bash-for-wrappers)
+  "Return the bash package to use for wrappers."
+
+  ;; Do not use `@' to avoid introducing circular dependencies.
+  (let ((module (resolve-interface '(gnu packages bash))))
+    (module-ref module 'bash-minimal)))
+
 ;; This barely is a copy from (guix build-system cmake), only adjusted to use
 ;; the variables defined here.
 (define* (lower name
@@ -91,7 +99,12 @@ 
                           '())
                     ;; Keep the standard inputs of 'gnu-build-system'.
                     ,@(standard-packages)))
-    (host-inputs inputs)
+    ;; Make sure the 'qt-wrap' phase has a cross-compiled bash
+    ;; for wrappers when cross-compiling.
+    (host-inputs `(,@(if target
+                         `(("bash-minimal" ,(bash-for-wrappers)))
+                         '())
+                   ,@inputs))
 
     ;; The cross-libc is really a target package, but for bootstrapping
     ;; reasons, we can't put it in 'host-inputs'.  Namely, 'cross-gcc' is a
-- 
2.32.0