diff options
Diffstat (limited to 'lib/Youri/Package/URPM.pm')
-rw-r--r-- | lib/Youri/Package/URPM.pm | 77 |
1 files changed, 20 insertions, 57 deletions
diff --git a/lib/Youri/Package/URPM.pm b/lib/Youri/Package/URPM.pm index ea6d546..0691d83 100644 --- a/lib/Youri/Package/URPM.pm +++ b/lib/Youri/Package/URPM.pm @@ -23,7 +23,7 @@ use Expect; use Scalar::Util qw/refaddr/; use base 'Youri::Package::RPM'; use overload - '""' => '_to_string', + '""' => 'as_string', '0+' => '_to_number', fallback => 1; @@ -90,7 +90,7 @@ sub compare_versions { return URPM::rpmvercmp($version1, $version2); } -sub compare_ranges { +sub check_ranges_compatibility { my ($class, $range1, $range2) = @_; return URPM::ranges_overlap($range1, $range2); @@ -110,31 +110,6 @@ sub get_version { return $self->{_header}->version(); } -sub get_full_version { - my ($self) = @_; - croak "Not a class method" unless ref $self; - - return $self->{_header}->epoch() ."-" . $self->{_header}->version() . "-". $self->{_header}->release() -} - -sub range_check { - my ($self, $obsolete, $package) = @_; - croak "Not a class method" unless ref $self; - my $obs = $obsolete->[Youri::Package::DEPENDENCY_NAME]; - my $range = $obsolete->[Youri::Package::DEPENDENCY_RANGE]; - my ($flag, $version) = $range =~ /(\S+)\s+(.*)/; - if ($version) { - my ($epoch, $ver, $release) = $version =~ /(?:(\d+):)?([^-]+(?:-[^-]*)?)/; - $release ||= '0'; - $epoch ||= '0'; - $range = "$flag $epoch-$ver-$release"; - my $full_version = $package->get_full_version; - return URPM::ranges_overlap($range, "== $full_version") - } else { - return 1 - } -} - sub get_release { my ($self) = @_; croak "Not a class method" unless ref $self; @@ -142,18 +117,11 @@ sub get_release { return $self->{_header}->release(); } -sub get_revision_name { - my ($self) = @_; - croak "Not a class method" unless ref $self; - - return join('-', ($self->{_header}->fullname())[0 .. 2]); -} - -sub get_full_name { +sub get_revision { my ($self) = @_; croak "Not a class method" unless ref $self; - return $self->{_header}->fullname(); + return $self->{_header}->queryformat('%|EPOCH?{%{EPOCH}:}:{}|%{VERSION}-%{RELEASE}'); } sub get_file_name { @@ -198,13 +166,6 @@ sub get_packager { return $self->{_header}->packager(); } -sub get_file { - my ($self) = @_; - croak "Not a class method" unless ref $self; - - return $self->{_file}; -} - sub is_source { my ($self) = @_; croak "Not a class method" unless ref $self; @@ -369,15 +330,18 @@ sub get_last_change { ]; } -sub get_buildhost { +sub as_string { my ($self) = @_; croak "Not a class method" unless ref $self; - - return $self->{_header}->buildhost(); + + return $self->{_header}->fullname(); } -sub _to_string { - return $_[0]->{_header}->fullname(); +sub as_formated_string { + my ($self, $format) = @_; + croak "Not a class method" unless ref $self; + + return $self->{_header}->queryformat($format); } sub _to_number { @@ -391,6 +355,13 @@ sub compare { return $self->{_header}->compare_pkg($package->{_header}); } +sub satisfy_range { + my ($self, $range) = @_; + croak "Not a class method" unless ref $self; + + return $self->check_range_compatibility($self->get_revision(), $range); +} + sub sign { my ($self, $name, $path, $passphrase) = @_; croak "Not a class method" unless ref $self; @@ -400,16 +371,13 @@ sub sign { croak "Unsignable package, parent directory is read-only" unless -w $parent; - # FIXME Will have to change that - return !system("sudo -H /root/bin/resign_cooker $self->{_file}"); - my $command = 'LC_ALL=C rpm --resign ' . $self->{_file} . ' --define "_gpg_name ' . $name . '"' . ' --define "_gpg_path ' . $path . '"'; my $expect = Expect->spawn($command) or die "Couldn't spawn command $command: $!\n"; $expect->log_stdout(0); - $expect->expect(200, -re => 'Enter pass phrase:'); + $expect->expect(20, -re => 'Enter pass phrase:'); $expect->send("$passphrase\n"); $expect->soft_close(); @@ -422,11 +390,6 @@ sub extract { system("rpm2cpio $self->{_file} | cpio -id >/dev/null 2>&1"); } -sub is_debug { - my ($self) = @_; - return $self->{_header}->name() =~ /-debug$/; -} - =head1 COPYRIGHT AND LICENSE Copyright (C) 2002-2006, YOURI project |