Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37405550
en ru br
Репозитории ALT

Группа :: Разработка/Perl
Пакет: perl-Source-Package

 Главная   Изменения   Спек   Патчи   Исходники   Загрузить   Gear   Bugs and FR  Repocop 

pax_global_header00006660000000000000000000000064123304642350014514gustar00rootroot0000000000000052 comment=32bbe6aa87ea306f90341e8b17e797a5627db805
Source-Package-0.05/000075500000000000000000000000001233046423500142275ustar00rootroot00000000000000Source-Package-0.05/.gear/000075500000000000000000000000001233046423500152235ustar00rootroot00000000000000Source-Package-0.05/.gear/rules000064400000000000000000000001031233046423500162720ustar00rootroot00000000000000tar: . name=Source-Package-@version@ base=Source-Package-@version@
Source-Package-0.05/Changes000064400000000000000000000001521233046423500155200ustar00rootroot000000000000000.01 Wed Aug 21 12:22:43 EEST 2013
- released

0.02 Fri Apr 18 00:17:18 EEST 2014
- added comparators
Source-Package-0.05/Makefile.PL000064400000000000000000000012071233046423500162010ustar00rootroot00000000000000use ExtUtils::MakeMaker;
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile(
'NAME' => 'Source::Repository',
'VERSION_FROM' => 'lib/Source/Package.pm', # finds $VERSION
'PREREQ_PM' => { 'Getopt::Long' => 0,
,
},
# 'EXE_FILES' => [ '' ],
# 'PL_FILES' => { 'cpanflute2.PL' => 'cpanflute2' },
($] >= 5.005 ? ## Add these new keywords supported since 5.005
(
# ABSTRACT_FROM => 'lib/RPM/Source/Package.pm', # retrieve abstract from module
AUTHOR => 'Igor Vlasenko <viy@altlinux.org>') : ()),
);
Source-Package-0.05/lib/000075500000000000000000000000001233046423500147755ustar00rootroot00000000000000Source-Package-0.05/lib/Source/000075500000000000000000000000001233046423500162355ustar00rootroot00000000000000Source-Package-0.05/lib/Source/Package.pm000064400000000000000000000026401233046423500201300ustar00rootroot00000000000000package Source::Package;

use File::Path qw(make_path remove_tree);
use File::Basename;

use strict;
use warnings;

our $VERSION=0.02;

sub new {
my $proto=shift;
my $class=ref($proto) || $proto;
my $self = {
-cachedir=>'in',
-epoch => undef,
-version => 0,
-release => 0,
@_,
};
bless($self,$class);
}

sub version {return $_[0]->{-version}}
sub release {return $_[0]->{-release}}
sub epoch {return $_[0]->{-epoch}}
sub name {return $_[0]->{-name}}
sub url {return $_[0]->{-url}}
sub file {
my ($self)=@_;
my $file=$self->{-file};
return $file if defined $file;
return $self->download if $self->{-url};
return $self->{-repo}->download if $self->{-repo};
return;
}

### TODO should be private #####
### TODO check url?
sub download {
my ($self)=@_;
my $file=$self->{-file};
return $file if defined $file and -e $file and -s $file;
my $url=$self->url;
my $filename=basename($url);
$filename=~s/\?.*$//;
my $cachedir=$self->__cachedir;
make_path($cachedir);
$file="$cachedir/$filename";
return $file if -e $file and -s $file;
unlink $file;
`wget -nv -O $file $url`;
unlink $file if -z $file;
die "download failed" unless -e $file;
$self->{-file}=$file;
return $file;
}

# for download only
sub __cachedir {
my ($self)=@_;
my $cachedir=$self->{-cachedir};
return $cachedir if defined $cachedir;
return 'in';
}

1;
Source-Package-0.05/lib/Source/Package/000075500000000000000000000000001233046423500175705ustar00rootroot00000000000000Source-Package-0.05/lib/Source/Package/Comparator.pm000064400000000000000000000025701233046423500222410ustar00rootroot00000000000000package Source::Package::Comparator;

use strict;
use warnings;
use Source::Package::Comparators;

our $VERSION=0.001;
our $verbose;

