# HG changeset patch # User Rob Landley # Date 1283665624 18000 # Node ID 479bcbb2775eacdfab220070cd8e57ce0be8711b # Parent 75ecd2cf6068bb94d5a09f111c9ad2ade14c0c30 Screw it: cut a release and fix it all up later. diff -r 75ecd2cf6068 -r 479bcbb2775e www/news.html --- a/www/news.html Sun Sep 05 00:08:47 2010 -0500 +++ b/www/news.html Sun Sep 05 00:47:04 2010 -0500 @@ -6,6 +6,254 @@

News


+

September 5, 2010

+

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.

+ +

Targets

+ +

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.

+ +

System image updates

+ +

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.

+ +

Control Images

+ +

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.

+ +

Root filesystem improvements

+ +

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.

+ +

Build scripts

+ +

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:

+ + + +

Website

+ +

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.

+ +

General Infrastructure

+ +

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:

+ + + +

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...

+ +

May 2, 2010

The name of the project is changing from Firmware Linux to Aboriginal Linux. The new URL is "http://impactlinux.com/aboriginal".