Perl module version checking

Steve Lime Steve.Lime at DNR.STATE.MN.US
Fri Nov 24 15:14:44 EST 2006


Tom: I'll check out those docs you mention.

One easy way to do this is via map.h:

#ifdef SWIG
#define VERSION MS_VERSION
#endif

This worked just fine...

Steve

>>> "Kralidis,Tom [Burlington]" <Tom.Kralidis at EC.GC.CA> 11/21/06 7:21 AM
>>>
Chec out section 26.4.3.  This is essentially what we want to do,
defining VERSION (equal to MS_VERSION).  I tried setting:

#define VERSION MS_VERSION

...which didn't work (after re-swigging things, perl Makefile.PL, make).



> -----Original Message-----
> From: Ari Jolma [mailto:ari.jolma at tkk.fi] 
> Sent: 21 November, 2006 1:42 AM
> To: Kralidis,Tom [Burlington]
> Cc: Steve Lime; MAPSERVER-DEV at LISTS.UMN.EDU
> Subject: Re: [UMN_MAPSERVER-DEV] Perl module version checking
> 
> Kralidis,Tom [Burlington] kirjoitti:
> > I know.  I've yet to find anything to achieve this in swig. 
>  Perhaps 
> > Ari
> > (cc'd) can confirm.
> >   
> 
> Swig supports different languages differently. Currently swig 
> has some support for inserting Perl into the .pm files
> http://www.swig.org/Doc1.3/Perl5.html#Perl5_nn47
> 
> I'd also like to know how this could be exploited. There are 
> things that I'd like to insert into GDAL/OGR modules.
> 
> Ari
> 
> > ..Tom
> >
> >   
> >> -----Original Message-----
> >> From: UMN MapServer Developers List
> >> [mailto:MAPSERVER-DEV at LISTS.UMN.EDU] On Behalf Of Steve Lime
> >> Sent: 20 November, 2006 1:37 PM
> >> To: MAPSERVER-DEV at LISTS.UMN.EDU
> >> Subject: Re: [UMN_MAPSERVER-DEV] Perl module version checking
> >>
> >> 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
> >>>
> >>>       
> 
> 
> --
> Prof. Ari Jolma
> Geoinformaatio- ja paikannustekniikka
> Geoinformation and positioning technology Teknillinen 
> Korkeakoulu / Helsinki University of Technology POBox 1200, 
> 02015 TKK, Finland
> Email: ari.jolma at tkk.fi URL: http://www.tkk.fi/~jolma
> 
> 



More information about the mapserver-dev mailing list