123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- package Automake::Version;
- use 5.006;
- use strict;
- use Automake::ChannelDefs;
- sub split ($)
- {
- my ($ver) = @_;
-
- if ($ver =~ /^(\d+)\.(\d+)(?:-p(\d+)([a-z]+)?)$/)
- {
- return ($1, $2, $3, $4 || '', '');
- }
-
- elsif ($ver =~ /^(\d+)\.(\d+)(?:\.(\d+))?([a-z])?(?:-([A-Za-z0-9]+))?$/)
- {
- return ($1, $2, $3 || (defined $4 ? 99 : 0), $4 || '', $5 || '');
- }
- return ();
- }
- sub compare (\@\@)
- {
- my @l = @{$_[0]};
- my @r = @{$_[1]};
- for my $i (0, 1, 2)
- {
- return 1 if ($l[$i] > $r[$i]);
- return -1 if ($l[$i] < $r[$i]);
- }
- for my $i (3, 4)
- {
- return 1 if ($l[$i] gt $r[$i]);
- return -1 if ($l[$i] lt $r[$i]);
- }
- return 0;
- }
- sub check ($$)
- {
- my ($version, $required) = @_;
- my @version = Automake::Version::split ($version);
- my @required = Automake::Version::split ($required);
- prog_error "version is incorrect: $version"
- if $#version == -1;
-
-
- prog_error "required version is incorrect: $required"
- if $#required == -1;
-
-
- return 1
- if ($required[4] ne '' && $required[4] ne $version[4]);
- return 0 > compare (@version, @required);
- }
- 1;
|