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) {