From owner-freebsd-embedded@FreeBSD.ORG Thu Dec 25 01:17:01 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 6F0AC27B for ; Thu, 25 Dec 2014 01:17:01 +0000 (UTC) Received: from mail.ignoranthack.me (ignoranthack.me [199.102.79.106]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 370282C84 for ; Thu, 25 Dec 2014 01:17:00 +0000 (UTC) Received: from [192.168.200.211] (unknown [50.136.155.142]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: sbruno@ignoranthack.me) by mail.ignoranthack.me (Postfix) with ESMTPSA id D1BCF192A3B; Thu, 25 Dec 2014 01:16:53 +0000 (UTC) Message-ID: <549B6584.3000608@ignoranthack.me> Date: Wed, 24 Dec 2014 17:16:52 -0800 From: Sean Bruno Reply-To: sbruno@freebsd.org User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 MIME-Version: 1.0 To: freebsd-embedded@freebsd.org, mischif@mischivous.com Subject: Re: Help Compiling armv6 Ports from x64 References: In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit 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 01:17:01 -0000 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 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 > > > , here > > > , here , here > ), > > 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 iQF8BAEBCgBmBQJUm2WBXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwAAoJEBIB78oecn5kDx0H/0UnXCslpqnT1JrHDCuN+trS IvC2eMIaaLa2jZ/6BM6FVqmMdRpt+sGnToZSL/3iaFyLQhgadOqojBtsuna8W2rd jagvmhQaZtG0TOfCBPI6B0LDAZMwzAcczgSc+ta+39rU3sGrI3u9Cu7aUf6xWOJZ GMmbvH3idiLLcyVzwKSL2D8B3y7mg1E+cNB5y61nNxpnrIsQNLmaASjikaJXOif4 8AV7/yzq5tLkeiBkxjnsq0t3UBCUh/omMwGwQn6jXD8qa4JfjtFWFN23hpVyPBpi jfL6IycR7JauqXK1JQzYHiNCgGD8JthNNCwp4UQvvDfY8w/0cwFwXPdzy4qedYc= =lkbv -----END PGP SIGNATURE-----