Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Dec 2014 17:56:03 -0800
From:      Sean Bruno <sbruno@ignoranthack.me>
To:        Jeremy Brown <mischif@mischivous.com>
Cc:        freebsd-embedded@freebsd.org
Subject:   Re: Help Compiling armv6 Ports from x64
Message-ID:  <549B6EB3.90204@ignoranthack.me>
In-Reply-To: <CAGL1beC5RneVCuw%2BbczhM5_szfDe-FZbtqCXfummv9FySA_aJA@mail.gmail.com>
References:  <CAGL1beBOVDRh-7kA8QnG6qkm9VH3EM7YSEhtMhrgTU9mMUYfQw@mail.gmail.com> <549B6584.3000608@ignoranthack.me> <CAGL1beC5RneVCuw%2BbczhM5_szfDe-FZbtqCXfummv9FySA_aJA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
-----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 
> <https://github.com/kientzle/crochet-freebsd>; 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
> <sbruno@ignoranthack.me> 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 
>>>> <http://www.cruwe.de/?p=78>, 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 <http://blog.ignoranthack.me/?p=221>, 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
> <listofports>
> 
> 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-----



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?549B6EB3.90204>