unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#24069: gcc man page is broken
@ 2016-07-25 20:23 Danny Milosavljevic
  2017-03-30 22:22 ` Branson, Joshua A
  0 siblings, 1 reply; 11+ messages in thread
From: Danny Milosavljevic @ 2016-07-25 20:23 UTC (permalink / raw)
  To: 24069

$ man gcc

timestamp

 Manual page gcc(1) line 1/2 (END) (press h for help or q to quit)

$ ls -l /home/dannym/.guix-profile/share/man/man1/gcc.1.gz
lrwxrwxrwx 106 root guixbuild 79  1. Jan 1970  /home/dannym/.guix-profile/share/man/man1/gcc.1.gz -> /gnu/store/1xsd8qd6i0zkzwxa53rp5palcfxb7xqb-gccgo-4.9.3/share/man/man1/gcc.1.gz


Err.... what?

That's also the case for the normal gcc package (for example 4.9.3).

But

$ info gcc

works fine.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#24069: gcc man page is broken
  2016-07-25 20:23 bug#24069: gcc man page is broken Danny Milosavljevic
@ 2017-03-30 22:22 ` Branson, Joshua A
  2017-09-30 20:36   ` Maxim Cournoyer
  0 siblings, 1 reply; 11+ messages in thread
From: Branson, Joshua A @ 2017-03-30 22:22 UTC (permalink / raw)
  To: 24069@debbugs.gnu.org

I can confirm that this bug still exists.  The man page is broken as described, but info gcc works just fine.

Thanks,

Joshua

^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#24069: gcc man page is broken
  2017-03-30 22:22 ` Branson, Joshua A
@ 2017-09-30 20:36   ` Maxim Cournoyer
  2017-10-01 13:39     ` bug#24069: [PATCH] " Maxim Cournoyer
  0 siblings, 1 reply; 11+ messages in thread
From: Maxim Cournoyer @ 2017-09-30 20:36 UTC (permalink / raw)
  To: Branson, Joshua A; +Cc: 24069@debbugs.gnu.org

"Branson, Joshua A" <jbranso@purdue.edu> writes:

> I can confirm that this bug still exists.  The man page is broken as described, but info gcc works just fine.
>
> Thanks,
>
> Joshua

The problem is likely caused by lack of the lack of perl as well as pod2man, as
suggested by gcc's build log:

--8<---------------cut here---------------start------------->8---
echo timestamp > gcc.pod
perl ../../gcc-7.2.0/gcc/../contrib/texi2pod.pl ../../gcc-7.2.0/gcc/doc/invoke.texi > gcc.pod
/gnu/store/kpxi8h3669afr9r1bgvaf9ij3y4wdyyn-bash-minimal-4.4.12/bin/bash: perl: command not found
make[2]: [Makefile:3257: gcc.pod] Error 127 (ignored)
echo timestamp > doc/gcc.1
(pod2man --center="GNU" --release="gcc-7.2.0" --date=2017-08-14 --section=1 gcc.pod > doc/gcc.1.T$$ && \
	mv -f doc/gcc.1.T$$ doc/gcc.1) || \
	(rm -f doc/gcc.1.T$$ && exit 1)
/gnu/store/kpxi8h3669afr9r1bgvaf9ij3y4wdyyn-bash-minimal-4.4.12/bin/bash: pod2man: command not found
make[2]: [Makefile:3235: doc/gcc.1] Error 1 (ignored)
--8<---------------cut here---------------end--------------->8---

I'm currently rebuilding with those two inputs added, will send a patch
if it fixes the problem.

Maxim

