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

Reply via email to