Skip Menu |

Preferred bug tracker

Please visit the preferred bug tracker to report your issue.

This queue is for tickets about the Verilog-Perl CPAN distribution.

Report information
The Basics
Id: 48226
Status: resolved
Priority: 0/
Queue: Verilog-Perl

People
Owner: Nobody in particular
Requestors: Marek.Rouchal [...] gmx.net
Cc:
AdminCc:

Bug Information
Severity: Critical
Broken in: 3.212
Fixed in: (no value)



Subject: compile failures on multiple OSes with perl-5.8.8
With our perl-5.8.8 (no threads, shared libperl, built with gcc-4.1.2) the latest version of Verilog-Perl (3.212) shows the following compile problem: g++ -c -fno-strict-aliasing -pipe -I/opt/perl_5.8.8/ext/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -I../Preproc -O2 -march=pentium4 -DVERSION=\"3.212\" -DXS_VERSION=\"3.212\" -fPIC "-I/opt/perl_5.8.8/lib/CORE" Parser_cleaned.c Parser.c: In function 'void boot_Verilog__Parser(CV*)': Parser.c:711: error: invalid conversion from 'const char*' to 'char*' Parser.c:711: error: initializing argument 3 of 'CV* Perl_newXS(char*, void (*)(CV*), char*)' Parser.c:712: error: invalid conversion from 'const char*' to 'char*' Parser.c:712: error: initializing argument 3 of 'CV* Perl_newXS(char*, void (*)(CV*), char*)' Parser.c:713: error: invalid conversion from 'const char*' to 'char*' Parser.c:713: error: initializing argument 3 of 'CV* Perl_newXS(char*, void (*)(CV*), char*)' Parser.c:714: error: invalid conversion from 'const char*' to 'char*' Parser.c:714: error: initializing argument 3 of 'CV* Perl_newXS(char*, void (*)(CV*), char*)' Parser.c:715: error: invalid conversion from 'const char*' to 'char*' Parser.c:715: error: initializing argument 3 of 'CV* Perl_newXS(char*, void (*)(CV*), char*)' Parser.c:716: error: invalid conversion from 'const char*' to 'char*' Parser.c:716: error: initializing argument 3 of 'CV* Perl_newXS(char*, void (*)(CV*), char*)' Parser.c:717: error: invalid conversion from 'const char*' to 'char*' Parser.c:717: error: initializing argument 3 of 'CV* Perl_newXS(char*, void (*)(CV*), char*)' Parser.c:718: error: invalid conversion from 'const char*' to 'char*' Parser.c:718: error: initializing argument 3 of 'CV* Perl_newXS(char*, void (*)(CV*), char*)' Parser.c:719: error: invalid conversion from 'const char*' to 'char*' Parser.c:719: error: initializing argument 3 of 'CV* Perl_newXS(char*, void (*)(CV*), char*)' Parser.c:720: error: invalid conversion from 'const char*' to 'char*' Parser.c:720: error: initializing argument 3 of 'CV* Perl_newXS(char*, void (*)(CV*), char*)' Parser.c:721: error: invalid conversion from 'const char*' to 'char*' Parser.c:721: error: initializing argument 3 of 'CV* Perl_newXS(char*, void (*)(CV*), char*)' Parser.c:722: error: invalid conversion from 'const char*' to 'char*' Parser.c:722: error: initializing argument 3 of 'CV* Perl_newXS(char*, void (*)(CV*), char*)' gmake[4]: *** [Parser_cleaned.o] Error 1 gmake[4]: Leaving directory `/home/hwadm/.cpan/build/Verilog-Perl-3.212-pGo2U0/Parser' gmake[3]: *** [subdirs] Error 2 The Perl installation is updated to all the latest versions from CPAN - so it could be a side-effect of some ExtUtils::* or Devel::* updates - I tried the previous 3.211 and that shows the same issue; here is what I installed recently (i.e., after Verilog-Perl-3.211): DBD::mysql 4.012 HTML::Parser 3.61 Mail::IMAPClient 3.19 Module::ScanDeps 0.91 base 2.14 Archive::Extract 0.34 Config::IniFiles 2.52 Locale-Maketext-Gettext 1.28 PadWalker 1.9 Safe 2.17 Time::Piece 1.15 CPAN 1.9402 File::Fetch 0.20 Archive::Zip 1.30 DateTime::Locale 0.43 File::Temp 0.22 Test::MinimumVersion 0.011 Template-Plugin-Autoformat 2.71 Data::Section 0.091820 Devel::FindRef 1.42 CPANPLUS::Dist::Build 0.36 IO::Socket::SSL 1.26 Proc::Background 1.10 Test::Simple 0.92 autodie 2.06 Term::ANSIColor 2.01 CPANPLUS 0.88 ExtUtils::MakeMaker 6.54 Locale::Maketext::Simple 0.20 LWP 5.829 GD 2.44 Log::Log4perl 1.24 Module::CPANTS::Analyse 0.85 RPC::XML 0.67 DateTime::Format::Strptime 1.1000 Encode 2.35 IPC::Run 0.84 Test::ClassAPI 1.06 Test::Pod 1.40 WWW::Mechanize 1.58 Devel::StackTrace 1.22 Config::General 2.43 ExtUtils::CBuilder 0.2603 ExtUtils::ParseXS 2.2002 File::Find::Rule::Perl 1.08 IO::Zlib 1.10 PAR 0.993 Perl::Critic 1.100 Pod::Simple 3.08 Test::Inline 2.211 Test::Manifest 1.23 Text::Diff 1.37 SystemC::Netlist 1.330 DateTime::TimeZone 0.93 HTTP::Proxy 0.24 prefork 1.04 Template 2.22 I suppose it is probably the ExtUtils::CBuilder and/or ExtUtils::ParseXS which cause the issues. Please feel free to reassign this ticket if the root cause is there. Many thanks and keep up the good work, Marek
Grrr, the Perl_newXS prototype is missing a const, but it's too late to change the perl internals, so please try the below patch. You'll need to "make clean" then start from scratch. BTW if you have additional bugs, please use http://www.veripool.org/projects/verilog-perl/issues diff --git a/Preproc/xsubppfix b/Preproc/xsubppfix index be13899..e13063f 100755 --- a/Preproc/xsubppfix +++ b/Preproc/xsubppfix @@ -13,6 +13,7 @@ foreach my $line (<STDIN>) { # "warning: deprecated conversion from string constant to âchar*â" $line =~ s/^ *char\* file = __FILE__;/char* file = (char*)__FILE__;/; $line =~ s/newXSproto\(\"/newXSproto((char*)\"/; + $line =~ s/(newXSproto.*), *\"/$1, (char*)\"/; # print "$line"; }
Thank you for the patch - I had to edit it a bit, and with the script below the build and all tests pass OK. Cheers, Marek #!/usr/bin/perl -w # # Copyright 2008-2009 by Wilson Snyder. This program is free software; # you can redistribute it and/or modify it under the terms of either the GNU # Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. # ###################################################################### # DESCRIPTION: Edits xsubpp output to get around various issues. foreach my $line (<STDIN>) { # Fix xsubpp 1.9508 and GCC 4.2.1 warning # "warning: deprecated conversion from string constant to â<80><98>char*â<80><99>" $line =~ s/^(\s*)(?:const\s*|)char\*\s*file\s*=\s*__FILE__;/${1}char* file = (char*)__FILE__;/; if($line =~ /newXSproto/) { $line =~ s/([(,]\s*)"/$1(char*)"/g; } # print "$line"; }
Thanks for your work on the fix. I've committed this to git, and it will be in the next release; 3.213. If you need it on CPAN immediately let me know.
The git version missed one line of the new patch, sorry about that. Please download it from git and insure it's ok for the next release, thanks.
Fixed in 3.220. Please use veripool.org for new bug reports, thanks.