# HG changeset patch
# User Rob Landley There's an old saying, "eventually you need to shoot the
+engineers and go into production". Aboriginal Linux can now bootstrap a
+native development environment on an arbitrary target, and build packages
+under the result. There's always more to do, but it does what it set
+out to do. And thus: Aboriginal Linux 1.0 is out,
+based on hg commit
+1192, using Linux 2.6.35, uClibc 0.9.31, and BusyBox 1.17.1. Yes, it's been over five months since the last release. I didn't want to
+ship yet another intermediate release before doing 1.0, but I was trying
+to run out of todo items before shipping. (Yeah, I should know better.
+Sorry for the delay.) The following are release notes, not proper documentation. Proper
+documentation (including a introduction to the whole thing) is the next
+big TODO item. The arm, mips, powerpc, and x86 targets all work. Sparc works statically
+linked, but dynamic linking is still broken. Khem Raj fixed mips64 dynamic
+linking, but the native compiler still doesn't work. The m68k target builds
+again, although QEMU still doesn't emulate it. The sh4 target and big endian
+arm are are still broken. The snapshots page needs updating. The documentation needs updating. The native-build.sh script moved into each system image. This means you
+can now download a system image tarball and a control image, then run a
+native build without any dependencies on the Aboriginal Linux build scripts.
+This script is a wrapper around dev-environment.sh which takes one argument,
+the name of the control image file. The build only puts dev-environment.sh and run-from-build.sh into a
+system image when the system image includes native development tools. This release adds prebuilt binary build control images, generated
+by more/build-control-images.sh and shipped in the
+control-images directory.
+These are squashfs filesystems containing source code and an init script to
+build it and upload it to the host (using the $FTP_SERVER and $FTP_PORT
+variables, set by native-build.sh). If these
+images are loaded into /dev/hdc of the emulated system, the system image's
+init script will mount that on /mnt and run /mnt/init instead of a shell
+prompt, so the build is completely automated. Control images are provided to build hello world, build static dropbear
+and strace binaries, run the busybox test suite, and an in-progress script
+to bootstrapping Gentoo Stage 1 does about the first 2/3 of the job. The root filesystem broke into two stages: simple-root-filesystem just
+contains a simple "defconfig busybox plus uClibc" system, enough to boot
+to a shell prompt. The native-compiler stage is like cross-compiler only
+unprefixed, built to run on the target, and including make, bash, and
+distcc. The root-filesystem stage combines the two into a single root
+filesystem with native development tools. If the root filesystem is mounted read only, the init script will now
+mount a tmpfs on /home if there's no /dev/hdb to provide writeable scratch
+space. Chroot environments should now use Google's 8.8.8.8 nameserver
+by default. The distcc binaries moved out of /bin to the /distcc directory. The "oneit" binary became a standalone program, and uses the / directory
+as PID 1's working directory, allowing you to umount /home if necessary.
+Toybox's "patch" command went upstream into busybox, and busybox's defconfig
+once again supports netcat server mode, so toybox was removed. We're now
+using a defconfig busybox, so configuring it properly is their problem. The kernel configuration got collated to sources/baseconfig-linux (just
+like baseconfig-uClibc), and the various packages were migrated to use
+that. The kernel config is now the baseconfig plus the settings
+entry $LINUX_CONFIG. You can still supply a miniconfig-linux file to
+override this, and some architectures still do that. The ones that have
+been migrated to use a shared baseconfig are a lot more regular now,
+and the differences between architectures broken out and isolated. The build stages were broken up to be more granular. The root-filesystem.sh
+stage now merely collates the output of two previous stages:
+simple-root-filesystem.sh (which produces just enough of a root filesystem
+to boot to a shell prompt, based on uClibc and busybox plus a few init scripts
+and config files), and native-compiler.sh (a portable native toolchain). The system-image.sh stage now generates the dev-environment.sh script.
+It only puts dev-environment.sh and native-build.sh scripts in the tarball
+when NO_NATIVE_COMPILER is blank (and thus the build includes native
+development tools), or if root-filesystem isn't available in which case
+it'll automatically use simple-root-filesystem. Several more package builds were moved to sources/sections. The new "more" subdirectory collects together all the user-runnable
+scripts that aren't build stages. (Many of these were previously in
+sources/more.) New scripts in this directory include: A new cron job is populating the
+snapshots directory. Currently only
+the stable versions, but the unstable versions should wander back in
+eventually. (When the bisectinate and migrate-kernel scripts catch up to
+what they need to do to properly test unstable packages.) More documentation: The "about" page got redone, and the FAQ was fluffed
+out with a new debugging section. Michael S. Zick wrote up mips docs for the
+architecture page, and the build scripts grew even more comments. The control image generation was upgraded so each control image
+source can have its own patch directory and file directory. (This needs
+more work.) Environment variable sanitization: the sanitize_environment function
+unsets any environment variable it doesn't recognize, either from a whitelist
+or from config. Clearing all unrecognized environment variables insulates
+the build from some of the strage environments out there. To disable this
+behavior, export NO_SANITIZE_ENVIRONMENT=1. New config variables:News
+September 5, 2010
+Targets
+
+System image updates
+
+Control Images
+
+Root filesystem improvements
+
+Build scripts
+
+
+
+
+Website
+
+General Infrastructure
+
+
+
ccwrap improvements: Handle unexported $PATH better. It doesn't need to +search $PATH when argc[0] is a path (either absolute or relative to the current +directory). Also use Scrt1.o when building a shared library. (Oddly this +never caused a problem before, but do the right thing anyway.)
+ +Upgrades to BUILD_STATIC: it now takes a comma separated list of packages, +with the special value "all" to build everything static, and "none" to build +nothing static. The default is to build static versions of busybox and the +toolchain packages (gcc, binutils, make, and ccwrap) both due to the increased +performance this provides under qemu (which has to repeatedly re-translate +executable code pages that modify themselves, such as when dynamic linking +patches per-process jump addresses), and also due to the increased portability +this provides the native compiler tarball.
+ +(The host-tools stage always builds dynamic packages, because the glibc +maintainer has a personal dislike of static linking, meaning glibc's static +linking support (in addition to creating 400k "hello world" binaries) is both +broken[LINK] and deprecated[LINK]. Some distros have even taken to breaking +out the *.a format libraries used for static linking into a separate package, +and not installing them by default. The host-tools stage now tests for this, +and refuses to continue in a dynamic-only build environment unless you set +BUILD_STATIC=none. You can rebuild under the resulting target system to +natively compile static binaries, which uClibc supports quite well, but you +can't generate them from the host.)
+ +The old FROM_ARCH is now HOST_ARCH, and the infrastructure using it +(cross-compiler.sh and native-compiler.sh) has been cleaned up. The +HOST_UTILS variable was also removed, that's now built for the full +cross and native compilers, but not the simple cross compiler.
+ +The more/smoketest.sh file no longer creates hdb.img.
+ +The host-tools stage has been upgraded to work around the utter stupidity of +Ubuntu 10.04, which turned "gcc" into a perl script. (Yes really. No, I don't +know what they were smoking.)
+ +Build zlib in host-tools (for squashfs) and in static-tools for dropbear's +-C. This is necessary for reproducing the build under a system-image, because +the default system image type (squashfs) requires zlib to build.
+ +Update the command prompt in system images to show the amount of +parallelism available via distcc. (When it says 1 you haven't got +distcc, and when it says a number greater than that you have.) +The prompt now looks like:
++ +(powerpc:4) /home #
The make, bash, and distcc builds are now part of the native-compiler stage +(and their build scripts moved to sources/sections). This means that a native +toolchain now includes make, because it's hard to build make without make. +This stage also records the uClibc and linux config files for posterity.
+ +The build was weaned off of toybox. (Broke out oneit, sent patch upstream +to busybox, and got netcat fixed in defconfig so native-build.sh could use +it.)
+ +Several small bugfixes and cosmetic cleanups. For example, we now delete +empty build/temp-* directories when we're done with them, and several +config options such as NO_NATIVE_COMPILER and NO_CLEANUP should be more +reliable now. Don't build hello-dynamic on a BUILD_STATIC=all system. +Clean up debris files the kernel's headers_install leaves lying around. +Minor upgrades to FORK=1 support, and QUIET is now part of FORK instead +of a separate control. Generating a package manifest should no +longer produce error messages. Empty temp directories get deleted on the +way out. Better support for building older tools as alt-packages (tested +binutils 2.14 and gcc 3.4). Comment out default UNSTABLE= URLs in download.sh, +supply your own if you want that. Binutils build now honors existing $CFLAGS +(if any). The dienow error message goes to stderr. More reliably track +package cache state when patches fail to apply. Simplify system-image +build (don't try to package root filesystem and build kernel in parallel +anymore, squashfs and make both have internal SMP support). BUILD_VERBOSE +is now more verbose. Reliability improvement for record-commands.sh. +New shell functions blank_workdir and extract_package. Consistently +use name-name in scripts and name_name in functions.
+ +It's been a long 5 months...
+ +The name of the project is changing from Firmware Linux to Aboriginal Linux. The new URL is "http://impactlinux.com/aboriginal".