Opened 9 years ago

Closed 8 years ago

#48034 closed defect (fixed)

po4a @0.45 (textproc) Undefined subroutine - build failure

Reported by: composr@… Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: mojca (Mojca Miklavec), dbevans (David B. Evans)
Port: po4a

Description

Starting from a completely clean port install:

  • Yosemite 10.10.3
  • xcode-select 2339
  1. Running sudo port -v install po4a starts install
  2. All dependencies correctly download and build
  3. po4a correctly downloads
  4. Build fails with output:
Undefined subroutine &PerlIO::F_UTF8 called at /opt/local/lib/perl5/vendor_perl/5.16.3/Pod/Man.pm line 775.
	...propagated at Po4aBuilder.pm line 267.

I've also tried directly downloading the source tarball and building manually with the same error.

Attaching full log below.

Attachments (1)

main.log (62.5 KB) - added by composr@… 9 years ago.
Port build log output

Download all attachments as: .zip

Change History (10)

Changed 9 years ago by composr@…

Attachment: main.log added

Port build log output

comment:1 in reply to:  description ; Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to composr@…:

I've also tried directly downloading the source tarball and building manually with the same error.

Since you've already verified that this is not a MacPorts-specific issue, you should report it to the developers of po4a so that they can resolve it.

comment:2 in reply to:  1 Changed 9 years ago by composr@…

Replying to ryandesign@…:

Replying to composr@…:

I've also tried directly downloading the source tarball and building manually with the same error.

Since you've already verified that this is not a MacPorts-specific issue, you should report it to the developers of po4a so that they can resolve it.

I more or less verified that building from source using the ports-installed Perl libraries doesn't work. I should like to verify independent of anything from Ports before I'd report it upstream. Thanks for the tip!

comment:3 Changed 8 years ago by mojca (Mojca Miklavec)

Cc: mojca@… added
Version: 2.3.3

The build works for me if I don't run the build in trace mode, suggesting that most probably just one dependency is missing.

comment:4 Changed 8 years ago by mojca (Mojca Miklavec)

The function is defined in /opt/local/lib/perl5/5.22/PerlIO.pm which belongs to perl5.22. So it's weird that it doesn't work.

comment:5 Changed 8 years ago by mojca (Mojca Miklavec)

Based on the error:

I/O error : Attempt to load network entity http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
warning: failed to load external entity "http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"
cannot parse http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
Undefined subroutine &PerlIO::F_UTF8 called at /opt/local/lib/perl5/vendor_perl/5.22/Pod/Man.pm line 777.
	...propagated at Po4aBuilder.pm line 268.

I would suspect that it might have something to do with:

> port provides /opt/local/lib/perl5/5.22/Pod/Man.pm
/opt/local/lib/perl5/5.22/Pod/Man.pm is provided by: perl5.22
> port provides /opt/local/lib/perl5/vendor_perl/5.22/Pod/Man.pm
/opt/local/lib/perl5/vendor_perl/5.22/Pod/Man.pm is provided by: p5.22-podlators

where p5.22-podlators ships a newer version that perl5.22.

But I have no clue. Adding p5.22-podlators to the list of dependencies and enabling trace mode doesn't solve the problem.

comment:6 Changed 8 years ago by mojca (Mojca Miklavec)

Cc: devans@… added

comment:7 Changed 8 years ago by mojca (Mojca Miklavec)

Following the hint about the line with the failure:

system("xsltproc -o $outdir/$outfile.$section --nonet http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $file") and die;

I first added dependency on libxslt which provides the xsltproc binary. Then I followed all the warnings about all files and modules that have been hidden by the trace mode and came up with the following list:

depends_build-append \
                    port:docbook-xml-4.1.2 \
                    port:docbook-xml-4.2 \
                    port:docbook-xml-4.3 \
                    port:docbook-xml-4.4 \
                    port:docbook-xml-4.5 \
                    port:docbook-xml-5.0 \
                    port:docbook-xsl \
                    port:docbook-xsl-ns \
                    port:libxslt \
                    port:p${perl5.major}-data-dumper \
                    port:p${perl5.major}-extutils-manifest \
                    port:p${perl5.major}-file-path \
                    port:p${perl5.major}-getopt-long \
                    port:p${perl5.major}-html-parser \
                    port:p${perl5.major}-parent \
                    port:p${perl5.major}-pathtools \
                    port:p${perl5.major}-text-parsewords

I'm almost sure that some of these might not be needed or might be part of the core already, but the compilation works fine after that.

Remaining warnings:

Warning: The following existing files were hidden from the build system by trace mode:
  /OPT/LOCAL/LIB/PERL5/VENDOR_PERL/5.22/POD/SIMPLE/SEARCH.PM
  /opt/local/bin/gzip
  /opt/local/bin/perl

comment:8 Changed 8 years ago by mojca (Mojca Miklavec)

After r143429 the built on the buildbots finished successfully. I leave it up to others to figure out which dependencies are superfluous (and also left a comment in the port).

comment:9 Changed 8 years ago by mojca (Mojca Miklavec)

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.