diff mbox series

[bug#42339,core-updates] gnu: glibc-intermediate: Fixup the pre-configure phase.

Message ID 20200712234039.17871-1-kuba@kadziolka.net
State Accepted
Headers show
Series [bug#42339,core-updates] gnu: glibc-intermediate: Fixup the pre-configure phase. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job

Commit Message

Maja Kądziołka July 12, 2020, 11:40 p.m. UTC
* gnu/packages/commencement.scm
  (glibc-final-with-bootstrap-bash)[arguments]: Don't patch sunrpc,
  as it's no longer required. Tweak C_INCLUDE_PATH and
  CPLUS_INCLUDE_PATH instead of CPATH.
---

Hi Guix,

I have stumbled upon this phase while I was working on making substitute
not fail silently. Turns out this substitution is no longer necessary
since we aren't building with --enable-obsolete-rpc anymore. I'm not
sure about the unsetenv parts, though. Switching them to
{C,CPLUS}_INCLUDE_PATH, which is where the header paths actually are
right now, did not change how `guix graph --type=references` looks for
glibc-final (nor glibc-final-with-bootstrap-bash, for that matter).

The phase itself was introduced in...

commit 1c93be5600fb90a64cbbdf7a55061902d2ff150a
Author: Ludovic Courtès <ludo@gnu.org>
Date:   Sat Jun 7 17:23:53 2014 +0200

    gnu: glibc: Make sure the bootstrap libc is not in $CPATH.

    This fixes a bug whereby the bootstrap-glibc headers could be picked up
    when building libc.so, which could be noticed by the fact that the
    .debug files contained references to bootstrap-glibc.

    * gnu/packages/base.scm (glibc-final-with-bootstrap-bash)[arguments]:
      Add 'pre-configure' phase.
      [inputs]: Remove 'alist-delete' call.

The debug output does not refer to a bootstrap glibc anymore whether the phase
is there or not, though it does refer to gcc-cross-boot0:lib. Does this
mean that the phase is simply obsolete, and only the hurd parts should
remain, or is the reference to gcc a bug? Perhaps gcc should have a
separate output for the includes it provides (stdarg and such) so that
this reference doesn't bring in the whole mesboot tree? This would
improve the closure of gcc-toolchain:debug...

Thoughts?

 gnu/packages/commencement.scm | 13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)

Comments

Ludovic Courtès July 22, 2020, 10 p.m. UTC | #1
Hello,

Jakub Kądziołka <kuba@kadziolka.net> skribis:

> * gnu/packages/commencement.scm
>   (glibc-final-with-bootstrap-bash)[arguments]: Don't patch sunrpc,
>   as it's no longer required. Tweak C_INCLUDE_PATH and
>   CPLUS_INCLUDE_PATH instead of CPATH.
> ---
>
> Hi Guix,
>
> I have stumbled upon this phase while I was working on making substitute
> not fail silently. Turns out this substitution is no longer necessary
> since we aren't building with --enable-obsolete-rpc anymore. I'm not
> sure about the unsetenv parts, though. Switching them to
> {C,CPLUS}_INCLUDE_PATH, which is where the header paths actually are
> right now, did not change how `guix graph --type=references` looks for
> glibc-final (nor glibc-final-with-bootstrap-bash, for that matter).
>
> The phase itself was introduced in...
>
> commit 1c93be5600fb90a64cbbdf7a55061902d2ff150a
> Author: Ludovic Courtès <ludo@gnu.org>
> Date:   Sat Jun 7 17:23:53 2014 +0200
>
>     gnu: glibc: Make sure the bootstrap libc is not in $CPATH.
>
>     This fixes a bug whereby the bootstrap-glibc headers could be picked up
>     when building libc.so, which could be noticed by the fact that the
>     .debug files contained references to bootstrap-glibc.
>
>     * gnu/packages/base.scm (glibc-final-with-bootstrap-bash)[arguments]:
>       Add 'pre-configure' phase.
>       [inputs]: Remove 'alist-delete' call.
>
> The debug output does not refer to a bootstrap glibc anymore whether the phase
> is there or not, though it does refer to gcc-cross-boot0:lib. Does this
> mean that the phase is simply obsolete, and only the hurd parts should
> remain, or is the reference to gcc a bug? Perhaps gcc should have a
> separate output for the includes it provides (stdarg and such) so that
> this reference doesn't bring in the whole mesboot tree? This would
> improve the closure of gcc-toolchain:debug...

Oooh, nice.  LGTM!

Please confirm that nothing breaks (everything builds at least up to
‘gcc-final’) and you can push to ‘core-updates’.

Thank you!

Ludo’.
Maja Kądziołka July 22, 2020, 10:37 p.m. UTC | #2
On Thu, Jul 23, 2020 at 12:00:22AM +0200, Ludovic Courtès wrote:
> Hello,
> 
> Jakub Kądziołka <kuba@kadziolka.net> skribis:
> 
> > * gnu/packages/commencement.scm
> >   (glibc-final-with-bootstrap-bash)[arguments]: Don't patch sunrpc,
> >   as it's no longer required. Tweak C_INCLUDE_PATH and
> >   CPLUS_INCLUDE_PATH instead of CPATH.
> > ---
> >
> > Hi Guix,
> >
> > I have stumbled upon this phase while I was working on making substitute
> > not fail silently. Turns out this substitution is no longer necessary
> > since we aren't building with --enable-obsolete-rpc anymore. I'm not
> > sure about the unsetenv parts, though. Switching them to
> > {C,CPLUS}_INCLUDE_PATH, which is where the header paths actually are
> > right now, did not change how `guix graph --type=references` looks for
> > glibc-final (nor glibc-final-with-bootstrap-bash, for that matter).
> >
> > The phase itself was introduced in...
> >
> > commit 1c93be5600fb90a64cbbdf7a55061902d2ff150a
> > Author: Ludovic Courtès <ludo@gnu.org>
> > Date:   Sat Jun 7 17:23:53 2014 +0200
> >
> >     gnu: glibc: Make sure the bootstrap libc is not in $CPATH.
> >
> >     This fixes a bug whereby the bootstrap-glibc headers could be picked up
> >     when building libc.so, which could be noticed by the fact that the
> >     .debug files contained references to bootstrap-glibc.
> >
> >     * gnu/packages/base.scm (glibc-final-with-bootstrap-bash)[arguments]:
> >       Add 'pre-configure' phase.
> >       [inputs]: Remove 'alist-delete' call.
> >
> > The debug output does not refer to a bootstrap glibc anymore whether the phase
> > is there or not, though it does refer to gcc-cross-boot0:lib. Does this
> > mean that the phase is simply obsolete, and only the hurd parts should
> > remain, or is the reference to gcc a bug? Perhaps gcc should have a
> > separate output for the includes it provides (stdarg and such) so that
> > this reference doesn't bring in the whole mesboot tree? This would
> > improve the closure of gcc-toolchain:debug...
> 
> Oooh, nice.  LGTM!

Thanks for your review!

> Please confirm that nothing breaks (everything builds at least up to
> ‘gcc-final’) and you can push to ‘core-updates’.

I have confirmed that hello builds both natively and cross-built. On a
similar topic, the same test succeeded for removing the native-gcc input.
As the comment suggests, it was only being used for --enable-obsolete-rpc.
I am thus considering a v2 that also removes said input. Does that make
sense?

Regards,
Jakub Kądziołka
Ludovic Courtès July 23, 2020, 7:49 a.m. UTC | #3
Hi,

Jakub Kądziołka <kuba@kadziolka.net> skribis:

> On Thu, Jul 23, 2020 at 12:00:22AM +0200, Ludovic Courtès wrote:
>> Hello,
>> 
>> Jakub Kądziołka <kuba@kadziolka.net> skribis:
>> 
>> > * gnu/packages/commencement.scm
>> >   (glibc-final-with-bootstrap-bash)[arguments]: Don't patch sunrpc,
>> >   as it's no longer required. Tweak C_INCLUDE_PATH and
>> >   CPLUS_INCLUDE_PATH instead of CPATH.

[...]

>> > The debug output does not refer to a bootstrap glibc anymore whether the phase
>> > is there or not, though it does refer to gcc-cross-boot0:lib. Does this
>> > mean that the phase is simply obsolete, and only the hurd parts should
>> > remain, or is the reference to gcc a bug? Perhaps gcc should have a
>> > separate output for the includes it provides (stdarg and such) so that
>> > this reference doesn't bring in the whole mesboot tree? This would
>> > improve the closure of gcc-toolchain:debug...
>> 
>> Oooh, nice.  LGTM!
>
> Thanks for your review!
>
>> Please confirm that nothing breaks (everything builds at least up to
>> ‘gcc-final’) and you can push to ‘core-updates’.
>
> I have confirmed that hello builds both natively and cross-built. On a
> similar topic, the same test succeeded for removing the native-gcc input.
> As the comment suggests, it was only being used for --enable-obsolete-rpc.
> I am thus considering a v2 that also removes said input. Does that make
> sense?

Yes it does (again provided nothing breaks).

Thank you!

Ludo’.
Maja Kądziołka July 23, 2020, 10:15 p.m. UTC | #4
On Thu, Jul 23, 2020 at 09:49:17AM +0200, Ludovic Courtès wrote:
> Hi,
> 
> Jakub Kądziołka <kuba@kadziolka.net> skribis:
> 
> > On Thu, Jul 23, 2020 at 12:00:22AM +0200, Ludovic Courtès wrote:
> >> Hello,
> >> 
> >> Jakub Kądziołka <kuba@kadziolka.net> skribis:
> >> 
> >> > * gnu/packages/commencement.scm
> >> >   (glibc-final-with-bootstrap-bash)[arguments]: Don't patch sunrpc,
> >> >   as it's no longer required. Tweak C_INCLUDE_PATH and
> >> >   CPLUS_INCLUDE_PATH instead of CPATH.
> 
> [...]
> 
> >> > The debug output does not refer to a bootstrap glibc anymore whether the phase
> >> > is there or not, though it does refer to gcc-cross-boot0:lib. Does this
> >> > mean that the phase is simply obsolete, and only the hurd parts should
> >> > remain, or is the reference to gcc a bug? Perhaps gcc should have a
> >> > separate output for the includes it provides (stdarg and such) so that
> >> > this reference doesn't bring in the whole mesboot tree? This would
> >> > improve the closure of gcc-toolchain:debug...
> >> 
> >> Oooh, nice.  LGTM!
> >
> > Thanks for your review!
> >
> >> Please confirm that nothing breaks (everything builds at least up to
> >> ‘gcc-final’) and you can push to ‘core-updates’.
> >
> > I have confirmed that hello builds both natively and cross-built. On a
> > similar topic, the same test succeeded for removing the native-gcc input.
> > As the comment suggests, it was only being used for --enable-obsolete-rpc.
> > I am thus considering a v2 that also removes said input. Does that make
> > sense?
> 
> Yes it does (again provided nothing breaks).
> 
> Thank you!

Thanks, patches pushed!
diff mbox series

Patch

diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 1a9c0eaf29..c645ac2589 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -3268,9 +3268,9 @@  memoized as a function of '%current-system'."
             `(modify-phases ,phases
                (add-before 'configure 'pre-configure
                  (lambda* (#:key inputs #:allow-other-keys)
-                   ;; Don't clobber CPATH with the bootstrap libc.
-                   (setenv "NATIVE_CPATH" (getenv "CPATH"))
-                   (unsetenv "CPATH")
+                   ;; Don't clobber include paths with the bootstrap libc.
+                   (unsetenv "C_INCLUDE_PATH")
+                   (unsetenv "CPLUS_INCLUDE_PATH")
 
                    ;; Tell 'libpthread' where to find 'libihash' on Hurd systems.
                    ,@(if (hurd-system?)
@@ -3281,13 +3281,6 @@  memoized as a function of '%current-system'."
                                            (assoc-ref %build-inputs "kernel-headers")
                                            "/lib/libihash.a\n"))))
                        '())
-
-                   ;; 'rpcgen' needs native libc headers to be built.
-                   (substitute* "sunrpc/Makefile"
-                     (("sunrpc-CPPFLAGS =.*" all)
-                      (string-append "CPATH = $(NATIVE_CPATH)\n"
-                                     "export CPATH\n"
-                                     all "\n")))
                    #t)))))))
     (propagated-inputs `(("kernel-headers" ,(kernel-headers-boot0))))
     (native-inputs