^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#24069: [PATCH] Re: bug#24069: gcc man page is broken
  2017-09-30 20:36   ` Maxim Cournoyer
@ 2017-10-01 13:39     ` Maxim Cournoyer
  2017-10-01 15:54       ` bug#24069: [PATCHv2] " Maxim Cournoyer
  0 siblings, 1 reply; 11+ messages in thread
From: Maxim Cournoyer @ 2017-10-01 13:39 UTC (permalink / raw)
  To: Branson, Joshua A; +Cc: 24069

[-- Attachment #1: Type: text/plain, Size: 1251 bytes --]

Hello,

Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

> "Branson, Joshua A" <jbranso@purdue.edu> writes:
>
>> I can confirm that this bug still exists.  The man page is broken as described, but info gcc works just fine.
>>
>> Thanks,
>>
>> Joshua
>
> The problem is likely caused by lack of the lack of perl as well as pod2man, as
> suggested by gcc's build log:
>
> echo timestamp > gcc.pod
> perl ../../gcc-7.2.0/gcc/../contrib/texi2pod.pl ../../gcc-7.2.0/gcc/doc/invoke.texi > gcc.pod
> /gnu/store/kpxi8h3669afr9r1bgvaf9ij3y4wdyyn-bash-minimal-4.4.12/bin/bash: perl: command not found
> make[2]: [Makefile:3257: gcc.pod] Error 127 (ignored)
> echo timestamp > doc/gcc.1
> (pod2man --center="GNU" --release="gcc-7.2.0" --date=2017-08-14 --section=1 gcc.pod > doc/gcc.1.T$$ && \
> 	mv -f doc/gcc.1.T$$ doc/gcc.1) || \
> 	(rm -f doc/gcc.1.T$$ && exit 1)
> /gnu/store/kpxi8h3669afr9r1bgvaf9ij3y4wdyyn-bash-minimal-4.4.12/bin/bash: pod2man: command not found
> make[2]: [Makefile:3235: doc/gcc.1] Error 1 (ignored)
>
> I'm currently rebuilding with those two inputs added, will send a patch
> if it fixes the problem.

I believe the attached patch *should* fix it (simply adds perl as a native
input; pod2man apparently comes with perl itself):


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-gcc-Fix-manual-pages.patch --]
[-- Type: text/x-patch, Size: 1832 bytes --]

From 17105632d2142c16632c5f05490a7da9a4439cc4 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
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/gcc.scm | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 7870d4513..f56c2a0b9 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -42,6 +42,7 @@
   #:use-module (guix build-system trivial)
   #:use-module (guix utils)
   #:use-module (srfi srfi-1)
+  #:use-module (ice-9 match)
   #:use-module (ice-9 regex))
 
 (define %gcc-infrastructure
@@ -155,7 +156,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 +372,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


[-- Attachment #3: Type: text/plain, Size: 864 bytes --]


I haven't been able to test it though; when attempting to rebuild gcc, I
get a stack overflow before the build process even starts (seems like a
guix problem -- I'll try to git pull & rebuild):

--8<---------------cut here---------------start------------->8---
./pre-inst-env guix build -K gcc
allocate_stack failed: Cannot allocate memory
Warning: Unwind-only `stack-overflow' exception; skipping pre-unwind handler.
allocate_stack failed: Cannot allocate memory
Warning: Unwind-only `stack-overflow' exception; skipping pre-unwind handler.
allocate_stack failed: Cannot allocate memory
Warning: Unwind-only `stack-overflow' exception; skipping pre-unwind handler.
allocate_stack failed: Cannot allocate memory
Warning: Unwind-only `stack-overflow' exception; skipping pre-unwind handler.
--8<---------------cut here---------------end--------------->8---

Maxim

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* bug#24069: [PATCHv2] Re: bug#24069: gcc man page is broken
  2017-10-01 13:39     ` bug#24069: [PATCH] " Maxim Cournoyer
@ 2017-10-01 15:54       ` Maxim Cournoyer
  2017-10-02  9:24         ` Efraim Flashner
  0 siblings, 1 reply; 11+ messages in thread
From: Maxim Cournoyer @ 2017-10-01 15:54 UTC (permalink / raw)
  To: 24069