our $default_epoch_comparator= \&Source::Package::Comparators::null_epoch_comparator;
our $default_version_comparator=\&Source::Package::Comparators::pure_rpm_version_comparator;
our $default_release_comparator=\&Source::Package::Comparators::pure_rpm_release_comparator;

sub new {
my $class = shift;
my $self = {
-epoch_comparator => $default_epoch_comparator,
-version_comparator => $default_version_comparator,
-release_comparator => $default_release_comparator,
@_
};
bless $self, $class;
return $self;
}

#Binary "cmp" returns -1, 0, or 1 depending on whether the left argument
#is stringwise less than, equal to, or greater than the right argument.
sub cmp {
my ($self,$origin, $dest) =@_;
return 1 unless $dest;
return -1 unless $origin;
my $cmp =&{$self->{-epoch_comparator}}($origin, $dest);
if ($cmp!=0) {
print STDERR "Package::Comparator: epoch:". $origin->epoch.' cmp '.$dest->epoch." = $cmp\n" if $verbose;
return $cmp;
}
$cmp =&{$self->{-version_comparator}}($origin, $dest);
if ($cmp!=0) {
print STDERR "Package::Comparator: version:". $origin->version.' cmp '.$dest->version." = $cmp\n" if $verbose;
return $cmp;
}
return &{$self->{-release_comparator}}($origin, $dest);
}

1;
Source-Package-0.05/lib/Source/Package/Comparators.pm000064400000000000000000000021551233046423500224230ustar00rootroot00000000000000package Source::Package::Comparators;

use strict;
use warnings;
use Carp;
use RPM qw/evrcmp vercmp/;
use Source::Package::Comparators::Raw;

our $VERSION=0.001;
our $verbose=0;

sub null_comparator {
my ($origin, $dest)=@_;
return 0;
}

sub null_epoch_comparator {
my ($origin, $dest)=@_;
return 0;
}

sub generic_epoch_comparator {
my ($origin, $dest)=@_;
return $origin->epoch <=> $dest->epoch;
}

sub rpm40_epoch_comparator {
my ($origin, $dest)=@_;
return &__rpm40epoch($origin->epoch) <=> &__rpm40epoch($dest->epoch);
}

sub __rpm40epoch {
return $_[0] ? $_[0]: 0;
}

sub pure_rpm_version_comparator {
my ($origin, $dest)=@_;
return vercmp($origin->version, 0, $dest->version, 0);
}

sub pure_rpm_release_comparator {
my ($origin, $dest)=@_;
return vercmp(0, $origin->release, 0, $dest->release);
}

sub null_release_comparator {
my ($origin, $dest)=@_;
return 0;
}

sub rpm_plus_perl_version_comparator {
my ($origin, $dest)=@_;
return &Source::Package::Comparators::Raw::_rpm_plus_perl_version_cmp(undef,$dest->name,$origin->version, $dest->version);
}

1;
Source-Package-0.05/lib/Source/Package/Comparators/000075500000000000000000000000001233046423500220625ustar00rootroot00000000000000Source-Package-0.05/lib/Source/Package/Comparators/Raw.pm000064400000000000000000000036051233046423500231550ustar00rootroot00000000000000package Source::Package::Comparators::Raw;

use strict;
use warnings;
use Carp;
use version;
use RPM qw/evrcmp vercmp/;

our $VERSION=0.001;
our $verbose=0;

###### PROTECTED #############################################

# used in ALTLinuxImport
sub _rpm_plus_perl_version_cmp {
my ($originname, $destname, $originversion, $destversion)=@_;
Carp::confess 'Oops!: undefined versions' unless defined $destversion and defined $originversion;
$originname='(undef)' if not defined $originname;
if ($destname =~/^perl-/) {
my $compare_result;
eval {
$compare_result = &perl_version_cmp($originversion, $destversion);
};
die "_rpm_plus_perl_version_cmp: $originname, $destname, $originversion, $destversion: $@.\n" if $@;
return $compare_result;
}
return vercmp($originversion, 0, $destversion, 0);
}

