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. Cheers -- t
signature.asc
Description: Digital signature