tags 530595 + patch
thanks

On Tue, May 26, 2009 at 10:33:19AM +0200, Philipp Kern wrote:
> Due to a change in dpkg-source some packages don't just end up
> with arch:any anymore if they contain arch-specific binary
> packages and an arch:all, but instead they end up with
> something like "i386 all".  If -i is passed to quinn-diff it
> ignores such packages which is wrong.

I've attached a patch that fixes the issue for me.  The solution is to
ignore a package with "all" in the architecture list only if the current
architecture (specified by --architecture or detected from the Packages
file) isn't also in the architecture list.

-- 
+----------------------------------------------------------+
| John Wright <[email protected]>                         |
| HP Mission Critical OS Enablement & Solution Test (MOST) |
+----------------------------------------------------------+
>From 10d1a7f82c924aaf2c3cc4517e0ca354d251cf68 Mon Sep 17 00:00:00 2001
From: John Wright <[email protected]>
Date: Thu, 15 Oct 2009 14:24:12 -0600
Subject: [PATCH] Be more careful with --ignore-arch-all

Historically, dpkg-source would output "Architecture: any" on any source
package that built binaries for more than one architecture.  As of
dpkg-dev version 1.15.1, it spells out each architecture, so we end up
with architecture lines like

  Architecture: all amd64 i386 ia64

for a package that builds arch-all binaries, plus architecture-specific
binaries on amd64, i386, and ia64, but not on any other architectures.

This patch changes the ignore_arch_all logic in parse_sources() to
ignore a package with "all" in the architecture list only if it also
doesn't find the current architecture (either detected in the given
Packages file or specified by --architecture) in the architecture list.

Closes: #530595
---
 src/parse_sources.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/parse_sources.c b/src/parse_sources.c
index 0006e8c..cb7904f 100644
--- a/src/parse_sources.c
+++ b/src/parse_sources.c
@@ -85,7 +85,8 @@ parse_sources (sources_info *source)
 	}
 
       /* If we're ignoring 'Architecture: all' packages, check this isn't */
-      if (ignore_arch_all && in_arch_list(source->architecture,"all"))
+      if (ignore_arch_all && in_arch_list(source->architecture, "all")
+	  && !in_arch_list(source->architecture, packages_architecture))
 	{
 	  debug (debug_sources, "parse_sources: ignoring 'Architecture: all' source packages, and %s is ('%s').", source->name, source->architecture);
 	  continue;
-- 
debian.1.6.3.3.1.7.g944a7

Reply via email to