Major Tools
Other Tools
General Info

Issue #1428

Install problem from CPAN with 5.26.3/darwin-thread-multi-2level

Added by Jack Langsdorf 9 months ago. Updated 9 months ago.

% Done:



Installing Verilog::Netlist or Verilog::Parser (etc) from CPAN fail on my mac (Mojave 10.14, perl 5, version 26, subversion 3 (v5.26.3) built for darwin-thread-multi-2level Other modules from CPAN do not fail in the same way, I think there is an old Mac workaround in the Verilog module Makefiles that is causing a problem.

The failing message is: LD_RUN_PATH="/usr/lib" /usr/bin/clang -dynamiclib -lstdc++ -L/System/Library/Perl/5.26.3/darwin-thread-multi-2level/CORE -lperl -lgcc_eh -L/usr/local/lib VFileLine.o VParseLex.o VParse.o VParseBison.o VSymTable.o VAst.o -o ../blib/arch/auto/Verilog/Parser/Parser.bundle Parser_cleaned.o \ -lstdc++ \

ld: warning: directory not found for option '-L/System/Library/Perl/5.26.3/darwin-thread-multi-2level/CORE' ld: library not found for -lperl clang: error: linker command failed with exit code 1 (use -v to see invocation) make1: *** [../blib/arch/auto/Verilog/Parser/Parser.bundle] Error 1 make: *** [subdirs] Error 2 WSNYDER/Verilog-Perl-3.464.tar.gz /usr/bin/make -- NOT OK

I went to ~/.cpan/build/Verilog-Perl-3.464-*/

There are these suspicious lines in the Makefile.PL which I commented out:

if ($^V eq '5.12.4') {
    $out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/5.12/%s/CORE -lperl -L/usr/local/lib\n",$Config{archname});
} elsif ($^V eq '5.18.2') {
    $out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/5.18/%s/CORE -lperl -L/usr/local/lib\n",$Config{archname});
} else {
    $out .= sprintf("LDDLFLAGS = -dynamiclib -lstdc++ -L/System/Library/Perl/%vd/%s/CORE -lperl -lgcc_eh -L/usr/local/lib\n",$^V,$Config{archname});

and elsewhere this reference to PERL_INC: VFileLine.o: $(PPSRC)/VFileLine.cpp $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $<

When I commented out the lines with the sprintf and deleted the reference to PERL_INC (in multiple Makefile.PL files), I was able to pass make in the .cpan/build/Verilog* directory and install the modules manually. So I am not blocked, but future Mac OSX users will be.


#1 Updated by Wilson Snyder 9 months ago

  • Status changed from New to AskedReporter

Maybe Apple has finally properly built perl. Somehow I doubt it ;)

Can you please provide a patch that uses the version number (like the current hacks) to make it work on your system version (I don't want to break those on older versions), then I can upstream it. Thanks.

#2 Updated by Jack Langsdorf 9 months ago

This seems to work and should keep older systems using the old method. Makefile.PL is changed in three places. Verilog-Perl-3.464-0 was the original directory, Verilog-Perl-3.464-4 is one that can be installed.

diff Verilog-Perl-3.464-0/Makefile.PL Verilog-Perl-3.464-4/Makefile.PL
<     } else {
>     } elsif ($^V < 'v5.26.3') {

diff Verilog-Perl-3.464-0/Preproc/Makefile.PL Verilog-Perl-3.464-4/Preproc/Makefile.PL
<     } else {
>     } elsif ($^V < 'v5.26.3') {

diff Verilog-Perl-3.464-0/Parser/Makefile.PL Verilog-Perl-3.464-4/Parser/Makefile.PL
<     } else {
>     } elsif ($^V < 'v5.26.3') {

#3 Updated by Wilson Snyder 9 months ago

  • Status changed from AskedReporter to Closed
  • Assignee set to Jack Langsdorf

Great, thanks, fixed in git and 3.466.

Also available in: Atom