Web lists-archives.com

Re: buildd and buildbot

On Fri, May 17, 2019 at 03:30:45AM -0400, Gene Heskett wrote:
> Greetings folks;
> Thinking of building a local copy of a project with a cross compiler to 
> make rpi (armhf) stuffs on this amd64 box, I installed buildd and 
> buildbot and some usefull looking friends yesterday, and in about 2 
> hours lost the usb services totally, twice having to reboot with the 
> reset button.

This is a bit like trying to peel an egg with an excavator [1]. Whereas
possible in principle, it'll take some skill.

There are several ways to skin that cat, but whenever your build
machine's kernel is not too far away from your target's, dpkg-buildpackage,
debootstrap and schroot are your friends.

This is a list of the packages you might need for cross-building a
package (assuming the package authors have done their stuff right)

  - schroot
    This is a (somewhat friendlier) chroot wrapper. You do your
    build in a chroot: your target architecture's build is going
    to want packages which possibly conflict with your installed
    ones (yes, there's multiarch, so you can have ARM libc installed
    side by side with AMD64 libc, but some packages (Gtk, I'm
    looking at you!) are not multi-arch capable.

  - debootstrap
    Installs a "base" Debian system in the (above) chroot (this will
    be an ARM Debian in your case)

  - binfmt-misc
    This is a little nasty thing which looks at a binary and
    says "oh, this looks like ARM: let's call qemu on it". Kinda
    like the shebang line thingy on steroids.

  - qemu-user-static
    Somehow the ARM stuff in your (build) chroot has to be run.
    That's qemu's part. Note that the schroot wrapper has facilities
    to map the "right" emulator (via a bind-mount) into the chroot.

A recommended package would be an apt cache, since you'll be
building up many base systems with debootstrap to just tear them
down. Downloading all those packages time and again gets boring
soon (unless your Internet connection is faster than your disk,
that is). Apt-cacher-ng seems a good choice.

Alternatively there are pbuilder (aka "personal builder") and
sbuild, from which I'd totally start with pbuilder, which is
easier for quick and dirty jobs. Sbuild is more "official"
(let's call it the "pro" version), so if you become a Debian
developer, you should know this one too. But basically they do
the process outlined above, chroot and all. I have the impression
one has to understand the process beneath that anyway.

Buildd is the automatic machinery Debian uses to (re-)build
packages as new versions arrive, so that is again one floor
above sbuild.

Hope that gets you started.

-- t

Attachment: signature.asc
Description: Digital signature