[-- Attachment #1: Type: text/plain, Size: 91 bytes --]

Version 2.

Removes the unnecessary (ice-9 match) use clause I added while
experimenting.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-gcc-Fix-manual-pages.patch --]
[-- Type: text/x-patch, Size: 1618 bytes --]

From a044901c0fc51571b8ed6809080029b8701b09e4 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
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/gcc.scm | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

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


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* bug#24069: [PATCHv2] Re: bug#24069: gcc man page is broken
  2017-10-01 15:54       ` bug#24069: [PATCHv2] " Maxim Cournoyer
@ 2017-10-02  9:24         ` Efraim Flashner
  2017-10-02 14:53           ` Ludovic Courtès
  0 siblings, 1 reply; 11+ messages in thread
From: Efraim Flashner @ 2017-10-02  9:24 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 24069

[-- Attachment #1: Type: text/plain, Size: 2827 bytes --]

On Sun, Oct 01, 2017 at 11:54:56AM -0400, Maxim Cournoyer wrote:
> Version 2.
> 
> Removes the unnecessary (ice-9 match) use clause I added while
> experimenting.
> 

> From a044901c0fc51571b8ed6809080029b8701b09e4 Mon Sep 17 00:00:00 2001
> From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
> 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/gcc.scm | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> 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
> 

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 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.


-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#24069: [PATCHv2] Re: bug#24069: gcc man page is broken
  2017-10-02  9:24         ` Efraim Flashner
@ 2017-10-02 14:53           ` Ludovic Courtès
  2017-10-02 20:15             ` Maxim Cournoyer
  0 siblings, 1 reply; 11+ messages in thread
From: Ludovic Courtès @ 2017-10-02 14:53 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: 24069, Maxim Cournoyer

Efraim Flashner <efraim@flashner.co.il> 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’.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#24069: [PATCHv2] Re: bug#24069: gcc man page is broken
  2017-10-02 14:53           ` Ludovic Courtès
@ 2017-10-02 20:15             ` Maxim Cournoyer
  2017-10-03  2:28               ` bug#24069: [PATCHv3] " Maxim Cournoyer
  0 siblings, 1 reply; 11+ messages in thread
From: Maxim Cournoyer @ 2017-10-02 20:15 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 24069

[-- Attachment #1: Type: text/plain, Size: 1720 bytes --]

Hello,

ludo@gnu.org (Ludovic Courtès) writes:

> Efraim Flashner <efraim@flashner.co.il> 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!


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-gcc-Fix-manual-pages.patch --]
[-- Type: text/x-patch, Size: 2971 bytes --]

From fac707c34dcc04fcac7254a724cd4c45ae384400 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
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


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* bug#24069: [PATCHv3] Re: bug#24069: gcc man page is broken
  2017-10-02 20:15             ` Maxim Cournoyer
@ 2017-10-03  2:28               ` Maxim Cournoyer
  2017-10-03 23:44                 ` bug#24069: [PATCHv4] " Maxim Cournoyer
  0 siblings, 1 reply; 11+ messages in thread
From: Maxim Cournoyer @ 2017-10-03  2:28 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 24069

Patch v3 still doesn't fix the problem. There are now pod2man errors
that prevent correctly generating the man pages:

--8<---------------cut here---------------start------------->8---
Makefile:3076: update target 'gcc.pod' due to: ../../gcc-5.4.0/gcc/doc/invoke.texi ../../gcc-5.4.0/gcc/doc/cppenv.texi ../../gcc-5.4.0/gcc/doc/cppopts.texi gcc-vers.texi
echo timestamp > gcc.pod
perl ../../gcc-5.4.0/gcc/../contrib/texi2pod.pl ../../gcc-5.4.0/gcc/doc/invoke.texi > gcc.pod
Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/^\@strong{ <-- HERE (.*)}$/ at ../../gcc-5.4.0/gcc/../contrib/texi2pod.pl line 319.
make: [Makefile:3077: gcc.pod] Error 255 (ignored)
Makefile:3054: update target 'doc/gcc.1' due to: gcc.pod
echo timestamp > doc/gcc.1
(pod2man --center="GNU" --release="gcc-5.4.0" --date=2016-06-03 --section=1 gcc.pod > doc/gcc.1.T$$ && \
        mv -f doc/gcc.1.T$$ doc/gcc.1) || \
        (rm -f doc/gcc.1.T$$ && exit 1)
