Просмотр исходного кода

* scripts/controllib.pl (get_host_arch): New function.
(findarch): Rename to ...
(init_substvar_arch): ... this. Use get_host_arch to set the substvar.
Fix all callers.
(parsedep): Use get_host_arch instead of directly calling
dpkg-architecture.
* scripts/dpkg-genchanges.pl: Use '$host_arch' instead of '$arch'.
(init_substvar_arch): Delay call until after init_substvars.
* scripts/dpkg-gencontrol.pl: Likewise.

Guillem Jover лет назад: 19
Родитель
Сommit
335e778f2e
4 измененных файлов с 46 добавлено и 21 удалено
  1. 12 0
      ChangeLog
  2. 19 9
      scripts/controllib.pl
  3. 7 6
      scripts/dpkg-genchanges.pl
  4. 8 6
      scripts/dpkg-gencontrol.pl

+ 12 - 0
ChangeLog

@@ -1,3 +1,15 @@
+2007-04-05  Guillem Jover  <guillem@debian.org>
+
+	* scripts/controllib.pl (get_host_arch): New function.
+	(findarch): Rename to ...
+	(init_substvar_arch): ... this. Use get_host_arch to set the substvar.
+	Fix all callers.
+	(parsedep): Use get_host_arch instead of directly calling
+	dpkg-architecture.
+	* scripts/dpkg-genchanges.pl: Use '$host_arch' instead of '$arch'.
+	(init_substvar_arch): Delay call until after init_substvars.
+	* scripts/dpkg-gencontrol.pl: Likewise.
+
 2007-04-03  Guillem Jover  <guillem@debian.org>
 
 	* dpkg-genchanges.pl: Mark string for translation.

+ 19 - 9
scripts/controllib.pl

@@ -84,11 +84,18 @@ sub capit {
     return join '-', @pieces;
 }
 
-sub findarch {
-    $arch=`dpkg-architecture -qDEB_HOST_ARCH`;
-    $? && &subprocerr("dpkg-architecture -qDEB_HOST_ARCH");
-    chomp $arch;
-    $substvar{'Arch'}= $arch;
+{
+    my $host_arch;
+
+    sub get_host_arch()
+    {
+	return $host_arch if defined $host_arch;
+
+	$host_arch = `dpkg-architecture -qDEB_HOST_ARCH`;
+	$? && subprocerr("dpkg-architecture -qDEB_HOST_ARCH");
+	chomp $host_arch;
+	return $host_arch;
+    }
 }
 
 sub debian_arch_fix
@@ -242,10 +249,8 @@ sub parsesubstvars {
 sub parsedep {
     my ($dep_line, $use_arch, $reduce_arch) = @_;
     my @dep_list;
-    if (!$host_arch) {
-        $host_arch = `dpkg-architecture -qDEB_HOST_ARCH`;
-        chomp $host_arch;
-    }
+    my $host_arch = get_host_arch();
+
     foreach my $dep_and (split(/,\s*/m, $dep_line)) {
         my @or_list = ();
 ALTERNATE:
@@ -347,6 +352,11 @@ sub init_substvars
     $substvar{"dpkg:Upstream-Version"} =~ s/-[^-]+$//;
 }
 
+sub init_substvar_arch()
+{
+    $substvar{'Arch'} = get_host_arch();
+}
+
 sub checkpackagename {
     my $name = shift || '';
     $name =~ m/[^-+.0-9a-z]/o &&

+ 7 - 6
scripts/dpkg-genchanges.pl

@@ -131,7 +131,6 @@ while (@ARGV) {
     }
 }
 
-&findarch;
 parsechangelog($changelogfile, $changelogformat, $since);
 parsecontrolfile($controlfile);
 
@@ -182,11 +181,12 @@ for $_ (keys %fi) {
 	elsif (m/|^X[BS]+-|^Standards-Version$/i) { }
 	else { &unknown(_g('general section of control info file')); }
     } elsif (s/^C(\d+) //) {
+	my $host_arch = get_host_arch();
 	$i=$1; $p=$fi{"C$i Package"}; $a=$fi{"C$i Architecture"};
 	if (!defined($p2f{$p}) && not $sourceonly) {
 	    if ((debian_arch_eq('all', $a) && !$archspecific) ||
-		debian_arch_is($arch, $a) ||
-		grep(debian_arch_is($arch, $_), split(/\s+/, $a))) {
+		debian_arch_is($host_arch, $a) ||
+		grep(debian_arch_is($host_arch, $_), split(/\s+/, $a))) {
 		warning(sprintf(_g("package %s in control file but not in files list"), $p));
 		next;
 	    }
@@ -208,9 +208,9 @@ for $_ (keys %fi) {
 		$f{$_}= $v;
 	    } elsif (m/^Architecture$/) {
 		if (not $sourceonly) {
-		    if (debian_arch_is($arch, $v) ||
-			grep(debian_arch_is($arch, $_), split(/\s+/, $v))) {
-			$v= $arch;
+		    if (debian_arch_is($host_arch, $v) ||
+		        grep(debian_arch_is($host_arch, $_), split(/\s+/, $v))) {
+			$v = $host_arch;
 		    } elsif (!debian_arch_eq('all', $v)) {
 			$v= '';
 		    }
@@ -283,6 +283,7 @@ for $p (keys %p2f) {
 }
 
 &init_substvars;
+init_substvar_arch();
 
 if (!$binaryonly) {
     $sec= $sourcedefault{'Section'};

+ 8 - 6
scripts/dpkg-gencontrol.pl

@@ -103,7 +103,6 @@ while (@ARGV) {
     }
 }
 
-&findarch;
 parsechangelog($changelogfile, $changelogformat);
 parsesubstvars($varlistfile);
 parsecontrolfile($controlfile);
@@ -143,10 +142,12 @@ for $_ (keys %fi) {
         } elsif (m/^Section$|^Priority$/) {
             $spvalue{$_}= $v;
         } elsif (m/^Architecture$/) {
+	    my $host_arch = get_host_arch();
+
             if (debian_arch_eq('all', $v)) {
                 $f{$_}= $v;
-            } elsif (debian_arch_is($arch, $v)) {
-                $f{$_}= $arch;
+	    } elsif (debian_arch_is($host_arch, $v)) {
+		$f{$_} = $host_arch;
             } else {
                 @archlist= split(/\s+/,$v);
 		my @invalid_archs = grep m/[^\w-]/, @archlist;
@@ -156,11 +157,11 @@ for $_ (keys %fi) {
 		                  scalar(@invalid_archs)),
 		              join("' `", @invalid_archs)))
 		    if @invalid_archs >= 1;
-                grep(debian_arch_is($arch, $_), @archlist) ||
+		grep(debian_arch_is($host_arch, $_), @archlist) ||
                     &error(sprintf(_g("current build architecture %s does not".
                                       " appear in package's list (%s)"),
-                                   $arch, "@archlist"));
-                $f{$_}= $arch;
+		                   $host_arch, "@archlist"));
+		$f{$_} = $host_arch;
             }
         } elsif (s/^X[CS]*B[CS]*-//i) {
             $f{$_}= $v;
@@ -191,6 +192,7 @@ for $_ (keys %fi) {
 $f{'Version'} = $forceversion if defined($forceversion);
 
 &init_substvars;
+init_substvar_arch();
 
 for $_ (keys %fi) {
     $v= $fi{$_};