From owner-freebsd-embedded@FreeBSD.ORG Thu Dec 25 15:17:55 2014 Return-Path: Delivered-To: freebsd-embedded@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 921FD4D4 for ; Thu, 25 Dec 2014 15:17:55 +0000 (UTC) Received: from mail-la0-f41.google.com (mail-la0-f41.google.com [209.85.215.41]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 23D3C1FF8 for ; Thu, 25 Dec 2014 15:17:54 +0000 (UTC) Received: by mail-la0-f41.google.com with SMTP id hv19so8033613lab.0 for ; Thu, 25 Dec 2014 07:17:47 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=L9zA46cgm1X9uGcJwoCaxtxn7aVbnV9PweTTGtTvems=; b=amIkqPAPkJi3lux0AXGHy0WJCj+PwFD6kHzbXOMuK8OCbIaILlhUEjAyuXh3CQUnI+ PbGBqXv1aZrx0PtEpoO+J/gJXUvSKS6KjVnQ0G3J7ASUx6rR8acz6N2zMzhTbOvk8WWI +8LdYDki0DewyHjsyof9ubbIUh+Eh7/DWBIqsp+wjfSVTHLtp/+arqPiZPmoX8QvNgeN f5Ue9Ow5xH4nqE6ihRvKlceQfhiHdQIH8Vms9+TcMSxk7m0bRmZ+Di5TcDUArqWTYcAK VSx8suciRH+eR+H856zn8up4MsA5Hii270rCRJZEVi6StnqBx2lX8LPpWYZOT9VSbixB 3Kgw== X-Gm-Message-State: ALoCoQk6KZ8SmIf8hVNlgrq4aaSm00+gBjdYgIqqibR32cxGt5hWSQPV/13/zTCdOQWIt+09+BpO X-Received: by 10.152.88.44 with SMTP id bd12mr38743809lab.88.1419520667354; Thu, 25 Dec 2014 07:17:47 -0800 (PST) MIME-Version: 1.0 Received: by 10.112.142.198 with HTTP; Thu, 25 Dec 2014 07:17:05 -0800 (PST) X-Originating-IP: [74.60.193.70] In-Reply-To: <549B6EB3.90204@ignoranthack.me> References: <549B6584.3000608@ignoranthack.me> <549B6EB3.90204@ignoranthack.me> From: Jeremy Brown Date: Thu, 25 Dec 2014 10:17:05 -0500 Message-ID: Subject: Re: Help Compiling armv6 Ports from x64 To: Sean Bruno Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.18-1 Cc: freebsd-embedded@freebsd.org X-BeenThere: freebsd-embedded@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Dedicated and Embedded Systems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 25 Dec 2014 15:17:55 -0000 Sean, It seems the binmiscctl command was the last part of the puzzle, now everything's working. But I have one last issue I'm trying to solve: Now I'm trying to use the x64 cross compiler instead of emulating through the arm one. I've copied my toolchain over and I've set up variables for CC, et al to refer to the x64 versions in /root/.profile, but I can't get make to pick up on them. Is there something else I need to do? -Jeremy On Wed, Dec 24, 2014 at 8:56 PM, Sean Bruno wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA512 > > On 12/24/14 17:29, Jeremy Brown wrote: > > Sean, > > > > Does poudriere work with previously-established roots or does it > > have to generate its own? I'm using crochet > > to create my image, > > so I can do whatever I want to the filesystem it creates and have > > it apply to the image. > > > > Poudirere's main purpose is to create a package repo for remote > installation. > > So, I'm guessing that you don't want that. > > What you "want" is the magical binmiscctl command on your host system > and then copy /usr/local/qemu-user-arm into your jail. > > Modify the binmiscctl(8) command I pointed you at below to point to > /usr/local/bin/qemu-user-arm. > > Then you should be able to "chroot" into your existing chroot and it > will act like an arm box. It will be slow, but currently there's no > reliable way that I am aware of to get what you and other need done. > > > sean > > > Also, will poudriere actually install a package and modify > > necessary files to let the system know a port is installed, or does > > it only create the package and leave it to me to install? > > > > -Jeremy > > > > > > > > On Wed, Dec 24, 2014 at 8:16 PM, Sean Bruno > > wrote: > > > > On 12/24/14 16:34, Jeremy Brown wrote: > >>>> I have a VM running FreeBSD 10.1 x64 that I'm trying to use > >>>> to create an image that will run on a Raspberry Pi. I've > >>>> managed to get the base system working, but I can't figure > >>>> out how to compile ports for the image. I know my > >>>> cross-compilation toolchain is working, as I can build the > >>>> kernel and world without issue. > >>>> > >>>> For sake of example, say my arm root is at /tmp/rootfs, my > >>>> toolchain is at /usr/armv6-freebsd/usr/bin and some other > >>>> assorted cross-compilation items are at > >>>> /usr/obj/armv6-freebsd. > >>>> > >>>> Some of the commands I have tried to build a port are: > >>>> > >>>> PATH=/path/to/toolchain:${PATH} make TARGET=arm > >>>> TARGET_ARCH=armv6 install (this typically fails during > >>>> compilation) > >>>> > >>>> PATH=/path/to/toolchain:${PATH} make TARGET=arm > >>>> TARGET_ARCH=armv6 configure install (this typically fails > >>>> during configuration, the error I get is something along the > >>>> lines of "cannot read C-compiled file"; in addition the > >>>> configure script never notices that I am trying to > >>>> cross-compile) > >>>> > >>>> PATH=/path/to/toolchain:${PATH} make > >>>> CONFIGURE_ARGS="--host=armv6-freebsd" configure install > >>>> (this typically fails during compilation for varying reasons, > >>>> but at least it'll recognize that I'm cross-compiling; > >>>> including TARGET and TARGET_ARCH makes no difference) > >>>> > >>>> make TARGET=arm TARGET_ARCH=armv6 DESTDIR=/tmp/rootfs > >>>> install (this was what I originally tried, when the chroot > >>>> kicked in it would try to run the ARM version of /bin/sh; as > >>>> the VM is x64 this would always give an exec format error > >>>> before failing) > >>>> > >>>> make TARGET=arm TARGET_ARCH=armv6 DESTDIR=/tmp/rootfs > >>>> CHROOTED=no install (this would seem to work, but would > >>>> install the port to the VM instead of the filesystem for the > >>>> image, and in addition would be compiled x64 instead of > >>>> armv6) > >>>> > >>>> There are others, but these are the ones I can remember the > >>>> best right now. I understand there won't be any precompiled > >>>> ports, and I don't want to have to build my desired ports on > >>>> the Pi itself (despite the fact that doing so would be > >>>> agonizingly slow, the space required to store the ports tree > >>>> and compile what I need would explode the size of the image > >>>> from ~400MB to > >>>>> 2GB). > >>>> > >>>> I've tried many different websites (see here > >>>> , here < > > > http://allskyee.blogspot.com/2014/02/freebsd-10-ports-cross-compile-amd64-to.html > >>>> > >>>> > >>>> > > > > > , here > >>>> < > > > http://ray-freebsd.blogspot.kr/2011/09/cross-compiling-ports-for-freebsd.html > >>>> > >>>> > >>>> > > > > > , here , here > >>>> < > > > http://lists.freebsd.org/pipermail/freebsd-current/2012-November/037469.html > >>>> > > > ), > >>>> > >>>> > > but none of their methods have resulted in a successful > > compilation. > >>>> > >>>> Do you know of a method to compile armv6 ports on an x64 > >>>> machine, or can you direct me to someone who might? > >>>> > >>>> -Jeremy > > > > At this point, poudriere can build packages by default. > > > > If you want armv6 packages for RPi or BBB, get poudriere 3.1 on > > your system with qemu-bsd-user. > > > > Setup this arcane binmiscctl(8) command: /usr/sbin/binmiscctl add > > armv6 --interpreter "/usr/local/bin/qemu-arm" \ --magic > > > > > "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00" > > > > > \ > > --mask > > > > > "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff" > > > > > \ > > --size 20 --set-enabled > > > > > > That is the command that will redirect execution of armv6 binaries > > to qemu-bsd-user. > > > > Build an armv6 jail with: > > > > poudriere jail -c -j armv6 -m svn -v head -a arm.armv6 -x > > > > And build your ports with poudriere via: poudriere bulk -j amrv6 > > > > > > You can fetch packages from the freebsd cluster arm builder if you > > wish as well: > > > > http://chips.ysv.freebsd.org/packages/11armv6-11armv6/ > > > > Sean > > > > > > > >> > > > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2 > > iQF8BAEBCgBmBQJUm26wXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w > ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw > MDAwMDAwMDAwMDAwMDAwAAoJEBIB78oecn5kcoAH/RqUaEJdWYo3hjimFzaTWlR6 > v6DzcuV3agbc5pf47JU7OszU2BQC7oSlRKfgL3yPqosK6gVGYwr5ZxIXet5YKvnG > aaLQ6b++7PjXm9WvLRufShYusO1QVuwa5Witj3zAKbjgC3F6e0qFyRdX/wbOpnFW > 871Jc/QdxNrgHWw2o31m3GsVi4OtondB2Fifz7us9bSYNFn84S3pz73Nf8DV9KtS > HXG42qDGNFz7Ov/k9apDC1Jr1ejMhfP3sX9Jnsg1z2vqDHZC2KuB6fGOEvL9n1DJ > 45R2H5UYgXH/T+rJ36lrTkVxVSvwt+s+oEIdDDFbOsGJx/rqP79adrAcWUzWD/I= > =uOZl > -----END PGP SIGNATURE----- >