pf-tools commit: r695 [ccaillet-guest] - in /trunk: debian/changelog lib/PFTools/Net.pm lib/PFTools/Packages.pm lib/PFTools/Update.pm
parmelan-guest at users.alioth.debian.org
parmelan-guest at users.alioth.debian.org
Tue Feb 10 15:36:38 UTC 2009
Author: ccaillet-guest
Date: Tue Feb 10 15:36:38 2009
New Revision: 695
URL: http://svn.debian.org/wsvn/pf-tools/?sc=1&rev=695
Log:
Integration of PFTools::Packages into Update.pm (need testing)
Modified:
trunk/debian/changelog
trunk/lib/PFTools/Net.pm
trunk/lib/PFTools/Packages.pm
trunk/lib/PFTools/Update.pm
Modified: trunk/debian/changelog
URL: http://svn.debian.org/wsvn/pf-tools/trunk/debian/changelog?rev=695&op=diff
==============================================================================
--- trunk/debian/changelog (original)
+++ trunk/debian/changelog Tue Feb 10 15:36:38 2009
@@ -28,8 +28,9 @@
HOSTTYPE part
* Introducing an abstraction layer for packages : Packages.pm. Need to
integrate those functions into Update.pm
-
- -- Christophe Caillet <quadchris at free.fr> Fri, 06 Feb 2009 17:20:22 +0100
+ * Integration of PFTools::Packages into Update.pm (need testing)
+
+ -- Christophe Caillet <quadchris at free.fr> Tue, 10 Feb 2009 16:34:07 +0100
pf-tools (0.33.1-1) unstable; urgency=low
Modified: trunk/lib/PFTools/Net.pm
URL: http://svn.debian.org/wsvn/pf-tools/trunk/lib/PFTools/Net.pm?rev=695&op=diff
==============================================================================
--- trunk/lib/PFTools/Net.pm (original)
+++ trunk/lib/PFTools/Net.pm Tue Feb 10 15:36:38 2009
@@ -80,18 +80,6 @@
# Allowed deploymode
my $ALLOWED_DEPLOYMODE = 'pf-tools|(debian|ubuntu)-installer' ;
-
-#=======================================================#
-# #
-# lib-net #
-# #
-# Fonctions de configuration de la conf reseau #
-# #
-# * Generation de fichier zone BIND #
-# * Generation de fichier zone DHCP #
-# * Generation de fichiers interfaces #
-# #
-#=======================================================#
sub node2index {
my ( $node, $pad ) = @_;
Modified: trunk/lib/PFTools/Packages.pm
URL: http://svn.debian.org/wsvn/pf-tools/trunk/lib/PFTools/Packages.pm?rev=695&op=diff
==============================================================================
--- trunk/lib/PFTools/Packages.pm (original)
+++ trunk/lib/PFTools/Packages.pm Tue Feb 10 15:36:38 2009
@@ -51,22 +51,24 @@
$PKG_CMD->{'deb'}->{'compare'} = 'LANG=C LC_ALL=C /usr/bin/dpkg --compare-versions' ;
$PKG_CMD->{'rpm'} = 'TODO' ;
+my $VERBOSE = 0 ;
+
sub Get_pkg_status ($$) {
my ( $pkg_type, $pkg_name ) = @_ ;
my $result = {} ;
if ( ! defined $PKG_CMD->{$pkg_type} ) {
- Warn ( $ERR_OPEN, "Unknown package type ".$pkg_type ) ;
- return undef ;
- }
- elsif ( $pkg_type eq 'rpm' ) {
- #TODO
- Warn ( $ERR_OPEN, "Need to implement the RPM handler" ) ;
+ Warn ( $ERR_OPEN, "Unknown package type ".$pkg_type ) if ( $VERBOSE );
+ return undef ;
+ }
+ elsif ( $pkg_type eq 'rpm' ) {
+ #TODO
+ Warn ( $ERR_OPEN, "Need to implement the RPM handler" ) if ( $VERBOSE );
return undef ;
}
elsif ( $pkg_type eq 'deb' ) {
unless ( open ( PKG, $PKG_CMD->{$pkg_type}->{'status'}.' '.$pkg_name.' 2>/dev/null |' ) ) {
- Warn ( $ERR_OPEN, "Unable to retrieve status for package ".$pkg_name ) ;
+ Warn ( $ERR_OPEN, "Unable to retrieve status for package ".$pkg_name ) if ( $VERBOSE );
return undef ;
}
while ( <PKG>) {
@@ -92,17 +94,17 @@
my ( $pkg_type ) = @_ ;
if ( ! defined $PKG_CMD->{$pkg_type} ) {
- Warn ( $ERR_OPEN, "Unknown package type ".$pkg_type ) ;
- return 0 ;
- }
- elsif ( $pkg_type eq 'rpm' ) {
- #TODO
- Warn ( $ERR_OPEN, "Need to implement the RPM handler" ) ;
+ Warn ( $ERR_OPEN, "Unknown package type ".$pkg_type ) if ( $VERBOSE );
+ return 0 ;
+ }
+ elsif ( $pkg_type eq 'rpm' ) {
+ #TODO
+ Warn ( $ERR_OPEN, "Need to implement the RPM handler" ) if ( $VERBOSE );
return 0 ;
}
elsif ( $pkg_type eq 'deb' ) {
if ( deferredlogsystem( $PKG_CMD->{$pkg_type}->{'update'} ) ) {
- Warn( $ERR_OPEN, "Updating repository failed !" ) ;
+ Warn( $ERR_OPEN, "Updating repository failed !" ) if ( $VERBOSE );
return 0 ;
}
}
@@ -113,17 +115,17 @@
my ( $pkg_type, $pkg_name ) = @_ ;
if ( ! defined $PKG_CMD->{$pkg_type} ) {
- Warn ( $ERR_OPEN, "Unknown package type ".$pkg_type ) ;
- return 0 ;
- }
- elsif ( $pkg_type eq 'rpm' ) {
- #TODO
- Warn ( $ERR_OPEN, "Need to implement the RPM handler" ) ;
+ Warn ( $ERR_OPEN, "Unknown package type ".$pkg_type ) if ( $VERBOSE );
+ return 0 ;
+ }
+ elsif ( $pkg_type eq 'rpm' ) {
+ #TODO
+ Warn ( $ERR_OPEN, "Need to implement the RPM handler" ) if ( $VERBOSE );
return 0 ;
}
elsif ( $pkg_type eq 'deb' ) {
if ( deferredlogsystem ( $PKG_CMD->{$pkg_type}->{'purge'}." '".$pkg_name."'" ) ) {
- Warn( $ERR_OPEN, "Purge du package ".$pkg_name." impossible" ) ;
+ Warn( $ERR_OPEN, "Unable to purge ".$pkg_name ) if ( $VERBOSE );
return 0 ;
}
}
@@ -135,17 +137,17 @@
my $dep_list ;
if ( ! defined $PKG_CMD->{$pkg_type} ) {
- Warn ( $ERR_OPEN, "Unknown package type ".$pkg_type ) ;
- return undef ;
- }
- elsif ( $pkg_type eq 'rpm' ) {
- #TODO
- Warn ( $ERR_OPEN, "Need to implement the RPM handler" ) ;
+ Warn ( $ERR_OPEN, "Unknown package type ".$pkg_type ) if ( $VERBOSE );
+ return undef ;
+ }
+ elsif ( $pkg_type eq 'rpm' ) {
+ #TODO
+ Warn ( $ERR_OPEN, "Need to implement the RPM handler" ) if ( $VERBOSE );
return undef ;
}
elsif ( $pkg_type eq 'deb' ) {
unless ( open( APTDEP, $PKG_CMD->{$pkg_type}->{'depends'}.' '.$pkg_name.' 2>/dev/null |' ) ) {
- Warn ( $ERR_OPEN, "Unable to get depends for package ".$pkg_name ) ;
+ Warn ( $ERR_OPEN, "Unable to get depends for package ".$pkg_name ) if ( $VERBOSE );
return undef ;
}
while (<APTDEP>) {
@@ -177,17 +179,17 @@
my ( $installed, $available ) ;
if ( ! defined $PKG_CMD->{$pkg_type} ) {
- Warn ( $ERR_OPEN, "Unknown package type ".$pkg_type ) ;
- return undef ;
- }
- elsif ( $pkg_type eq 'rpm' ) {
- #TODO
- Warn ( $ERR_OPEN, "Need to implement the RPM handler" ) ;
+ Warn ( $ERR_OPEN, "Unknown package type ".$pkg_type ) if ( $VERBOSE );
+ return undef ;
+ }
+ elsif ( $pkg_type eq 'rpm' ) {
+ #TODO
+ Warn ( $ERR_OPEN, "Need to implement the RPM handler" ) if ( $VERBOSE );
return undef ;
}
elsif ( $pkg_type eq 'deb' ) {
unless ( open( APTPOLICY, $PKG_CMD->{$pkg_type}->{'policy'}.' '.$pkg_name.' 2>/dev/null |' ) ) {
- Warn ( $ERR_OPEN, "Unable to get policy for package ".$pkg_name ) ;
+ Warn ( $ERR_OPEN, "Unable to get policy for package ".$pkg_name ) if ( $VERBOSE );
return undef ;
}
while ( <APTPOLICY> ) {
@@ -208,12 +210,12 @@
my ( $pkg_type, $pkg_name, $version1, $version2 ) = @_ ;
if ( ! defined $PKG_CMD->{$pkg_type} ) {
- Warn ( $ERR_OPEN, "Unknown package type ".$pkg_type ) ;
- return undef ;
- }
- elsif ( $pkg_type eq 'rpm' ) {
- #TODO
- Warn ( $ERR_OPEN, "Need to implement the RPM handler" ) ;
+ Warn ( $ERR_OPEN, "Unknown package type ".$pkg_type ) if ( $VERBOSE );
+ return undef ;
+ }
+ elsif ( $pkg_type eq 'rpm' ) {
+ #TODO
+ Warn ( $ERR_OPEN, "Need to implement the RPM handler" ) if ( $VERBOSE );
return undef ;
}
else {
@@ -235,18 +237,17 @@
my ( $pkg_type, $pkg_name ) = @_ ;
if ( ! defined $PKG_CMD->{$pkg_type} ) {
- Warn ( $ERR_OPEN, "Unknown package type ".$pkg_type ) ;
- return undef ;
- }
- elsif ( $pkg_type eq 'rpm' ) {
- #TODO
- Warn ( $ERR_OPEN, "Need to implement the RPM handler" ) ;
+ Warn ( $ERR_OPEN, "Unknown package type ".$pkg_type ) if ( $VERBOSE );
+ return undef ;
+ }
+ elsif ( $pkg_type eq 'rpm' ) {
+ #TODO
+ Warn ( $ERR_OPEN, "Need to implement the RPM handler" ) if ( $VERBOSE );
return undef ;
}
else {
if ( $pkg_type eq 'deb' ) {
if ( deferredlogsystem ( $PKG_CMD->{$pkg_type}->{'install'}." '".$pkg_name."'" ) ) {
- Warn( $ERR_OPEN, "Installation de ".$pkg_name." impossible" ) ;
return 0 ;
}
return 1 ;
Modified: trunk/lib/PFTools/Update.pm
URL: http://svn.debian.org/wsvn/pf-tools/trunk/lib/PFTools/Update.pm?rev=695&op=diff
==============================================================================
--- trunk/lib/PFTools/Update.pm (original)
+++ trunk/lib/PFTools/Update.pm Tue Feb 10 15:36:38 2009
@@ -43,6 +43,7 @@
use PFTools::Conf;
use PFTools::Net;
+use PFTools::Packages;
use Fcntl ':mode';
@@ -518,7 +519,9 @@
};
$FUNCTIONS{'dpkg-purge'} = sub {
- my ( $S, $dest, $options ) = @_;
+ my ( $S, $dest, $options, $pkg_type ) = @_;
+
+ $pkg_type = 'deb' if ( ! defined $pkg_type ) ;
my $name_filter = $S->{'name_filter'};
if ($name_filter) {
@@ -536,25 +539,31 @@
$dest = $newdest;
}
- my $installed_version;
-
- open( DPKG, $DPKG . ' -s ' . $dest . ' 2>/dev/null |' );
- while (<DPKG>) {
- if (/^Status:\s+/) {
- if ( !/^Status:\s+install\s+ok\s+installed\s*$/ ) {
- $installed_version = 0;
- last;
- }
- }
-
- if (/^Version:\s+(.+)\s*$/) {
- $installed_version = $1;
- last;
- }
- }
- close(DPKG);
-
- if ($installed_version) {
+# my $installed_version;
+#
+# open( DPKG, $DPKG . ' -s ' . $dest . ' 2>/dev/null |' );
+# while (<DPKG>) {
+# if (/^Status:\s+/) {
+# if ( !/^Status:\s+install\s+ok\s+installed\s*$/ ) {
+# $installed_version = 0;
+# last;
+# }
+# }
+#
+# if (/^Version:\s+(.+)\s*$/) {
+# $installed_version = $1;
+# last;
+# }
+# }
+# close(DPKG);
+
+ my $status = Get_pkg_status ( $pkg_type, $dest ) ;
+ if ( ! defined $status ) {
+ Warn ( $ERR_OPEN, "Impossible d'obtenir le statut du paquet ".$dest ) ;
+ return 1;
+ }
+
+ if ( $status->{'installed'} ) {
if ( $options->{'verbose'} || $options->{'simul'} ) {
Log("(action needed)");
@@ -565,10 +574,14 @@
Do_before_change( $S, $options ) && return 1;
if ( !$options->{'simul'} ) {
- if ( deferredlogsystem( $DPKG . " -P '" . $dest . "'" ) ) {
- Warn( $ERR_OPEN,
- "Purge du package " . $dest . " impossible" );
- return 1;
+# if ( deferredlogsystem( $DPKG . " -P '" . $dest . "'" ) ) {
+# Warn( $ERR_OPEN,
+# "Purge du package " . $dest . " impossible" );
+# return 1;
+# }
+ if ( ! Purge_pkg ( $pkg_type, $dest ) ) {
+ Warn ( $ERR_OPEN, "Une erreur est survenue lors de la purge du paquet ".$dest ) ;
+ return 1 ;
}
}
@@ -595,29 +608,42 @@
}
$DEPENDS{'apt-get'} = sub {
- my ( $S, $dest, $options ) = @_;
-
- if ( aptupdate() ) {
+ my ( $S, $dest, $options, $pkg_type ) = @_;
+
+ $pkg_type = 'deb' if ( ! defined $pkg_type ) ;
+# if ( aptupdate() ) {
+# return 1;
+# }
+ if ( ! Update_pkg_repository ( $pkg_type ) ) {
return 1;
}
- open( APTDEP, $APT_GET_DEPENDS . ' install ' . $dest . ' 2>/dev/null |' );
- while (<APTDEP>) {
- if (m/^ (.*)$/) {
- my $pkg;
- foreach $pkg ( split( ' ', $1 ) ) {
- if ( $pkg ne $dest ) {
- $S->{'depends'} .= " " . $pkg;
- }
- }
- }
- }
- close(APTDEP);
+# open( APTDEP, $APT_GET_DEPENDS . ' install ' . $dest . ' 2>/dev/null |' );
+# while (<APTDEP>) {
+# if (m/^ (.*)$/) {
+# my $pkg;
+# foreach $pkg ( split( ' ', $1 ) ) {
+# if ( $pkg ne $dest ) {
+# $S->{'depends'} .= " " . $pkg;
+# }
+# }
+# }
+# }
+# close(APTDEP);
+ my $deps = Get_pkg_depends ( $pkg_type, $dest ) ;
+ if ( ! defined $deps ) {
+ Warn ( $ERR_OPEN, "Impossible de recuperer les dependances du paquet ".$dest ) ;
+ return 1;
+ }
+ else {
+ $S->{'depends'} = $dest ;
+ }
};
$FUNCTIONS{'apt-get'} = sub {
- my ( $S, $dest, $options ) = @_;
-
+ my ( $S, $dest, $options, $pkg_type ) = @_;
+
+ $pkg_type = 'deb' if ( ! defined $pkg_type ) ;
my $installed_version;
my $available_version;
my $install;
@@ -640,36 +666,50 @@
aptupdate();
- open( APTPOLICY, $APT_POLICY . ' ' . $dest . ' 2>/dev/null |' );
- while (<APTPOLICY>) {
- if (m/^ Installed: (.*)$/) {
- $installed_version = $1;
- if ( $installed_version eq '' || $installed_version eq '(none)' )
- {
- undef $installed_version;
- }
- }
- elsif (m/^ Candidate: (.*)$/) {
- $available_version = $1;
- }
- }
- close(APTPOLICY);
-
- if ( !defined($available_version) ) {
+# open( APTPOLICY, $APT_POLICY . ' ' . $dest . ' 2>/dev/null |' );
+# while (<APTPOLICY>) {
+# if (m/^ Installed: (.*)$/) {
+# $installed_version = $1;
+# if ( $installed_version eq '' || $installed_version eq '(none)' )
+# {
+# undef $installed_version;
+# }
+# }
+# elsif (m/^ Candidate: (.*)$/) {
+# $available_version = $1;
+# }
+# }
+# close(APTPOLICY);
+
+ ( $installed_version, $available_version ) = Get_pkg_policy ( $pkg_type, $dest ) ;
+
+# if ( !defined($available_version) ) {
+# Warn( $ERR_OPEN, "Package " . $dest . " indisponible" );
+# return 1;
+# }
+
+ if ( !defined ( $available_version ) ) {
Warn( $ERR_OPEN, "Package " . $dest . " indisponible" );
return 1;
}
- if (!defined($installed_version)
- || !deferredlogsystem(
- $DPKG
- . ' --compare-versions '
- . $installed_version . ' lt '
- . $available_version
- )
- )
- {
- $install++;
+# if (!defined($installed_version)
+# || !deferredlogsystem(
+# $DPKG
+# . ' --compare-versions '
+# . $installed_version . ' lt '
+# . $available_version
+# )
+# )
+# {
+# $install++;
+# }
+
+ if ( defined $installed_version ) {
+ my $compare = Cmp_pkg_version ( $pkg_type, $dest, $installed_version, $available_version ) ;
+ if ( defined $compare && $compare < 0 ) {
+ $install++ ;
+ }
}
if ($install) {
@@ -734,12 +774,16 @@
}
if ( !$options->{'simul'} ) {
- if (deferredlogsystem(
- $install . " " . $APT_GET . " install '" . $dest . "'"
- )
- )
- {
- Warn( $ERR_OPEN, "Installation de " . $dest . " impossible" );
+# if (deferredlogsystem(
+# $install . " " . $APT_GET . " install '" . $dest . "'"
+# )
+# )
+# {
+# Warn( $ERR_OPEN, "Installation de " . $dest . " impossible" );
+# return 1;
+# }
+ if ( ! Install_pkg ( $pkg_type, $dest ) ) {
+ Warn( $ERR_OPEN, "Installation de ".$dest." impossible" ) ;
return 1;
}
}
More information about the pf-tools-commits
mailing list