Opened 6 years ago

Last modified 22 months ago

#45269 new defect

crossbinutils @ 1.0 0-byte manpages

Reported by: japanesecake (mmallet) Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version: 2.3.1
Keywords: Cc: japanesecake (mmallet), cooljeanius (Eric Gallager), mojca (Mojca Miklavec)
Port: arm-elf-binutils

Description

I am about to submit my first ports but I've noticed that for one of them, a cross build of binutils, the manpages are 0-bytes files (few bytes when their got gzipped).

ll /opt/local/share/man/man1/arm-elf-*
-r--r--r--+ 1 root  admin    40B Nov 19  2013 /opt/local/share/man/man1/arm-elf-addr2line.1.gz
-r--r--r--+ 1 root  admin    33B Nov 19  2013 /opt/local/share/man/man1/arm-elf-ar.1.gz
-r--r--r--+ 1 root  admin    33B Nov 19  2013 /opt/local/share/man/man1/arm-elf-as.1.gz
-r--r--r--+ 1 root  admin    38B Nov 19  2013 /opt/local/share/man/man1/arm-elf-c++filt.1.gz
...

In the port's build directory, when I look at the manpages file size, I get the following (sh-elf-binutils is the port I am working on, ):

/opt/local/var/macports/build/_devel_ports_cross_sh-elf-binutils/sh-elf-binutils/work$ find . -iname "*.1" | xargs ls -ali
15648159 -rw-r--r--+ 1 macports  wheel   10470 Mar 25  2013 ./binutils-2.23.2/binutils/doc/addr2line.1
15648160 -rw-r--r--+ 1 macports  wheel   18478 Mar 25  2013 ./binutils-2.23.2/binutils/doc/ar.1
...
15667876 -rw-r--r--+ 1 macports  wheel       0 Oct  6 19:44 ./build/binutils/doc/addr2line.1
15667877 -rw-r--r--+ 1 macports  wheel       0 Oct  6 19:44 ./build/binutils/doc/ar.1
...

It seems that there is something wrong when copying the manpages. Can someone point me out the thing that I may had not done correctly? (before I submit a fix I would rather be sure I just do not miss an option)

By building binutils manually, I get manpages installed correctly though.

How to reproduce:

sudo port install arm-elf-binutils
man arm-elf-ar
fgets: No such file or directory
Error reading man page /opt/local/share/man/man1/arm-elf-ar.1.gz
No manual entry for arm-elf-ar

Attachments (1)

arm-elf-binutils-main.log (829.7 KB) - added by japanesecake (mmallet) 6 years ago.

Download all attachments as: .zip

Change History (9)

comment:1 Changed 6 years ago by ryandesign (Ryan Schmidt)

Could you attach the main.log file? It's normally deleted after a build, so please rebuild with the -k flag to keep it:

sudo port -f uninstall arm-elf-binutils
sudo port clean arm-elf-binutils
sudo port -ks install arm-elf-binutils

Then attach the file at:

port logfile arm-elf-binutils

Changed 6 years ago by japanesecake (mmallet)

Attachment: arm-elf-binutils-main.log added

comment:2 Changed 6 years ago by japanesecake (mmallet)

Cc: matthieu.mallet@… added

Cc Me!

comment:3 Changed 6 years ago by japanesecake (mmallet)

I use this as a fix but maybe there is a better way around:

post-destroot {
  # Fix manpages
  set binutilsman ${worksrcpath}/binutils/doc
  set mandir ${prefix}/share/man/man1
  foreach manpage [glob -tails -directory ${binutilsman} *.1] {
    system "cp ${binutilsman}/${manpage} ${binutilsman}/${crossbinutils.target}-${manpage}"
    xinstall -m 644 ${binutilsman}/${crossbinutils.target}-${manpage} \
             ${destroot}${mandir}
  }
}

comment:4 Changed 6 years ago by cooljeanius (Eric Gallager)

Cc: egall@… added

Cc Me!

comment:5 Changed 6 years ago by japanesecake (mmallet)

Well, I found out what is wrong. In the "crossbinutils-1.0.tcl" script, the post-extract phase deletes the "etc" directory which contains the tex2pod script:

post-extract {
        delete ${worksrcpath}/etc
        file mkdir ${workpath}/build
    }

If I comment out the "delete ${worksrcpath}/etc" line I get my man pages generated. Does anyone know why we remove this etc directory?

comment:6 in reply to:  5 Changed 6 years ago by cooljeanius (Eric Gallager)

Replying to matthieu.mallet@…:

Well, I found out what is wrong. In the "crossbinutils-1.0.tcl" script, the post-extract phase deletes the "etc" directory which contains the tex2pod script:

post-extract {
        delete ${worksrcpath}/etc
        file mkdir ${workpath}/build
    }

If I comment out the "delete ${worksrcpath}/etc" line I get my man pages generated. Does anyone know why we remove this etc directory?

I am guessing it was because the stuff in it is included in a bunch of other GNU packages as well, so leaving them there could lead to conflicts... I suppose if conflicts are the issue, though, it would make more sense to wait until the destroot phase to remove them, and to only get rid of the specific things that conflict instead of the entire directory...

Last edited 6 years ago by cooljeanius (Eric Gallager) (previous) (diff)

comment:7 Changed 4 years ago by mf2k (Frank Schima)

Keywords: crossbuild binutils removed

comment:8 Changed 22 months ago by mojca (Mojca Miklavec)

Cc: mojca added
Note: See TracTickets for help on using tickets.