What's Aboriginal Doing?

  1. Aboriginal builds a simple cross compiler, basically the same thing musl-cross does.
  2. Aboriginal builds a statically linked native compiler (not actually Canadian, iirc, as target and host are the same) along with make, basically the same thing meroot does now.
  3. Aboriginal builds a rootfs and kernel for the target, meroot builds a busybox rootfs with a few extra tools.
  4. Aboriginal combines the rootfs, kernel, and native compiler with a bunch of other special scripts and QEMU things to make a bootable system that can build things, which isn't really needed if you're going to boot in or chroot if the arch is close enough.

What Should I Do?

  1. Use musl-cross to create a cross compiler.

What's needed for pkgsrc?

What's pkgsrc?

pkgsrc has tons of buildable software which can be added to a core *nix system in order to do useful things.

Required Infrastructure

In order to create a toolchain, you need:

View boot-output.txt
1 2 3 4 5 6 7 8 9 10
andrew@boomboom:~$ picocom -b 115200 /dev/ttyS0
picocom v1.7
port is : /dev/ttyS0
flowcontrol : none
baudrate is : 115200
parity is : none
databits are : 8
escape is : C-a
local echo is : no
View gist:1762999dc79de352545d
1 2 3 4 5 6 7 8 9 10
5.15. Installing additional software
Using packages from pkgsrc
If you wish to install any of the software freely available for UNIX-like systems you are strongly advised to first check the NetBSD package system, pkgsrc. pkgsrc automatically handles any changes necessary to make the software run on NetBSD. This includes the retrieval and installation of any other packages on which the software may depend.
See the list of available packages
Precompiled binaries are available on the NetBSD FTP server for some ports. To install them the PKG_PATH variable needs to be adjusted in the following way (under the sh(1) shell):
View rfc2616bookmark
1 2
section 3.7.1
View debian install
1 2 3 4 5 6 7 8 9 10
Create boot (sda1), root (sda3), and swap (sda2) partitions, ensure root partition is "bootable"
mkfs.ext4 /dev/sda{1,3}
mkdir /mnt/rootfs
mount /dev/sda3 /mnt/rootfs
mkdir /mnt/rootfs/boot
mount /dev/sda1 /mnt/rootfs/boot
debootstrap --arch amd64 jessie /mnt/rootfs
LANG=C chroot /mnt/rootfs /bin/bash
export TERM=xterm-color
mount none /proc -t proc
View gist:6426296
1 2 3 4
I like the MIT and ISC licenses.  They fit with my desire to not have to jump through hoops to comply with various licenses.  Many companies do this poorly or not at all.  MIT and ISC do keep copyright intact.
For MIT and ISC, it seems compliance would be as easy as putting a copy of the license, compressed or not, into flash memory on an embedded system.  Job done, the license is distributed along with the software.
I do not want to have to comply with the GPL mostly out of laziness.  In a small company, if I'm the one wanting to use GPL code to make my life easier in development then I'm the one who has to make sure the business complies properly.  Even complying with the BSD license means that the product, when sold, must have some documentation included in order to comply.  That's a pain in the butt that many companies don't want to deal with or don't know they need to deal with.
Yes, there's the risk that someone take a project licensed under ISC or MIT and go sell it on their own and not contribute back
View gcc-fail
1 2 3 4 5 6 7 8 9 10
make[2]: Entering directory `/opt/clfs/clfs-armv7/sources/gcc-build/gcc'
gawk -f ../../gcc-4.7.3/gcc/opt-functions.awk -f ../../gcc-4.7.3/gcc/opt-read.awk \
-f ../../gcc-4.7.3/gcc/opth-gen.awk \
< optionlist > tmp-options.h
/bin/sh ../../gcc-4.7.3/gcc/../move-if-change tmp-options.h options.h
echo timestamp > s-options-h
gcc -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Wold-style-definition -Wc++-compat -DHAVE_CONFIG_H -DGENERATOR_FILE -Wl,-rpath,/opt/clfs/clfs-armv7/cross-tools/lib -o build/genconstants \
build/genconstants.o build/read-md.o build/errors.o ../build-x86_64-cross-linux-gnu/libiberty/libiberty.a
build/errors.o: In function `warning':
/opt/clfs/clfs-armv7/sources/gcc-build/gcc/../../gcc-4.7.3/gcc/errors.c:52: undefined reference to `__fputc_unlocked'

Going to musl:

Should we just do the FPU as vfp and say you have to have hard float or do netwinder fpu?

If we go all static, does binutils need --enable-shared?

Something went wrong with that request. Please try again.