[MacPorts] #69245: p5.34-xml-parser: Expat must be installed prior to building XML::Parser and I can't find it
MacPorts
noreply at macports.org
Fri Feb 9 15:43:38 UTC 2024
#69245: p5.34-xml-parser: Expat must be installed prior to building XML::Parser and
I can't find it
-------------------------------+-----------------------
Reporter: ballapete | Owner: (none)
Type: defect | Status: new
Priority: Normal | Milestone:
Component: ports | Version: 2.9.0
Resolution: | Keywords: tiger ppc
Port: p5.34-xml-parser |
-------------------------------+-----------------------
Comment (by ryandesign):
Replying to [ticket:69245 ballapete]:
> Invoking the `build command` on the `command line` I get:
>
> {{{
> /opt/local/bin/perl5.34 Makefile.PL INSTALLDIRS=vendor
CC="/opt/local/bin/gcc-apple-4.2" LD="/opt/local/bin/gcc-apple-4.2"
EXPATLIBPATH=/opt/local/lib EXPATINCPATH=/opt/local/include
> Use of uninitialized value $line in substitution (s///) at
/opt/local/lib/perl5/vendor_perl/5.34/Text/ParseWords.pm line 21.
> }}}
Right, running a command yourself on the command line is not the same as
MacPorts running it when you omit a lot of the things MacPorts did. In
this case, the most relevant omission is that you did not set the `CC`
environment variable which is what Makefile.PL is passing to ParseWords.
Since that environment variable wasn't set, the value that ParseWords sees
is uninitialized, and the rest of the script fails. (You are setting `CC`
as a command line argument but that's not the same as an environment
variable.)
Replying to [comment:5 ballapete]:
> So presumingly Tiger's `make 3.80` is a bit too old (gmake is 4.4.1). I
tried to `port -vd upgrade p5.34-xml-parser MAKE=gmake` but this failed…
Sure, that won't work. MacPorts doesn't automatically take arguments that
you pass to the `port` command and pass them as arguments or environment
variables to the build phase.
Replying to [comment:6 ballapete]:
> After some days I found that `port -vsd build p5.34-xml-parser
build.cmd=gmake` would substitute `make` with `gmake` – and it worked:
Yes, you can specify MacPorts Portfile options like `build.cmd` on the
command line to override the defaults, for debugging purposes. But the
problem here isn't that a Makefile was generated that is incompatible with
your version of make. The problem is that no Makefile was generated at all
due to the failure to find expat.
This bug looks like #64543 again, which was fixed by
[changeset:ed49a07e78f902c75c0a32da2de20a152eea4198/macports-ports using
the compiler specified in the CC environment variable]. Previously it
would have used whatever compiler perl had been built with, and the
problem with that was that the compiler that had been used to build perl
on, for example, Snow Leopard, was a newer MacPorts version of clang which
was not necessarily installed anymore at the time that a perl module was
being built.
We really need to see what's happening in Makefile.PL as it runs, and
since it doesn't generate a config.log for us, maybe we'll have to do
ourselves. I added the p5-devel-dumptrace port which provides a module for
printing information about each line of a perl script as it's executed.
Wait at least an hour from now and then run:
{{{
sudo port clean p5.34-xml-parser
sudo port sync
sudo port install --unrequested p5.34-devel-dumptrace
sudo port configure p5.34-xml-parser configure.pre_args='-d:DumpTrace
Makefile.PL'
}}}
When this fails, please attach the main.log file so that we can inspect
the output. There will be a lot of output so attaching the main.log is
better than pasting its contents into a comment.
--
Ticket URL: <https://trac.macports.org/ticket/69245#comment:8>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list