veripool / verilog-perl

Verilog parser, preprocessor, and related tools for the Verilog-Perl package
https://www.veripool.org/verilog-perl
Artistic License 2.0
110 stars 32 forks source link

compile failures on multiple OSes with perl-5.8.8 #115

Closed veripoolbot closed 14 years ago

veripoolbot commented 14 years ago

Author Name: Marek Rouchal Original Redmine Issue: 115 from https://www.veripool.org Original Date: 2009-07-27 Original Assignee: Wilson Snyder (@wsnyder)


This bug was cloned from Perl-RT, rt48226.

Email addresses have have been truncated.

Id:   48226
Status:     open
Queue:      Verilog-Perl
Severity:   Critical
Broken in:  3.212
Requestors: MAREKR <Marek.Rouchal@>

Created:    Mon Jul 27 04:06:25 2009
Last Contact:   Mon Sep 14 13:14:11 2009
Closed:     Tue Jul 28 08:41:02 2009
Updated:    Mon Sep 14 13:14:11 2009 by WSNYDER

Mon Jul 27 04:06:30 2009 MAREKR - Ticket created

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

Mon Jul 27 07:52:36 2009 WSNYDER - Correspondence added

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>) {
1. "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";
}

Mon Jul 27 07:52:37 2009 RT_System - Status changed from 'new' to 'open'

Tue Jul 28 07:54:29 2009 MAREKR - Correspondence added

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
#
1. Copyright 2008-2009 by Wilson Snyder. This program is free software;
1. you can redistribute it and/or modify it under the terms of either the GNU
1. Lesser General Public License Version 3 or the Perl Artistic License
Version 2.0.
#
######################################################################

1. DESCRIPTION: Edits xsubpp output to get around various issues.

foreach my $line (<STDIN>) {
1. Fix xsubpp 1.9508 and GCC 4.2.1 warning
1. "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";
}

Tue Jul 28 08:41:00 2009 WSNYDER - Correspondence added

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.

Tue Jul 28 08:41:02 2009 WSNYDER - Status changed from 'open' to 'resolved'

Mon Sep 14 13:14:09 2009 WSNYDER - Correspondence added

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.

Mon Sep 14 13:14:10 2009 RT_System - Status changed from 'resolved' to 'open'

veripoolbot commented 14 years ago

Original Redmine Comment Author Name: Wilson Snyder (@wsnyder) Original Date: 2009-09-30T16:03:05Z


Fixed in 3.220