[Vienna-pm] Check external program version in Module::Build

Thomas Klausner domm at cpan.org
Tue Jan 15 11:20:52 PST 2008


Hi!

On Mon, Jan 14, 2008 at 11:24:33AM +0100, Angerer, Roland wrote:
> Hi,

Im allgemeines reden wir hier Deutsch (oder Varianten davon), ausser mit 
Leuten, die nicht (gut genug) Deutsch (oder Varianten davon) sprechen 
:-)

> I want to check for the version of an external program (java and some
> additional tools) from Build.PL like I do with the 'requires' hash for perl
> modules.

Willst du nur checken, ob eine passende Version installiert ist? Oder 
soll auch irgendwie die passende Version installiert werden?

> So far I came up with 2 solutions which are not really "elegant":
> 
> - write a test which will be executed in ./Build test

Da ist es IMO schon zu spaet. Vor allem koennte die installierende 
Person ja ./Build test einfach auslassen und dann eine kleine 
Ueberraschung erleben (bzw dich piesacken, warum dein Code nicht geht)

> - write perl code that dies with an according message in Build.PL

Wenn's nur ums rausfinden geht, wuerde ich das auch so machen.

Wenn die neue Version auch automatisch installiert werden soll: Soweit 
ich weiss kann das die CPAN toolchain leider nicht. Also bleibt dir eh 
nicht viel uebrig, als Build abzubrechen.

> Any ideas?

Wenn du's elegant haben willst, und das Problem oefter / bei 
verschiedenen Dists auftritt, koenntest du eine eigene Module::Build 
Subclass machen, die zB ein Feld 'require_external' hat. Dort koennte 
dann eine Coderef oder so gespeichert werden, die bei ./Build.PL 
aufgerufen wird. 

Eine andere Herangehensweise bietet der Alien Namespace auf CPAN. Hier 
werden 3rd-party-module (die eben nicht in Perl, sondern in C, Java, .. 
geschrieben sind) in eine Perl-Dist eingepackt, die dafuer zu sorgen 
hat, das eben jener Code installiert ist (das kann recht grauslich sein, 
je nach build-tool des 3rd-party-dings).

In deiner Dist sagst du dann einfach 
	requires=>{
		'Alien::Your3rdPartyWarpper' => 1.42,
	}

und fertig (wenn halt Alien::Your3rdPartyWarpper funktioniert).

Siehe:
http://search.cpan.org/dist/Alien/
oder zB:
http://search.cpan.org/dist/Alien-Selenium/
bzw was search.cpan.org halt sonst noch so auswirft...


-- 
#!/usr/bin/perl                              http://domm.plix.at
for(ref bless{},just'another'perl'hacker){s-:+-$"-g&&print$_.$/}


More information about the Vienna-pm mailing list