pod2man: unable to format gcc.pod
make: [Makefile:3055: doc/gcc.1] Error 1 (ignored)
Makefile:3085: update target 'gpl.pod' due to: ../../gcc-5.4.0/gcc/doc/include/gpl_v3.texi
echo timestamp > gpl.pod
perl ../../gcc-5.4.0/gcc/../contrib/texi2pod.pl ../../gcc-5.4.0/gcc/doc/include/gpl_v3.texi > gpl.pod
Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/^\@strong{ <-- HERE (.*)}$/ at ../../gcc-5.4.0/gcc/../contrib/texi2pod.pl line 319.
make: [Makefile:3086: gpl.pod] Error 255 (ignored)
Makefile:3060: update target 'doc/gpl.7' due to: gpl.pod
echo timestamp > doc/gpl.7
(pod2man --center="GNU" --release="gcc-5.4.0" --date=2016-06-03 --section=7 gpl.pod > doc/gpl.7.T$$ && \
        mv -f doc/gpl.7.T$$ doc/gpl.7) || \
        (rm -f doc/gpl.7.T$$ && exit 1)
pod2man: unable to format gpl.pod
make: [Makefile:3061: doc/gpl.7] Error 1 (ignored)
../../gcc-5.4.0/gcc/cp/Make-lang.in:189: update target 'doc/g++.1' due to: doc/gcc.1
cp doc/gcc.1 doc/g++.1
rm gcc.pod
make: Leaving directory '/tmp/guix-build-gcc-5.4.0.drv-0/build/gcc'
--8<---------------cut here---------------end--------------->8---

I could trigger this output by cd'ing into the failed derivation and
running:

--8<---------------cut here---------------start------------->8---
cd /tmp/guix-build-gcc-5.4.0.drv-0
# running guix environment from stable guix pull, so need to add perl manually
guix environment --no-grafts gcc@5.4.0 --ad-hoc perl
make configure-gcc && make --trace -C gcc doc
--8<---------------cut here---------------end--------------->8---

Continuing investigation...

^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#24069: [PATCHv4] Re: bug#24069: gcc man page is broken
  2017-10-03  2:28               ` bug#24069: [PATCHv3] " Maxim Cournoyer
@ 2017-10-03 23:44                 ` Maxim Cournoyer
  2017-10-31 15:16                   ` Ludovic Courtès
  0 siblings, 1 reply; 11+ messages in thread
From: Maxim Cournoyer @ 2017-10-03 23:44 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 24069

[-- Attachment #1: Type: text/plain, Size: 4329 bytes --]

Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

> Patch v3 still doesn't fix the problem. There are now pod2man errors
> that prevent correctly generating the man pages:
[...]
> (pod2man --center="GNU" --release="gcc-5.4.0" --date=2016-06-03 --section=7 gpl.pod > doc/gpl.7.T$$ && \
>         mv -f doc/gpl.7.T$$ doc/gpl.7) || \
>         (rm -f doc/gpl.7.T$$ && exit 1)
> pod2man: unable to format gpl.pod
> make: [Makefile:3061: doc/gpl.7] Error 1 (ignored)
> ../../gcc-5.4.0/gcc/cp/Make-lang.in:189: update target 'doc/g++.1' due to: doc/gcc.1
> cp doc/gcc.1 doc/g++.1
> rm gcc.pod
> make: Leaving directory '/tmp/guix-build-gcc-5.4.0.drv-0/build/gcc'
>

Apparently GCC < 6 required a patch to its texi2pod.pl script, which had
a syntax problem. The attached patch fixes this last problem. I could
successfully build GCC 5.4.0 by using a derived package for testing
(otherwise it would trigger a world rebuild which was never ending of my
lesser machine).

Here's the patch used to test it:

--8<---------------cut here---------------start------------->8---
 gnu/packages/gcc.scm                        | 21 +++++++++++++++++++++
 gnu/packages/patches/gcc-fix-texi2pod.patch | 19 +++++++++++++++++++
 2 files changed, 40 insertions(+)
 create mode 100644 gnu/packages/patches/gcc-fix-texi2pod.patch

diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 7870d4513..320201b9c 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -395,6 +395,27 @@ Go.  It also includes runtime support libraries for these languages.")
     ;; `(("isl" ,isl)
     ;;   ,@(package-inputs gcc-4.7)))))
 
