[Kde-bindings] [Bug 66053] New: Smoke and Kalyptus are missing a perl version check?

Richard Dale Richard_Dale at tipitina.demon.co.uk
Fri Oct 17 00:19:22 UTC 2003


On Wednesday 15 October 2003 06:57, Neil Stevens wrote:
> ------- You are receiving this mail because: -------
> You are the assignee for the bug, or are watching the assignee.
>
> http://bugs.kde.org/show_bug.cgi?id=66053
>            Summary: Smoke and Kalyptus are missing a perl version check?
>            Product: bindings
>            Version: unspecified
>           Platform: Compiled Sources
>         OS/Version: FreeBSD
>             Status: NEW
>           Severity: normal
>           Priority: NOR
>          Component: general
>         AssignedTo: kde-bindings at mail.kde.org
>         ReportedBy: neil at qualityassistant.com
>
>
> Version:            (using KDE KDE 3.1.92)
> Installed from:    Compiled From Sources
> Compiler:          Perl version 5.005_03
> OS:          FreeBSD
>
> Smoke's qtguess.pl and generate.pl seem to require a version of perl other
> than the one I have.  At the end of my kdebindings configure I get these
> errors:
>
> Operator or semicolon missing before %tests at qtguess.pl line 250.
> Ambiguous use of % resolved as operator % at qtguess.pl line 250.
> Illegal modulus zero at qtguess.pl line 250.
> Not enough arguments for mkdir at generate.pl line 24, near "$outdir;"
> Not enough arguments for mkdir at generate.pl line 26, near "$finaloutdir
> unless" Execution of generate.pl aborted due to compilation errors.
>
> Now I don't really use perl much, and I'm trying to install the ruby
> bindings here, but I was able to do some poking around:  Removing the "our"
> in qtguess.pl line 250 seems to make that run, and turning the mkdir calls
> into system calls in generate.pl seems to work around those errors, but
> after that I get more problems:
>
> Writing x_*.cpp...
> Can't use an undefined value as a symbol reference at kalyptusCxxToSmoke.pm
> line 600.

This is the code around line 600

sub propagateCanBeCopied($)
{
	my $classNode = shift;
	my $className = join( "::", kdocAstUtil::heritage($classNode) );
	my @super = superclass_list($classNode);
	# A class can only be copied if none of its ancestors have a private copy 
ctor.
	for my $s (@super) {
	    if (!$s->{CanBeCopied}) {
		$classNode->{CanBeCopied} = 0;
		print STDERR "$classNode->{astNodeName} cannot be copied\n" if ($debug);
		last;
	    }
	}
	# If the class has no explicit copy constructor, and it can be copied,
	# generate the copy constructor.
	if ( !$classNode->{HasCopyConstructor} && $classNode->{CanBeCopied} && 
$classNode->{CanBeInstanciated} ) {
	    my $methodNode = Ast::New( "$classNode->{astNodeName}" );
	    $methodNode->AddProp( "NodeType", "method" );
	    $methodNode->AddProp( "Flags", "" );
600 ---->	    my $argType = "const ".$className."&";
	    registerType( $argType );
	    $methodNode->AddProp( "Params", $argType );

Does that mean that $className is undef? I'm not sure if this problem is to 
ddo with the perl being old, or whether it's an input problem with something 
it doesn't like in a particular header. Maybe add some printf's to see which 
class/header is giving the problem, eg:

printf("source: " $classNode->{Source}->{astNodeName}\n");
printf("className: $className\n");

But I can't see any weird or unusual perl syntax there, that would trip up an 
old version. I'm not much of a perl expert though..

> I hope the above is useful.  I have perl 5.005_03, so if the problem is
> that this stuff requires a newer perl than, I would suggest that there
> should be a configure check for that newer perl and a warning if the
> installed perl is too old. _______________________________________________
Does KDE have a minimum perl version requirement - I don't know?

-- Richard


More information about the Kde-bindings mailing list