[Cdd-commits] r249 - cdd/trunk/cdd

Andreas Tille debian-custom@lists.debian.org
Tue, 13 Jul 2004 08:55:50 -0600


Author: tille
Date: Tue Jul 13 08:55:49 2004
New Revision: 249

Modified:
   cdd/trunk/cdd/cdd-gen-control
Log:
Dependencies of #CDD#-common file checked and versionized


Modified: cdd/trunk/cdd/cdd-gen-control
==============================================================================
--- cdd/trunk/cdd/cdd-gen-control	(original)
+++ cdd/trunk/cdd/cdd-gen-control	Tue Jul 13 08:55:49 2004
@@ -23,8 +23,13 @@
 
 my $aptsources = "/etc/cdd/sources.list";
 my $tmpaptsources = "" ;
+
+my %commondepends ;
+$commondepends{"adduser"}    = "0" ;
+$commondepends{"debconf"}    = "1.2" ;
+$commondepends{"menu"}       = "2.1.14" ;
 # the VERSION variable is replaced in the dist target of debian/rules
-my $version = "#VERSION#" ;
+$commondepends{"cdd-common"} = "#VERSION#" ;
 
 getopts("cdaemis:", \%opts);
 
@@ -166,17 +171,44 @@
     # if there is a file common/control append this to control file
     if ( -s "common/control" && open(COMMON, "common/control") ) {
 	my $dependsflag = 0;
+	my @finaldeps ;
+	my $cdep ;
         while ( <COMMON> ) {
-	    if ( m/Depends:/ ) {
-		print "Depends: adduser, debconf (>= 1.2), menu (>= 2.1.14), cdd-common (>= $version)\n" ;
+	    if ( m/Depends:\s*(.*)/ ) {
+		my $dep ;
+		my @deps = split(/\s*,\s*/, $1) ;
+		@finaldeps = () ;
+		foreach $dep ( @deps ) {
+		    my $version = "0" ;
+
+		    if ( $dep =~ /([^\s]+)\s*\(\s*>*=+\s*([\d\.]*)\s*\)/ ) {
+			$version = $2;
+			$dep     = $1;
+		    }
+		    foreach $cdep ( keys %commondepends ) {
+			if ( $dep =~ $cdep ) {
+			    if ( ! system("dpkg --compare-versions $version lt $commondepends{$cdep}") ) {
+				$version = $commondepends{$cdep} ;
+			    }
+			    last ;
+			}
+		    }
+		    unless ( $version =~ /^0$/ ) { @finaldeps = (@finaldeps, "$dep (>= $version)") ; }
+		    else                         { @finaldeps = (@finaldeps, "$dep") ; }
+		}
+		print "Depends: " . join(", ", @finaldeps) . "\n";
 		$dependsflag = 1;
 		next ;
 	    }
 	    if ( m/Description:/ ) {
 		if ( $dependsflag == 0 ) {
-		    print "Depends: adduser, debconf (>= 1.2), menu (>= 2.1.14), cdd-common (>= $version)\n" ;
+		    @finaldeps = () ;
+		    for $cdep (keys %commondepends) {
+			unless ( $commondepends{$cdep} =~ /^0$/ ) { @finaldeps = (@finaldeps, "$cdep (>= $commondepends{$cdep})") ; }
+			else                                    { @finaldeps = (@finaldeps, "$cdep") ; }
+		    }
+		    print "Depends: " . join(", ", @finaldeps) . "\n";
 		    $dependsflag = 1;
-		    next ;
 		}
 	    }
 	    print ;