+(define-public gcc-5-dev
+  (package (inherit gcc-5)
+    (name "gcc-dev")
+    (version "5.4.0-dev")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/gcc/gcc-"
+                                  version "/gcc-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0fihlcy5hnksdxk0sn6bvgnyq8gfrgs8m794b1jxwd1dxinzg3b0"))
+              (patches (search-patches "gcc-arm-bug-71399.patch"
+                                       "gcc-strmov-store-file-names.patch"
+                                       "gcc-asan-powerpc-missing-include.patch"
+                                       "gcc-5.0-libvtv-runpath.patch"
+                                       "gcc-5-source-date-epoch-1.patch"
+                                       "gcc-5-source-date-epoch-2.patch"
+                                       "gcc-fix-texi2pod.patch"))))
+    (native-inputs `(("perl" ,perl)   ;for manpages
+                     ("texinfo" ,texinfo)))))
+
 (define-public gcc-6
   (package
     (inherit gcc-5)
diff --git a/gnu/packages/patches/gcc-fix-texi2pod.patch b/gnu/packages/patches/gcc-fix-texi2pod.patch
new file mode 100644
index 000000000..28bd56a38
--- /dev/null
+++ b/gnu/packages/patches/gcc-fix-texi2pod.patch
@@ -0,0 +1,19 @@
+This patch was taken from the official GCC git repository.
+X-Git-Url: https://gcc.gnu.org/git/?p=gcc.git;a=blobdiff_plain;f=contrib%2Ftexi2pod.pl;h=91bdbb5cea933d0381f2924ab94490fca31d5800;hp=eba1bcaa3cffa78b46030b219d04fe7d68367658;hb=67b56c905078d49d3e4028085e5cb1e1fb87a8aa;hpb=2f508a78310caab123e9794d3dcfe41f2769449b
+
+It fixes a defect in the contrib/texi2pod.pl script that prevented generating
+manual pages. It was corrected in the GCC 6.X series.
+
+diff --git a/contrib/texi2pod.pl b/contrib/texi2pod.pl
+index eba1bca..91bdbb5 100755
+--- a/contrib/texi2pod.pl
++++ b/contrib/texi2pod.pl
+@@ -316,7 +316,7 @@ while(<$inf>) {
+ 	@columns = ();
+ 	for $column (split (/\s*\@tab\s*/, $1)) {
+ 	    # @strong{...} is used a @headitem work-alike
+-	    $column =~ s/^\@strong{(.*)}$/$1/;
++	    $column =~ s/^\@strong\{(.*)\}$/$1/;
+ 	    push @columns, $column;
+ 	}
+ 	$_ = "\n=item ".join (" : ", @columns)."\n";
--8<---------------cut here---------------end--------------->8---

I could then build gcc-dev and verify that the man pages gcc and cpp
were working correctly in an environment instantiated using:

--8<---------------cut here---------------start------------->8---
./pre-inst-env guix environment --pure --ad-hoc gcc-dev man-db
--8<---------------cut here---------------end--------------->8---

The complete patch is attached; it should be good for core-updates.

Thank you,

Maxim


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-gcc-Fix-manual-pages.patch --]
[-- Type: text/x-patch, Size: 7045 bytes --]

From 7229d7887289316031847893f8ad020ff07bdcdd Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Sun, 1 Oct 2017 09:27:31 -0400
Subject: [PATCH] gnu: gcc: Fix manual pages.

Fixes bug #24069. perl is made a native input to all of the gcc-* packages
except for gcc-boot0; perl-boot0 is made a native input to gcc-final.

* gnu/packages/patches/gcc-fix-texi2pod.patch: Add patch file to fix texi2pod.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/gcc.scm (gcc-4.7, gcc-4.8, gcc-4.9, gcc-5): Use it.
(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/local.mk                                |  1 +
 gnu/packages/commencement.scm               |  9 ++++++---
 gnu/packages/gcc.scm                        | 19 +++++++++++++------
 gnu/packages/patches/gcc-fix-texi2pod.patch | 19 +++++++++++++++++++
 4 files changed, 39 insertions(+), 9 deletions(-)
 create mode 100644 gnu/packages/patches/gcc-fix-texi2pod.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index edd6d8237..06b059341 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -626,6 +626,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/gcc-arm-link-spec-fix.patch		\
   %D%/packages/patches/gcc-asan-powerpc-missing-include.patch	\
   %D%/packages/patches/gcc-cross-environment-variables.patch	\
+  %D%/packages/patches/gcc-fix-texi2pod.patch			\
   %D%/packages/patches/gcc-libvtv-runpath.patch			\
   %D%/packages/patches/gcc-strmov-store-file-names.patch	\
   %D%/packages/patches/gcc-4.6-gnu-inline.patch			\
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..1079a3e14 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -138,7 +138,8 @@ where the OS part is overloaded to denote a specific ABI---into GCC
                                    version "/gcc-" version ".tar.bz2"))
                (sha256
                 (base32
-                 "10k2k71kxgay283ylbbhhs51cl55zn2q38vj5pk4k950qdnirrlj"))))
+                 "10k2k71kxgay283ylbbhhs51cl55zn2q38vj5pk4k950qdnirrlj"))
+               (patches (search-patches "gcc-fix-texi2pod.patch"))))
       (build-system gnu-build-system)
 
       ;; Separate out the run-time support libraries because all the
@@ -155,7 +156,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
@@ -351,7 +353,8 @@ Go.  It also includes runtime support libraries for these languages.")
               (sha256
                (base32
                 "08yggr18v373a1ihj0rg2vd6psnic42b518xcgp3r9k81xz1xyr2"))
-              (patches (search-patches "gcc-arm-link-spec-fix.patch"))))
+              (patches (search-patches "gcc-arm-link-spec-fix.patch"
+                                       "gcc-fix-texi2pod.patch"))))
     (supported-systems %supported-systems)
     (inputs
      `(("isl" ,isl-0.11)
@@ -369,8 +372,11 @@ Go.  It also includes runtime support libraries for these languages.")
                (base32
                 "14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc"))
               (patches (search-patches "gcc-arm-bug-71399.patch"
-                                       "gcc-libvtv-runpath.patch"))))
-    (native-inputs `(("texinfo" ,texinfo)))))
+                                       "gcc-libvtv-runpath.patch"
+                                       "gcc-fix-texi2pod.patch"))))
+    ;; 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
@@ -389,7 +395,8 @@ Go.  It also includes runtime support libraries for these languages.")
                                        "gcc-asan-powerpc-missing-include.patch"
                                        "gcc-5.0-libvtv-runpath.patch"
                                        "gcc-5-source-date-epoch-1.patch"
-                                       "gcc-5-source-date-epoch-2.patch"))))))
+                                       "gcc-5-source-date-epoch-2.patch"
+                                       "gcc-fix-texi2pod.patch"))))))
     ;; TODO: gcc-5 doesn't need cloog.
     ;;(inputs
     ;; `(("isl" ,isl)
diff --git a/gnu/packages/patches/gcc-fix-texi2pod.patch b/gnu/packages/patches/gcc-fix-texi2pod.patch
new file mode 100644
index 000000000..28bd56a38
--- /dev/null
+++ b/gnu/packages/patches/gcc-fix-texi2pod.patch
@@ -0,0 +1,19 @@
+This patch was taken from the official GCC git repository.
+X-Git-Url: https://gcc.gnu.org/git/?p=gcc.git;a=blobdiff_plain;f=contrib%2Ftexi2pod.pl;h=91bdbb5cea933d0381f2924ab94490fca31d5800;hp=eba1bcaa3cffa78b46030b219d04fe7d68367658;hb=67b56c905078d49d3e4028085e5cb1e1fb87a8aa;hpb=2f508a78310caab123e9794d3dcfe41f2769449b
+
+It fixes a defect in the contrib/texi2pod.pl script that prevented generating
+manual pages. It was corrected in the GCC 6.X series.
+
+diff --git a/contrib/texi2pod.pl b/contrib/texi2pod.pl
+index eba1bca..91bdbb5 100755
+--- a/contrib/texi2pod.pl
++++ b/contrib/texi2pod.pl
+@@ -316,7 +316,7 @@ while(<$inf>) {
+ 	@columns = ();
+ 	for $column (split (/\s*\@tab\s*/, $1)) {
+ 	    # @strong{...} is used a @headitem work-alike
+-	    $column =~ s/^\@strong{(.*)}$/$1/;
++	    $column =~ s/^\@strong\{(.*)\}$/$1/;
+ 	    push @columns, $column;
+ 	}
+ 	$_ = "\n=item ".join (" : ", @columns)."\n";
-- 
2.14.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* bug#24069: [PATCHv4] Re: bug#24069: gcc man page is broken
  2017-10-03 23:44                 ` bug#24069: [PATCHv4] " Maxim Cournoyer
@ 2017-10-31 15:16                   ` Ludovic Courtès
  0 siblings, 0 replies; 11+ messages in thread
From: Ludovic Courtès @ 2017-10-31 15:16 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 24069-done

Hi!

Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:

>From 7229d7887289316031847893f8ad020ff07bdcdd Mon Sep 17 00:00:00 2001
> From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
> Date: Sun, 1 Oct 2017 09:27:31 -0400
> Subject: [PATCH] gnu: gcc: Fix manual pages.
>
> Fixes bug #24069. perl is made a native input to all of the gcc-* packages
> except for gcc-boot0; perl-boot0 is made a native input to gcc-final.
>
> * gnu/packages/patches/gcc-fix-texi2pod.patch: Add patch file to fix texi2pod.
> * gnu/local.mk (dist_patch_DATA): Register it.
> * gnu/packages/gcc.scm (gcc-4.7, gcc-4.8, gcc-4.9, gcc-5): Use it.
> (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.

Efraim pushed the patch as 19d27131968355a1da962e52163df51e0e03aba1 so I
think we’re all set.  Thank you!

The definition of ‘gcc-final’ in (gnu packages commencement) has an
explicit #:allowed-references white list, so we can be sure it won’t
retain a reference to Perl.

Ludo’.

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2017-10-31 15:17 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-25 20:23 bug#24069: gcc man page is broken Danny Milosavljevic
2017-03-30 22:22 ` Branson, Joshua A
2017-09-30 20:36   ` Maxim Cournoyer
2017-10-01 13:39     ` bug#24069: [PATCH] " Maxim Cournoyer
2017-10-01 15:54       ` bug#24069: [PATCHv2] " Maxim Cournoyer
2017-10-02  9:24         ` Efraim Flashner
2017-10-02 14:53           ` Ludovic Courtès
2017-10-02 20:15             ` Maxim Cournoyer
2017-10-03  2:28               ` bug#24069: [PATCHv3] " Maxim Cournoyer
2017-10-03 23:44                 ` bug#24069: [PATCHv4] " Maxim Cournoyer
2017-10-31 15:16                   ` Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).