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

