Subject: bug#24069: [PATCHv2] Re: bug#24069: gcc man page is broken

From: Maxim Cournoyer <[email-masked]>
Date: Mon, 02 Oct 2017 16:15:10 -0400

Hello,

[email-masked] (Ludovic Courtès) writes:

> Efraim Flashner <[email-masked]> skribis:
>
>> I believe this would cause gcc-5 to be rebuilt, which would cause a
>> world rebuild, so for the moment we also need a native-inputs entry for
>> gcc-5 making sure that nothing changes, ie: that we're only using
>> texinfo there, preferably with a note that it should be changed in the
>> future.  Also, you should take a look at gnu/packages/commencement and
>> make sure that we're not adding perl as a native-input for gcc-boot0 or
>> for libstdc++, wherever that happens to live (I don't remember off
>> hand).
>
> I think this should go to ‘core-updates’.
>
>> I assume it is OK for us to build the man pages for gcc-final (if it
>> happens) since this is the gcc used for actually building packages, and
>> I believe the one pulled in for gcc-toolchain.
>
> More precisely, building man pages for ‘gcc-boot0’ is pointless and
> possibly adds Perl on the graph for no good reason.  So if we can
> arrange to just have man pages in ‘gcc-final’, we’re good.
>
> Efraim, could you check whether that works for ‘core-updates’?
>
> Thanks,
> Ludo’.

I believe this is what is accomplished by the attached patch v3. Thanks
to Efraim for the points raised. It turned out that the stack overflow I
was getting attempting to test the previous version was caused by a
circular dependency that was introduced by gcc-boot0 inheriting
perl. This is now fixed.

I spent the last couple hours rebuilding gcc but it failed due to lack
of space on my side... Retrying now but it'll take a few hours before I
can confirm that it works as intended.

Thank you both!

>From fac707c34dcc04fcac7254a724cd4c45ae384400 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <[email-masked]>
Date: Sun, 1 Oct 2017 09:27:31 -0400
Subject: [PATCH] gnu: gcc: Fix manual pages.

Fixes bug #24069.

* gnu/packages/gcc.scm (gcc-4.7)[native-inputs]: Add perl.
(gcc-4.9)[native-inputs]: Likewise.
* gnu/packages/commencement.scm (gcc-boot0)[native-inputs]: Filter out perl.
(gcc-final)[native-inputs]: Add perl-boot0.
---
 gnu/packages/commencement.scm | 9 ++++++---
 gnu/packages/gcc.scm          | 7 +++++--
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index ec7677814..194feda0a 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -286,9 +286,11 @@
                ("libc-native" ,@(assoc-ref %boot0-inputs "libc"))
                ,@(alist-delete "libc" %boot0-inputs)))
 
-     ;; No need for Texinfo at this stage.
-     (native-inputs (alist-delete "texinfo"
-                                  (package-native-inputs gcc))))))
+     ;; No need for the documentation native-inputs at this stage.
+     (native-inputs
+      (alist-delete "texinfo"
+                    (alist-delete "perl"
+                                  (package-native-inputs gcc)))))))
 
 (define perl-boot0
   (let ((perl (package
@@ -779,6 +781,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
     ;; scripts such as 'mkheaders' and 'fixinc.sh' (XXX: who cares about these
     ;; scripts?).
     (native-inputs `(("texinfo" ,texinfo-boot0)
+                     ("perl" ,perl-boot0) ;for manpages
                      ("static-bash" ,static-bash-for-glibc)
                      ,@(package-native-inputs gcc-boot0)))
 
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 7870d4513..7089b420f 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -155,7 +155,8 @@ where the OS part is overloaded to denote a specific ABI---into GCC
 
       ;; GCC < 5 is one of the few packages that doesn't ship .info files.
       ;; Newer texinfos fail to build the manual, so we use an older one.
-      (native-inputs `(("texinfo" ,texinfo-5)))
+      (native-inputs `(("perl" ,perl)   ;for manpages
+                       ("texinfo" ,texinfo-5)))
 
       (arguments
        `(#:out-of-source? #t
@@ -370,7 +371,9 @@ Go.  It also includes runtime support libraries for these languages.")
                 "14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc"))
               (patches (search-patches "gcc-arm-bug-71399.patch"
                                        "gcc-libvtv-runpath.patch"))))
-    (native-inputs `(("texinfo" ,texinfo)))))
+    ;; Override inherited texinfo-5 with latest version.
+    (native-inputs `(("perl" ,perl)   ;for manpages
+                     ("texinfo" ,texinfo)))))
 
 (define-public gcc-5
   ;; Note: GCC >= 5 ships with .info files but 'make install' fails to install
-- 
2.14.1