sub perl_version_cmp {
my ($originversion,$destversion)=@_;
Carp::confess 'incorrect call: 3-rd,4-th args found!' if $_[2] or $_[3];
my $cmp=&__raw_perl_version_cmp($originversion,$destversion);
$cmp=0 if $cmp>0 and $destversion.'.0' eq $originversion; # like, 1.4 equal 1.4.0
$cmp=0 if $cmp<0 and $originversion.'.0' eq $destversion; # like, 1.4 equal 1.4.0
return $cmp;
}

###### PRIVATE #############################################

sub __raw_perl_version_cmp {
my ($ver1, $ver2)=@_;
my ($v1s,$tail1)=&__raw_perl_ver_trim($ver1);
my ($v2s,$tail2)=&__raw_perl_ver_trim($ver2);
my $v1=version->parse($v1s);
my $v2=version->parse($v2s);
if ($v1 == $v2) {
#warn "tails found in $v1s $v2s\n" if $tail1 or $tail2;
return RPM::evrcmp($tail1, $tail2);
}

#warn "methods differ! $v1s, $v2s\n" if (evrcmp($s1, $s2) < 0) xor ($v1 < $v2);
return $v1 cmp $v2;
}

sub __raw_perl_ver_trim {
my $vers=shift;
$vers=~s/^V/v/;
$vers=~s/^(v?[\d\.]+)([^\d\.].*)?$/$1/;
my $tail=$2;
$tail||='';
return ($vers,$tail);
}

1;
Source-Package-0.05/lib/Source/Package/Pair.pm000064400000000000000000000020421233046423500210170ustar00rootroot00000000000000package Source::Package::Pair;

use strict;
use warnings;

our $VERSION=0.001;

sub new {
my $class=shift;
my $self = {
@_,
};
#print STDERR "Source::Package::Pair: new: ",join(' ',@_),"\n";
bless($self,$class);
}

sub destname {
my ($self)=@_;
return $self->{-destname};
}

sub originname {
my ($self)=@_;
return $self->{-originname};
}

sub origin {
my ($self)=@_;
return $self->{-origin} if exists $self->{-origin};
my $origin;
my $originrepo=$self->{-originrepo};
my $originname=$self->{-originname};
$origin=$originrepo->name2pkg($originname) if $originrepo and defined ($originname);
# even if it is undef
$self->{-origin}=$origin;
return $origin;

}

sub dest {
my ($self)=@_;
return $self->{-dest} if exists $self->{-dest};
my $dest;
my $destrepo=$self->{-destrepo};
my $destname=$self->{-destname};
$dest = $destrepo->name2pkg($destname) if $destrepo and defined ($destname);
# even if it is undef
$self->{-dest}=$dest;
return $dest;
}

1;
Source-Package-0.05/perl-Source-Package.spec000064400000000000000000000021111233046423500206270ustar00rootroot00000000000000%define module Source-Package

Name: perl-%module
Version: 0.05
Release: alt1
BuildArch: noarch
Packager: Igor Yu. Vlasenko <viy@altlinux.org>

Summary: %module - Perl extension for converting SRPM and spec files
Group: Development/Perl
License: GPL or Artistic
Source: %module-%version.tar
Url: http://search.cpan.org/dist/%module

BuildRequires: perl-devel perl-RPM
#Requires: perl-RPM-Source-Editor > 0.801
Conflicts: perl-Source-Repository < 0.12

%description
%summary

%prep
%setup -q -n %module-%version

%build
%perl_vendor_build

%install
%perl_vendor_install

%files
%doc Changes
#doc README
%perl_vendor_privlib/Source*

%changelog
* Thu May 01 2014 Igor Vlasenko <viy@altlinux.ru> 0.05-alt1
- autodownload

* Fri Apr 18 2014 Igor Vlasenko <viy@altlinux.ru> 0.04-alt1
- added Source::Package::Comparators::Raw

* Fri Apr 18 2014 Igor Vlasenko <viy@altlinux.ru> 0.03-alt1
- added Source::Package::Pair

* Fri Apr 18 2014 Igor Vlasenko <viy@altlinux.ru> 0.02-alt1
- added Source::Package::Comparator

* Wed Aug 21 2013 Igor Vlasenko <viy@altlinux.ru> 0.01-alt1
- first build for Sisyphus
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin