Perl module version checking

Steve Lime Steve.Lime at DNR.STATE.MN.US
Mon Nov 20 13:37:10 EST 2006


It seems a bit hacky, which may be a good thing. I thought Swig had a
method for including
scripting language code directly into the module to achieve the same
result. Don't know if it's
worth investigating.

Steve

>>> "Kralidis,Tom [Burlington]" <Tom.Kralidis at EC.GC.CA> 11/17/2006
9:59:43 PM >>>
 
I discussed this with Ari (cc'd), and seems the way to make this
happen
is to insert:

$VERSION = 4.10.0;

...in mapscript.pm

So, if the process for building perl mapscript is:

- cd mapscript/perl/
- run swig (outputs mapscript.pm)
- perl Makefile.PL
- make
- make install

Then mapscript/perl/Makefile.PL is where this logic should exist.

I have locally edited mapscript/perl/Makefile.PL with the following,
starting at line 38:

open(FH, "+<mapscript.pm") or die "mapscript.pm doesn't exist.  You
must
run swig to create mapscript.pm first.  See README for more
information\n";
@array = <FH>;
$array[10] = "\$VERSION = $ms_version;\n";
seek(FH,0,0) or die "Seeking: $!";
print FH @array or die "Printing: $!";
truncate(FH,tell(FH)) or die "Truncating: $!";
close(FH) or die "Closing: $!";

I've tried this and tested and it works fine.  Just wanting to confirm
I
haven't overlooked anything before committing.

Cheers

..Tom




> -----Original Message-----
> From: UMN MapServer Developers List 
> [mailto:MAPSERVER-DEV at LISTS.UMN.EDU] On Behalf Of Steve Lime
> Sent: 16 November, 2006 11:35 AM
> To: MAPSERVER-DEV at LISTS.UMN.EDU 
> Subject: Re: [UMN_MAPSERVER-DEV] Perl module version checking
> 
> I sounds useful to me. If not for other languages then 
> perhaps this could be done through the plmodule.i interface 
> file. This must be done fairly often and documented someplace 
> on the Swig website.
> 
> Steve
> 
> >>> "Kralidis,Tom [Burlington]" <Tom.Kralidis at EC.GC.CA> 11/15/2006
> 2:18:57 PM >>>
> Hi,
> 
> Mapscript defines MS_VERSION to derive the version of 
> mapscript used (i.e. 4.10.0, etc.).
> 
> Perl language allows for specifying modules by version, i.e.:
> 
> #!/usr/bin/perl
> 
> use strict;
> use warnings;
> use mapscript 4.10.0;
> 
> Perl language processes this by checking the version 
> specified against the VERSION variable used to identify Perl
modules.
> 
> When attempting the script snippet above, the result is:
> 
> mapscript does not define $mapscript::VERSION--version check 
> failed at proxim2prop.pl line 9.
> BEGIN failed--compilation aborted at foo.pl line 9.
> 
> I have run into a couple of situations where version checking 
> like this is required.
> 
> Suggest we add a VERSION variable to mapscript.pm.  I think 
> it would be valuable given the issue above, and especially 
> since it is Perl idiom to do so.
> 
> Comments?
> 
> ..Tom
> 



More information about the mapserver-dev mailing list