Package: sbuild
Version: 0.60.8-1
Severity: wishlist

Hello,

  I would love sbuild to gain the ability to handle cross builds. What is a 
cross build? Well, it is a way to generate a binary which it is meant to run on 
a foreign architecture. For cross builds you need cross tools, which are not 
yet in Debian archive, but those are available via emdebian.org repositories. 
So basically, you need to add
  deb http://emdebian.org squeeze main
into your sources.list, update and install, for example, 
linux-libc-dev-armel-cross, libc6-dev-armel-cross, gcc-4.3-arm-linux-gnueabi, ..
Once you got the cross toolchain in place, you can try to cross compile hello 
application passing -a$arch option to dpkg-buildpackage and the package must 
support cross building, usually by adding a three liner [0] to the package 
build system file.

(sid_amd64)zumbi@cat:/tmp/hello-2.6$ dpkg-buildpackage -us -uc -rfakeroot 
-aarmel
[...]
chown -R root:root debian/tmp
chmod -R u+w,go=rX debian/tmp
dpkg --build debian/tmp ..
dpkg-deb: building package `hello' in `../hello_2.6-1_armel.deb'.
 dpkg-genchanges  >../hello_2.6-1_armel.changes
dpkg-genchanges: including full source code in upload
 dpkg-source --after-build hello-2.6
dpkg-buildpackage: full upload (original source is included)

When trying sbuild to do it for me,

$ sudo sbuild -d sid_amd64 --debbuildopt="-aarmel" hello_2.6-1
[...]
chmod -R u+w,go=rX debian/tmp
dpkg --build debian/tmp ..
dpkg-deb: building package `hello' in `../hello_2.6-1_armel.deb'.
 dpkg-genchanges -B >../hello_2.6-1_armel.changes
dpkg-genchanges: arch-specific upload - not including arch-independent packages
dpkg-genchanges: binary-only upload - not including any source code
 dpkg-source --after-build hello-2.6
dpkg-buildpackage: binary only upload (no source included)
Build finished at 20110121-1105
Can't find hello_2.6-1_amd64.changes -- can't dump info
  Package contents
  Finished
Built successfully
Purging /srv/chroot/sid_amd64/build/root-hello_2.6-1-amd64-D9WaOO
Finished at 20110121-1105
Build needed 00:00:12, 4812k disc space

Sbuild builds the package but it is unable to take it out of the chroot, 
because it is unable to find the right changes file for the right architecture.
"Can't find hello_2.6-1_amd64.changes -- can't dump info"

Doing a $nasty hack on Build.pm we are able to follow *_armel.changes file.

$ sudo vi /usr/share/perl5/Sbuild/Build.pm +1944
# Figure out chroot architecture
sub chroot_arch {
    my $self = shift;
    my $nasty = "armel";
^^^^^
    my $pipe = $self->get('Session')->pipe_command(
        { COMMAND => [$self->get_conf('DPKG'),
                      '--print-architecture'],
          USER => $self->get_conf('USERNAME'),
          CHROOT => 1,
          PRIORITY => 0,
          DIR => '/' }) || return undef;

    chomp(my $chroot_arch = <$pipe>);
    close($pipe);

    die "Can't determine architecture of chroot: $!\n"
        if ($? || !defined($chroot_arch));

    return $nasty;
^^^^^
 #   return $chroot_arch;
}

It seems that sbuild triggers dpkg --print-architecture to find out chroot 
architecture, but when doing cross it should try to follow dpkg-architecture's 
DEB_HOST_ARCH.

Would it be possible to modify Build.pm in some way, either calling 
dpkg-architecture or autodetecting -a$arch has been passed and it should follow 
other architecture changes file?

Have a very nice day!

[0] http://wiki.debian.org/EmdebianGuide#Addingcross-builddetection

Best regards,
-- 
 Héctor Orón

-- System Information:
Debian Release: 6.0
  APT prefers unstable
  APT policy: (700, 'unstable'), (600, 'testing'), (500, 'stable'), (1, 
'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-5-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages sbuild depends on:
ii  adduser                       3.112+nmu2 add and remove users and groups
ii  libsbuild-perl                0.60.8-1   Tool for building Debian binary pa
ii  perl                          5.10.1-17  Larry Wall's Practical Extraction 
ii  perl-modules                  5.10.1-17  Core Perl modules

Versions of packages sbuild recommends:
ii  debootstrap                   1.0.26     Bootstrap a basic Debian system
ii  fakeroot                      1.14.5-1   Gives a fake root environment

Versions of packages sbuild suggests:
pn  deborphan                     <none>     (no description available)
ii  wget                          1.12-2.1   retrieves files from the web

-- no debconf information



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to