Package: dpkg-dev Version: 1.10.28 Severity: normal File: /usr/bin/dpkg-genchanges Tags: patch
Hi, due to the huge demand of OpenOffice.org for amd64 I finaly spend some time devising a simple way to produce 32 bit amd64 debs. Since building a 32bit OOo on amd64 directly is out of the question (given the size of Build-Depends and hacks needed) I resurected a little trick Debian-amd64 used in the beginning for e.g. lilo. The trick is to produce a full set of i386 and amd64 debs when OOo is being build on i386 and include the amd64 debs in debian/files along with the rest. The only problem with this approach is that dpkg-genchanges needs two small changes for this to work: 1) Keep a list of the archs of packages in debian/files This is already done for non-DEB files and just needs to be extended to debs as well. 2) Iterate over all archs and pick the per architecture package-to-file entry when comparing the package to the control file. A patch for this is attached. MfG Goswin -- System Information: Debian Release: 3.1 Architecture: amd64 (x86_64) Kernel: Linux 2.6.8-frosties-2 Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968) Versions of packages dpkg-dev depends on: ii binutils 2.15-6 The GNU assembler, linker and bina ii cpio 2.5-1.3 GNU cpio -- a program to manage ar ii make 3.80-9 The GNU version of the "make" util ii patch 2.5.9-2 Apply a diff file to an original ii perl [perl5] 5.8.4-8sarge3 Larry Wall's Practical Extraction ii perl-modules 5.8.4-8sarge3 Core Perl modules -- no debconf information
--- dpkg-1.13.16.orig/scripts/dpkg-genchanges.pl 2006-01-23 04:50:40.000000000 +0000 +++ dpkg-1.13.16/scripts/dpkg-genchanges.pl 2006-03-10 23:05:30.989980792 +0000 @@ -136,6 +136,7 @@ &warn("duplicate files list entry for file $1 (line $.)"); $f2sec{$1}= $5; $f2pri{$1}= $6; + push(@archvalues,$4) unless !$4 || $archadded{$4}++; push(@fileslistfiles,$1); } elsif (m/^([-+.0-9a-z]+_[^_]+_([-\w]+)\.[a-z0-9.]+) (\S+) (\S+)$/) { # A non-deb package @@ -176,7 +176,10 @@ } } else { $p2arch{$p}=$a; - $f=$p2f{$p}; + for $one_arch (split(/\s+/, $a)) { + next if (!defined($p2f{"$p $one_arch"})); + $f=$p2f{"$p $one_arch"}; + #$f=$p2f{$p}; if (m/^Description$/) { $v=$` if $v =~ m/\n/; if ($f =~ m/\.udeb$/) { @@ -208,6 +210,7 @@ } else { &unknown("package's section of control info file"); } + } } } elsif (s/^L //) { if (m/^Source$/i) {