From rlandley at parallels.com Wed Mar 2 21:44:49 2011
From: rlandley at parallels.com (Rob Landley)
Date: Wed, 2 Mar 2011 15:44:49 -0600
Subject: [Aboriginal] Fail to patch uClibc
In-Reply-To:
References:
Message-ID: <4D6EBA51.6040400@parallels.com>
Sorry for the delay, last Wednesday I got suddenly informed I was going
to Scale in LA over the weekend, where I got Con Crud from which I'm
still recovering.
On 02/27/2011 05:42 PM, Ken Burk wrote:
> Rob,
>
> I know your busy with your day job so please no rush on this but the
> latest as of today fails to patch uClibc when building the cross
> compiler.My host os is Knoppix 6.4.3 dvd(usb boot) which built
> fd341b09cc27.tar.bz2 without problems as well as your lfs-bootstrap for
> i686 and armv5l (thanks for the lfs it is awesome).I am posting the
> output below from when it started to error.
Current -hg is in flux at the moment because I'm trying to switch to the
NPTL version of uClibc.
It doesn't work.
For that matter, the pthreads stuff doesn't work for half the platforms
in the current -rc, but I've decided that debugging _that_ is a waste of
time because the point of upgrading is to switch to NPTL. Alas, I
haven't gotten much time to work on it recently (see "Scale", above).
> Ken
>
>
>
> Applying
> /media/sda2/root/tech2k/aboriginal-29e1df07e99a/sources/patches/uClibc-backport-humor-udev.patch
> patching file libc/sysdeps/linux/common/bits/socket.h
That patch is backporting stuff, and now that I've upgraded the uClibc
tarball to -rc2 the change is already in there. Probably I deleted it
locally out of my patches directory but forgot to commit that. (I'm
being a bit tentative about ripping up my config for -rc2 in a way that
makes it hard to revert because I would like to do a release this month
and I'm not sure -rc2 is going to be in it.)
You can just delete that patch, but the _bigger_ problem is that
uClibc-rc2 is flaky. So being able to patch it doesn't guarantee it'll
do anything useful at present.
I should probably just revert the download.sh snippet that's using -rc2
and move back to the last release version, but I've been trying to force
myself to test the current stuff and get it to WORK. (It's fiddly, in a
bunch of different ways. Currently I have to switch from sjlj
exceptions to the dwarf stuff because they only implemented support for
one codepath. Sigh.)
Rob
1299102289.0
From alanpost at sunflowerriver.org Mon Mar 14 13:36:21 2011
From: alanpost at sunflowerriver.org (Alan Post)
Date: Mon, 14 Mar 2011 07:36:21 -0600
Subject: [Aboriginal] /bin/sh error compiling distcc
In-Reply-To: <20110314130503.GA40390@alice.local>
References: <20110314130503.GA40390@alice.local>
Message-ID: <20110314133621.GA40624@alice.local>
On Mon, Mar 14, 2011 at 07:05:03AM -0600, Alan Post wrote:
> I'm trying to build aboriginal 1.0.1 inside the i486 system image.
> The packages download and I get to the next stage, building host
> tools.
>
> busybox appears to compile fine. I'm getting the following error
> message tryitg to build distcc:
>
> === Building host-tools
> === distcc (host host-tools)
> Snapshot 'distcc'...
> configure: WARNING: you should use --build, --host, --target
> configure: WARNING: invalid host type: "--with-included-popt--disable-Werror"
> checking build system type... Invalid configuration `"--with-included-popt--disable-Werror"': machine `"--with-included-popt--disable' not recognized
> configure: error: /bin/bash ./config.sub "--with-included-popt--disable-Werror" failed
>
> Exiting due to errors (host host-tools distcc)
>
>
> Somewhere in the configure stage for distcc, the two configure options:
> '--with-included-popt' and '--disable-Werror' are being joined together.
>
> Going into the host-temp/distcc build directory, I try running the command
> by hand. I get the same error message. This suggests to me that I
> have a bug in /bin/sh in busybox.
>
> If I modify the build script to call "/bin/bash ./configure ..." this problem
> goes away. I can certainly modify the configure line for each
> invocation to configure. Given that the system image is a squashfs,
> I can't see any way to change either the /bin/sh symlink or a way to
> tell busybox that in should execute /bin/bash when it is invoked as
> sh.
>
> Have I found the best workaround? I'd also like to find and fix the
> underlying issue; that will require more testing on my part; I want
> to be able to compile the whole system first.
>
> -Alan
After adding /bin/bash to all of the ./configure lines in host-tools.sh,
I get a little further. This time I error out building e2fsprogs:
...
On linux-gnu systems, root_prefix defaults to ''
On linux-gnu systems, prefix defaults to /usr
checking whether linker accepts -static... yes
configure: creating ./config.status
sh: syntax error at 'S_is_set[key]'
Exiting due to errors (host host-tools e2fsprogs)
real 2m38.058s
user 1m50.739s
sys 0m37.634s
I'm not sure what I'm seeing here. I believe the 'S_is_set[key]' is awk
code, and I surmise from that that the awk from busybox is not
compiling some expression correctly. But the line begins with 'sh: ',
so maybe what is going on is that some awk code is accidentally
being interpreted by the shell.
Now that I think about it, that could be what is going on. It could
be that the config.status program is generated and executed not by bash,
but by the busybox sh, and it has encountered another expression it can't
parse.
Alas, I'm not sure now how best to work around it. Suggestions?
-Alan
--
.i ma'a lo bradi ku penmi gi'e du
1300109781.0
From alanpost at sunflowerriver.org Mon Mar 14 13:05:03 2011
From: alanpost at sunflowerriver.org (Alan Post)
Date: Mon, 14 Mar 2011 07:05:03 -0600
Subject: [Aboriginal] /bin/sh error compiling distcc
Message-ID: <20110314130503.GA40390@alice.local>
I'm trying to build aboriginal 1.0.1 inside the i486 system image.
The packages download and I get to the next stage, building host
tools.
busybox appears to compile fine. I'm getting the following error
message tryitg to build distcc:
=== Building host-tools
=== distcc (host host-tools)
Snapshot 'distcc'...
configure: WARNING: you should use --build, --host, --target
configure: WARNING: invalid host type: "--with-included-popt--disable-Werror"
checking build system type... Invalid configuration `"--with-included-popt--disable-Werror"': machine `"--with-included-popt--disable' not recognized
configure: error: /bin/bash ./config.sub "--with-included-popt--disable-Werror" failed
Exiting due to errors (host host-tools distcc)
Somewhere in the configure stage for distcc, the two configure options:
'--with-included-popt' and '--disable-Werror' are being joined together.
Going into the host-temp/distcc build directory, I try running the command
by hand. I get the same error message. This suggests to me that I
have a bug in /bin/sh in busybox.
If I modify the build script to call "/bin/bash ./configure ..." this problem
goes away. I can certainly modify the configure line for each
invocation to configure. Given that the system image is a squashfs,
I can't see any way to change either the /bin/sh symlink or a way to
tell busybox that in should execute /bin/bash when it is invoked as
sh.
Have I found the best workaround? I'd also like to find and fix the
underlying issue; that will require more testing on my part; I want
to be able to compile the whole system first.
-Alan
--
.i ma'a lo bradi ku penmi gi'e du
1300107903.0
From rlandley at parallels.com Mon Mar 14 23:36:00 2011
From: rlandley at parallels.com (Rob Landley)
Date: Mon, 14 Mar 2011 18:36:00 -0500
Subject: [Aboriginal] /bin/sh error compiling distcc
In-Reply-To: <20110314130503.GA40390@alice.local>
References: <20110314130503.GA40390@alice.local>
Message-ID: <4D7EA660.8000100@parallels.com>
On 03/14/2011 08:05 AM, Alan Post wrote:
> I'm trying to build aboriginal 1.0.1 inside the i486 system image.
> The packages download and I get to the next stage, building host
> tools.
Sigh. It used to self-host, I've been a bit distracted by the pending
uClibc-NPTL release and the growing list of platform regressions (sparc,
sh4, and mips64 have all been really close to working, but then they
float away again as new package releases come out...)
> busybox appears to compile fine.
I beat the busybox guys up when they break stuff. :)
> I'm getting the following error
> message tryitg to build distcc:
>
> === Building host-tools
> === distcc (host host-tools)
> Snapshot 'distcc'...
> configure: WARNING: you should use --build, --host, --target
> configure: WARNING: invalid host type: "--with-included-popt--disable-Werror"
> checking build system type... Invalid configuration `"--with-included-popt--disable-Werror"': machine `"--with-included-popt--disable' not recognized
> configure: error: /bin/bash ./config.sub "--with-included-popt--disable-Werror" failed
>
> Exiting due to errors (host host-tools distcc)
>
>
> Somewhere in the configure stage for distcc, the two configure options:
> '--with-included-popt' and '--disable-Werror' are being joined together.
It's trying to use the wrong shell. (None of the busybox shells
actually work quite right yet. Making hush into a decent bash
replacement is a major todo item of mine if I ever get a spare 6 months.)
Sigh, it looks like I screwed up the sequencing and /bin/sh isn't
pointing to bash. It should be. I'll fix it.
> Going into the host-temp/distcc build directory, I try running the command
> by hand. I get the same error message. This suggests to me that I
> have a bug in /bin/sh in busybox.
The bug is that /bin/sh points to busybox. There's a reason I install
bash. I'd love to get rid of it, but busybox needs a major upgrade for
that to happen. (Denys and I agree that "hush" is the shell to work on,
we just need to find the time...)
> Have I found the best workaround? I'd also like to find and fix the
> underlying issue; that will require more testing on my part; I want
> to be able to compile the whole system first.
Fix the symlink in root-filesystem and re-run system-image.sh.
> -Alan
Rob
1300145760.0
From rlandley at parallels.com Tue Mar 15 00:26:48 2011
From: rlandley at parallels.com (Rob Landley)
Date: Mon, 14 Mar 2011 19:26:48 -0500
Subject: [Aboriginal] /bin/sh error compiling distcc
In-Reply-To: <4D7EA660.8000100@parallels.com>
References: <20110314130503.GA40390@alice.local>
<4D7EA660.8000100@parallels.com>
Message-ID: <4D7EB248.1090309@parallels.com>
On 03/14/2011 06:36 PM, Rob Landley wrote:
>> Somewhere in the configure stage for distcc, the two configure options:
>> '--with-included-popt' and '--disable-Werror' are being joined together.
>
> It's trying to use the wrong shell. (None of the busybox shells
> actually work quite right yet. Making hush into a decent bash
> replacement is a major todo item of mine if I ever get a spare 6 months.)
>
> Sigh, it looks like I screwed up the sequencing and /bin/sh isn't
> pointing to bash. It should be. I'll fix it.
http://landley.net/hg/aboriginal/rev/1332
I've got a dozen todo items for the next release, but half of 'em are
"fix XXX in pending uClibc-NPTL stuff"... I may still just revert that
for the moment and do a bugfix-only release, since it's overdue...
I head back to Russia for a week on the 26th and I need to get the
release out before then.
Rob
1300148808.0
From alanpost at sunflowerriver.org Tue Mar 15 02:01:39 2011
From: alanpost at sunflowerriver.org (Alan Post)
Date: Mon, 14 Mar 2011 20:01:39 -0600
Subject: [Aboriginal] /bin/sh error compiling distcc
In-Reply-To: <4D7EA660.8000100@parallels.com>
References: <20110314130503.GA40390@alice.local>
<4D7EA660.8000100@parallels.com>
Message-ID: <20110315020139.GA47940@alice.local>
On Mon, Mar 14, 2011 at 06:36:00PM -0500, Rob Landley wrote:
> On 03/14/2011 08:05 AM, Alan Post wrote:
> > I'm trying to build aboriginal 1.0.1 inside the i486 system image.
> > The packages download and I get to the next stage, building host
> > tools.
>
> Sigh. It used to self-host, I've been a bit distracted by the pending
> uClibc-NPTL release and the growing list of platform regressions (sparc,
> sh4, and mips64 have all been really close to working, but then they
> float away again as new package releases come out...)
>
> > busybox appears to compile fine.
>
> I beat the busybox guys up when they break stuff. :)
>
> > I'm getting the following error
> > message tryitg to build distcc:
> >
> > === Building host-tools
> > === distcc (host host-tools)
> > Snapshot 'distcc'...
> > configure: WARNING: you should use --build, --host, --target
> > configure: WARNING: invalid host type: "--with-included-popt--disable-Werror"
> > checking build system type... Invalid configuration `"--with-included-popt--disable-Werror"': machine `"--with-included-popt--disable' not recognized
> > configure: error: /bin/bash ./config.sub "--with-included-popt--disable-Werror" failed
> >
> > Exiting due to errors (host host-tools distcc)
> >
> >
> > Somewhere in the configure stage for distcc, the two configure options:
> > '--with-included-popt' and '--disable-Werror' are being joined together.
>
> It's trying to use the wrong shell. (None of the busybox shells
> actually work quite right yet. Making hush into a decent bash
> replacement is a major todo item of mine if I ever get a spare 6 months.)
>
> Sigh, it looks like I screwed up the sequencing and /bin/sh isn't
> pointing to bash. It should be. I'll fix it.
>
>
> > Going into the host-temp/distcc build directory, I try running the command
> > by hand. I get the same error message. This suggests to me that I
> > have a bug in /bin/sh in busybox.
>
> The bug is that /bin/sh points to busybox. There's a reason I install
> bash. I'd love to get rid of it, but busybox needs a major upgrade for
> that to happen. (Denys and I agree that "hush" is the shell to work on,
> we just need to find the time...)
>
> > Have I found the best workaround? I'd also like to find and fix the
> > underlying issue; that will require more testing on my part; I want
> > to be able to compile the whole system first.
>
> Fix the symlink in root-filesystem and re-run system-image.sh.
>
I noticed that both busybox and bash try to install /bin/sh, and it
does look like busybox wins. I used a debian system to build my own
system image, modifying the configuration to use ext2. This allowed
me to update the /bin/sh symlink.
The system is compiling now; it has been all day. I haven't yet set
up distcc, but I will be soon; it's painful waiting for the system
to compile inside qemu! I wondered at your adding distcc; I'm 100%
on board with this idea now.
I was going to wait to see if everything compiled fine. I did get
past the issue I reported this morning and things seem to be running
fine.
I'd like to add support for a custom busybox .config, rather than
building always with defconfig. Is this the sort of thing that
would be welcome?
-Alan
--
.i ma'a lo bradi ku penmi gi'e du
1300154499.0
From rlandley at parallels.com Tue Mar 15 04:29:25 2011
From: rlandley at parallels.com (Rob Landley)
Date: Mon, 14 Mar 2011 23:29:25 -0500
Subject: [Aboriginal] /bin/sh error compiling distcc
In-Reply-To: <20110315020139.GA47940@alice.local>
References: <20110314130503.GA40390@alice.local> <4D7EA660.8000100@parallels.com>
<20110315020139.GA47940@alice.local>
Message-ID: <4D7EEB25.3040101@parallels.com>
On 03/14/2011 09:01 PM, Alan Post wrote:
> I'd like to add support for a custom busybox .config, rather than
> building always with defconfig. Is this the sort of thing that
> would be welcome?
I used to use a custom busybox .config, but I poked enough config
changes upstream that I could go with defconfig.
The general design idea of Aboriginal Linux is that we build a native
system, and then you can build anything you like natively. In busybox,
defconfig is generally "allyesconfig minus the broken stuff like selinux
or debug options that prevent it from building/working on normal
systems", so if that doesn't have everything you need it's a bug in
busybox. (And yes, hush being crap is a bug in busybox, but a rather
large one that's not easy to fix.)
Note that system-image.sh can produce writeable ext2 filesystems
(SYSIMAGE_TYPE=ext2 in config), but I don't ship prebuilt versoins those
because there are various cans of worms like "when to fsck" and
diagnosing bugs due to people modifying their root filesystem that I
don't want to get into. (Plus you can mount multiple simultaneous
instances of a read only root filesystem, with different hdb images in
different qemu/kvm invocations.)
But the real deciding factor for not shipping system-image-$ARCH.ext3
tarballs is I made a script to copy the root filesystem into a writeable
chroot under your /home directory (in the /dev/hdb partition). It's
part of the control-image skeleton code, I suspect I should just copy it
into the root filesystem and have it available as part of th standard
toolkit. Then if you want to tweak your dev environment in-situ, it's
easy. :)
Sound like a thing? Then you can build your own busybox on target and
swap it in. (That's the design idea: get you a generic development
environment on target, then natively fiddle with it all you like.)
I need to do an x.org vnc server setup howto. (Or a script. I did it
on the Qualcomm Hexagon a few months ago, before my day job was hunting
the great white NFS containers fix...)
Rob
1300163365.0
From alanpost at sunflowerriver.org Wed Mar 16 12:48:18 2011
From: alanpost at sunflowerriver.org (Alan Post)
Date: Wed, 16 Mar 2011 06:48:18 -0600
Subject: [Aboriginal] [PATCH] documentation typos
Message-ID: <20110316124818.GA52995@alice.local>
I noticed a few typos while reading the documentation. I went
through the docs with a spell checker and fixed what I found.
-Alan
--
.i ma'a lo bradi ku penmi gi'e du
-------------- next part --------------
diff -r 29e1df07e99a -r a1af0f19d248 config
--- a/config Wed Feb 09 21:06:18 2011 -0600
+++ b/config Thu Mar 10 09:07:26 2011 -0700
@@ -1,6 +1,6 @@
# Setup
-# This file is sourced, not run. It provides a place for you to persisently
+# This file is sourced, not run. It provides a place for you to persistently
# set configuration variables.
# Feel free to replace this file with your own version, or to set these
@@ -9,7 +9,7 @@
#############################################################################
-# Seting this tells build.sh not to build a native toolchain. (This yields
+# Setting this tells build.sh not to build a native toolchain. (This yields
# a much smaller root-filesystem tarball.)
# export NO_NATIVE_COMPILER=1
@@ -134,7 +134,7 @@
# If this is set, it's points to a directory containing additional files to
# copy into the simple-root-filesystem. The path is either absolute or
-# relavitve to the aboriginal topdir.
+# relative to the aboriginal topdir.
# export SIMPLE_ROOT_OVERLAY="overlay"
diff -r 29e1df07e99a -r a1af0f19d248 www/README
--- a/www/README Wed Feb 09 21:06:18 2011 -0600
+++ b/www/README Thu Mar 10 09:07:26 2011 -0700
@@ -15,7 +15,7 @@
can boot under an emulator (or on real hardware if you have it) to compile
code natively. This includes a full native compiler (for both C and C++),
and the (optional) ability to run the cross compiler on the host (via distcc)
- to speed up the build without reqiring the packages you're building to
+ to speed up the build without requiring the packages you're building to
know anything about cross compiling.
--- How do I try it out? (Quick start.)
@@ -135,7 +135,7 @@
The file "configure" contains several environment variables you can set to
control the behavior of Aboriginal Linux, and has comments documenting what
- the all doo. (You can persistently set them by altering this file, or
+ they all do. (You can persistently set them by altering this file, or
set them temporarily in your environment before running a build.)
For more information, see the README file in the download directory.
diff -r 29e1df07e99a -r a1af0f19d248 www/about.html
--- a/www/about.html Wed Feb 09 21:06:18 2011 -0600
+++ b/www/about.html Thu Mar 10 09:07:26 2011 -0700
@@ -20,7 +20,7 @@
Bug reports can include a link to a system image and a
reproduction sequence (wget source, build, run this test). This provides
@@ -102,7 +102,7 @@
environmental dependencies. Sometimes new releases of packages simply won't
work without perl, or zlib, or some other dependency that previous versions
didn't have, not because they meant to but because they were never tested in
-a build environment that didn't have them, so the depencency leaked in.
+a build environment that didn't have them, so the dependency leaked in.
By providing a build environment that contains only the bare essentials
(relying on you to build and install whatever else you need), Aboriginal
diff -r 29e1df07e99a -r a1af0f19d248 www/architectures.html
--- a/www/architectures.html Wed Feb 09 21:06:18 2011 -0600
+++ b/www/architectures.html Thu Mar 10 09:07:26 2011 -0700
@@ -10,7 +10,7 @@
power consumption to performance ratio, meaning it has the longest battery
life and smallest amount of heat generated for a given computing task.
-Processor vs archtecture
+Processor vs architecture
Although ARM hardware has many different processor designs with varying
clock speeds, cache sizes, and integrated peripherals, from a software
@@ -28,7 +28,7 @@
the x86 world. Recompiling ARMv4 code to ARMv5 code provides about a 25%
speedup on the same hardware.)
-The oldest architecture this compatability goes back to is ARMv3 (which
+
The oldest architecture this compatibility goes back to is ARMv3 (which
introduced 32-bit addressing), but that hardware is now obsolete. (Not just no
longer being sold, but mostly cycled out of the installed base.) The oldest
architecture still in use is "ARMv4", which should run on any ARM hardware
diff -r 29e1df07e99a -r a1af0f19d248 www/documentation.html
--- a/www/documentation.html Wed Feb 09 21:06:18 2011 -0600
+++ b/www/documentation.html Thu Mar 10 09:07:26 2011 -0700
@@ -30,7 +30,7 @@
This documentation uses the name "Aboriginal Linux"
to refer to the build system consisting of a series
-of bash scripts and configurationo files which download and compile software.
+of bash scripts and configuration files which download and compile software.
The output of that build system is referred to as a "system image". The build system
compiles a Linux development environment for the specified
@@ -209,7 +209,7 @@
to "$TARGET-" with a trailing dash.
-
Also, stock up on asprin and clear a space to beat your head against; you'll
+
Also, stock up on aspirin and clear a space to beat your head against; you'll
need both. See why cross compiling
sucks for more details.
@@ -253,7 +253,7 @@
package-mini-native.sh $TARGET
-In theory, the stages are othogonal. If you have an existing cross
+
In theory, the stages are orthogonal. If you have an existing cross
compiler, you can add it to the $PATH and skip cross-compiler.sh. Or you
can use _just_ cross-compiler.sh to create a cross compiler, and then go build
something else with it. The host-tools.sh stage can often be skipped
@@ -307,7 +307,7 @@
installed on the host.
Portability - Using a known set of command line utilities
-insulates the build from variations in the host's Linux distribtion (such as
+insulates the build from variations in the host's Linux distribution (such as
Ubuntu's /bin/echo lacking suport for the -e option).
Testing - It ensures the resulting system can rebuild itself
@@ -317,7 +317,7 @@
restricting $PATH ensures that no necessary commands are missing. (Variation
can still show up between x86/arm/powerpc versions, of course.)
-It also moves most failures to the beginning. If anything's going to
+
It also moves most failures to the beginning. If anything is going to
break, it's usually the host-tools build. After that runs, we're mostly
in a known and tested state.
@@ -380,7 +380,7 @@
mini-native.sh - Use the cross compiler to create
-a minimal native build environment for the target platfrom.
+a minimal native build environment for the target platform.
This script takes one argument: the architecture to build for.
@@ -653,7 +653,7 @@
cleanup - delete temporary copy of source code after build.
Treat as a fancy "rm -rf" (except that it remembers the working directory
-from the last setupfor call, rather than reqiring it to be specified on
+from the last setupfor call, rather than requiring it to be specified on
the command line).
If the exit code of the last command was nonzero,
@@ -800,7 +800,7 @@
things like "uClibc" and "uClibc++". Packages are allowed to contain dashes
(such as gcc-core), but cannot have a digit immediately after the dash.
-FWL implements source cacheing. The first call to setupfor extracts the
+
FWL implements source caching. The first call to setupfor extracts the
package into build/sources, and then creates a directory of hard links in the
current target's build/temp-$TARGET directory with cp -lfR. Later setupfor
calls just create the directory of hard links from the existing source tree.
@@ -902,7 +902,7 @@
The way $RECORD_COMMANDS works is by building a logging wrapper
(sources/toys/wrappy.c) and populating a directory (build/wrapper) with
symlinks to that logging wrapper for each command name in $PATH. When later
-build stages run commands, the wraper appends the command line to the log file
+build stages run commands, the wrapper appends the command line to the log file
(specified in the environment variable $WRAPPY_LOGPATH, host-tools.sh sets
this to "$BUILD/cmdlines.$STAGE_NAME.$PACKAGE_NAME"), recording
each command run. The logging wrapper then searches $WRAPPY_REALPATH to find
@@ -1102,7 +1102,7 @@
busybox - Build busybox command line utilities.
-This provides the bulk of the command line utlities for the new
+
This provides the bulk of the command line utilities for the new
system.
Once upon a time, "make defconfig" provided the largest sane configuration
@@ -1222,7 +1222,7 @@
distcc - command to distribute compiles across a network
cluster.
-We install this for the distc accelerator
+We install this for the distcc accelerator
trick. It's entirely optional.
We create a $TOOLS/distcc directory full of symlinks to distcc with the
@@ -1523,7 +1523,7 @@
hard to do.
I wrote an introduction
-to cross-compiling which explains the terminology, plusses and minuses,
+to cross-compiling
which explains the terminology, pluses and minuses,
and why you might want to do it. Keep in mind that I wrote that for a company
that specializes in cross-compiling. Personally, I consider cross-compiling
a necessary evil to be minimized, and that's how Firmware Linux is designed.
@@ -1601,14 +1601,14 @@
the user home directories lived. When they got more disk space, they created
a new direct (/home) and moved all the user home directories there.
-The real reason we kept it is tradition. The execuse is that the root
+
The real reason we kept it is tradition. The excuse is that the root
partition contains early boot stuff and /usr may get mounted later, but these
days we use initial ramdisks (initrd and initramfs) to handle that sort of
thing. The version skew issues of actually trying to mix and match different
versions of /lib/libc.so.* living on a local hard drive with a /usr/bin/*
from the network mount are not pretty.
-I.E. The seperation is just a historical relic, and I've consolidated it in
+
I.E. The separation is just a historical relic, and I've consolidated it in
the name of simplicity.
On a related note, there's no reason for "/opt". After the original Unix
@@ -1652,7 +1652,7 @@
just symlink them together.
(I case it hasn't become apparent yet, there's 30 years of accumulated cruft
-in the standards, convering a lot of cases that don't apply outside of
+in the standards, covering a lot of cases that don't apply outside of
supercomputing centers where 500 people share accounts on a mainframe that
has a dedicated support staff. They serve no purpose on a laptop, let alone
an embedded system.)
diff -r 29e1df07e99a -r a1af0f19d248 www/history.html
--- a/www/history.html Wed Feb 09 21:06:18 2011 -0600
+++ b/www/history.html Thu Mar 10 09:07:26 2011 -0700
@@ -19,7 +19,7 @@
Back in the late 90's, before linksys routers came out, I installed several
masquerading gateways by putting Red Hat on old leftover 386 machines. This
-involved removing as many packages as possible from the bas install, both to
+involved removing as many packages as possible from the base install, both to
get the size down (to fit it on old hard drives) and to reduce the security
exposure of all the daemons Red Hat ran by default (including a print
server and an NFS server exposed to the world, for no readily apparent
@@ -180,7 +180,7 @@
entire new OS images using the internet speeds of 2001, and then update
the new OS image without losing data or turning it into a brick.
-WebOffice's original prototype device ran a stock Red Hat 7 intall (the one
+
WebOffice's original prototype device ran a stock Red Hat 7 install (the one
that had the Code Red virus when they first demoed it to me after a LUG
meeting). The whole OS image took up almost a gigabyte, and that's before
they'd implemented any applications or web UI. I rebased the system on Linux
@@ -258,7 +258,7 @@
At a technical level, there was a chicken and egg problem here: the root
filesystem was a loopback mount, but the file to loopback mount has to live
-somewhere. So the system needed a writeable parition for logging and
+somewhere. So the system needed a writeable partition for logging and
such anyway, so I made /dev/hda1 be ext3 and mounted it on /var, and put the
firmware in that. So during the boot process the initrd needed to mount
/dev/hda1 onto a /temp directory, loopback mount the /temp/image file onto a
@@ -286,7 +286,7 @@
we persevered.
Mounting a partition twice and leaking one of the mount points (the old
-/temp was inaccessable after the pivot_root) was kind of unclean anyway, the
+/temp was inaccessible after the pivot_root) was kind of unclean anyway, the
clean thing for the boot to do was actually move the /tmp mount to /sub/var
after mounting /sub but before the pivot_root into /sub. But when I asked
on linux-kernel how to do that, I was told that "mount --move" didn't exist
@@ -316,7 +316,7 @@
except the python CGI) once it shipped never came true. Partly the founders
were ambivalent about this whole "open source" thing, wanting every competitive
advantage they could get. (They kept trying to patent obvious things I did.
-Their patent lawyer was a realy cool dude when he flew in from California.)
+Their patent lawyer was a really cool dude when he flew in from California.)
Another contributing factor was that the founders were from Taiwan and had
no idea how to address the US market. Their marketer employee #3 hadn't
@@ -367,7 +367,7 @@
necessity would make them focus on shipping units and bringing in revenue, but
it didn't happen. I left in November and spent the last couple months of that
year in Florida watching my mother die of cancer, then driving around the
-country distributing her posessions to various relatives, and finally crashing
+country distributing her possessions to various relatives, and finally crashing
on Eric Raymond's couch for a few months doing an "editing pass" on The Art of
Unix Programming that expanded the book from 9 chapters to 20.
@@ -493,7 +493,7 @@
ncurses, net-tools, patch, perl, procinfo, procps, psmisc, sed, shadow,
sysklogd, sysvinit, tar, tcl, texinfo, util-linux, vim, and zlib. There
were also two LFS-specific packages, providing boot scripts, config
-files, and miscelaneous utilities.
+files, and miscellaneous utilities.
I started by removing packages I didn't actually need. Tcl, expect, and
dejagnu hadn't been in LFS 4, so obviously it was possible to do without them.
@@ -622,13 +622,13 @@
e2fsprogs, file, findutils, gawk, grep, inetutils, less, modutils, net-tools,
patch, procps, sed, shadow, sysklogd, sysvinit, tar, util-linux, and vim.
-To do that, I wound up extensively upggrading (or rewriting from scratch)
+
To do that, I wound up extensively upgrading (or rewriting from scratch)
dozens of different busybox commands and adding several new ones from
scratch.
One new command was switch_root, for initramfs support. I wrote an
initramfs file for the kernel's Documentation directory because I investigated
-it for Firmware Linux. (And later gave my first OLS presenation on the topic,
+it for Firmware Linux. (And later gave my first OLS presentation on the topic,
and write an article series about it when I worked at TimeSys.)
Another new command was mdev, which was a rewrite of
@@ -699,8 +699,7 @@
root access (enough for my needs), but without extensive setup thanks to
the "hostfs", and without requiring a new source package (I already had
the Linux kernel sources, this was just another way of building them).
-I first got it working in the
-first got it working in
+I first got it working in
a patched 2.6.9 kernel, and later integrated it into the build when I got
unpatched 2.6.11
to build a usable User Mode Linux image (although I had to
@@ -730,7 +729,7 @@
initially understand), made a number of
design
suggestions,
-and even oftered patches.
+and even offered patches.
But I didn't really like the design of buildroot
(nested makefiles aren't the most straightforward approach to anything,
@@ -753,7 +752,7 @@
and wouldn't load without it, even if it was otherwise linked against
uClibc.
-This meant the gcc wraper was no longer sufficient, but since libgcc_s.so was
+
This meant the gcc wrapper was no longer sufficient, but since libgcc_s.so was
part of gcc, the only way to get a new version of libgcc_s.so that linked
against uClibc (instead of glibc) was to download the gcc source code and
build gcc itself against uClibc.
@@ -769,7 +768,7 @@
a new uClibc root filesystem directory containing the uClibc shared libraries,
and a second instance of busybox dynamically linked against those,
which you could chroot and test out the uClibc version of busybox.
-Since he already had the kernel source lying aorund, Eric even taught it to
+Since he already had the kernel source lying around, Eric even taught it to
build a User Mode Linux binary that could do the chroot for you.
Problems with buildroot
@@ -780,7 +779,7 @@
initially understand), made a number of
design
suggestions,
-and even oftered patches.
+and even offered patches.
But I didn't really like the design of buildroot
(nested makefiles aren't the most straightforward approach to anything,
@@ -797,7 +796,7 @@
several years old by that point). Buildroot was an instructive counterexample
on many fronts: my project should not require root access to build,
shell scripts were more readable than nested makefiles, releases were
-important, and it's vital to have boundaries so youc an clearly state
+important, and it's vital to have boundaries so you can clearly state
what your project DOESN'T do.
I also checked in with buildroot from time to time to see what it was doing
@@ -937,7 +936,7 @@
I started playing around
-with QEMU in novemeber 2005, about the same time I started keeping
+with QEMU in november 2005, about the same time I started keeping
a more detailed technical
blog on my own website, and shortly before I
went to work for
diff -r 29e1df07e99a -r a1af0f19d248 www/news.html
--- a/www/news.html Wed Feb 09 21:06:18 2011 -0600
+++ b/www/news.html Thu Mar 10 09:07:26 2011 -0700
@@ -271,7 +271,7 @@
build-control-images.sh - build all control images from sources/native-builds.
-for-each-target.sh - iterage through every defined target architecture
+for-each-target.sh - iterate through every defined target architecture
and run a command.
@@ -296,7 +296,7 @@
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
+the build from some of the strange environments out there. To disable this
behavior, export NO_SANITIZE_ENVIRONMENT=1.
New config variables:
@@ -553,13 +553,13 @@
of one of the unstable packages (linux, uClibc, or busybox). It can test
that the build completes, or that the system image boots and successfully
builds the static native dropbear binary. (In theory this will allow the
-nightly snapshots to automaticaly isolate and report the first commit that
+nightly snapshots to automatically isolate and report the first commit that
broke them.)
In other general infrastructure news: some extensive upgrades to the
compiler wrapper (ccwrap), such as no longer needing GIMME_AN_S at compile
time and instead autodetecting the presence of libgcc_s.so vs libgcc.a
-and behaving appropriately. A largeish cleanup/refactoring of the compiler
+and behaving appropriately. A largish cleanup/refactoring of the compiler
build (described in
commit 944)
added a new "native-compiler.sh" script, which handles building the
@@ -650,7 +650,7 @@
use the right one, rather than moving them around during the build.
Updated smoketest-all.sh to show "NONE" for system images that didn't build.
Added more support for SKIP_STRIP and CFLAGS=-g to the rest of the
-packages. Cleaned out the old USE_COLOR stuff which was superceded by
+packages. Cleaned out the old USE_COLOR stuff which was superseded by
set_titlebar.
@@ -681,7 +681,7 @@
tracker has a roadmap
showing what we plan to implement for the next release or two.
-It's also a place to file bugs, athough sending them to the mailing list
+
It's also a place to file bugs, although sending them to the mailing list
is still the fastest way to get a fix.
@@ -976,7 +976,7 @@
the
last GPLv2 release of Red Hat's binutils fork, 2.17.5.0.17 is under
consideration for a future release. But mostly the GNU compiler toolchain
-has been upgraded as far as possible for the forseeable future, either because
+has been upgraded as far as possible for the foreseeable future, either because
new versions provide no significant benefits or because they're not available
under a license compatible with the Linux kernel's.
@@ -1115,7 +1115,7 @@
stripping of the cross compilers and system images, so everything's a bit
smaller. The mirror list now lives in download.sh. New buildall.sh is a
wrapper around build.sh. New build-static-toolchains.sh builds them under
-qemu; set FORK=1 to build them in paralell just like buildall.sh. The
+qemu; set FORK=1 to build them in parallel just like buildall.sh. The
ext2 system images are now built at a small size with genext2fs and
then expanded with resize2fs (because genext2fs slows down exponentially
as size increases; this means e2fsprogs is built in host-tools.sh now).
diff -r 29e1df07e99a -r a1af0f19d248 www/presentation.html
--- a/www/presentation.html Wed Feb 09 21:06:18 2011 -0600
+++ b/www/presentation.html Thu Mar 10 09:07:26 2011 -0700
@@ -245,7 +245,7 @@
- Flash has limited write cycles, building on it shortens device life.
Building on NFS is painful
- - Timestamp granularity and skew due to cacheing
+ - Timestamp granularity and skew due to caching
From rob at landley.net Tue Mar 22 11:56:42 2011
From: rob at landley.net (Rob Landley)
Date: Tue, 22 Mar 2011 06:56:42 -0500
Subject: [Aboriginal] [PATCH] documentation typos
In-Reply-To: <20110316124818.GA52995@alice.local>
References: <20110316124818.GA52995@alice.local>
Message-ID: <4D888E7A.9070404@landley.net>
On 03/16/2011 07:48 AM, Alan Post wrote:
> I noticed a few typos while reading the documentation. I went
> through the docs with a spell checker and fixed what I found.
>
> -Alan
Committed, sorry for the delay.
If you noticed Friday's flurry of commits, I've been testing uClibc-rc3.
It's _just_ good enough that I don't want to revert to ship the
release, but not quite working well enough to ship. Sigh...
The new dropbear release is also horked (doesn't like static linking
even though he shipped a .1 that _supposedly_ fixed this, looks like
I've got to track it down and patch it myself. And there's a new
squashfs release out I should test too...)
But the merge window is open and my day job is containerizing NFS,
trying to get the next patch at least posted before -rc1 ships. I fly
to Parallels head office in Moscow on the 26th for a week, be
embarassing not to have that done before I report to The Mothership...
Rob
1300795002.0
From alanpost at sunflowerriver.org Wed Mar 23 00:31:22 2011
From: alanpost at sunflowerriver.org (Alan Post)
Date: Tue, 22 Mar 2011 18:31:22 -0600
Subject: [Aboriginal] [PATCH] documentation typos
In-Reply-To: <4D888E7A.9070404@landley.net>
References: <20110316124818.GA52995@alice.local> <4D888E7A.9070404@landley.net>
Message-ID: <20110323003122.GA74409@alice.local>
On Tue, Mar 22, 2011 at 06:56:42AM -0500, Rob Landley wrote:
> On 03/16/2011 07:48 AM, Alan Post wrote:
> > I noticed a few typos while reading the documentation. I went
> > through the docs with a spell checker and fixed what I found.
> >
> > -Alan
>
> Committed, sorry for the delay.
>
> If you noticed Friday's flurry of commits, I've been testing uClibc-rc3.
> It's _just_ good enough that I don't want to revert to ship the
> release, but not quite working well enough to ship. Sigh...
>
> The new dropbear release is also horked (doesn't like static linking
> even though he shipped a .1 that _supposedly_ fixed this, looks like
> I've got to track it down and patch it myself. And there's a new
> squashfs release out I should test too...)
>
> But the merge window is open and my day job is containerizing NFS,
> trying to get the next patch at least posted before -rc1 ships. I fly
> to Parallels head office in Moscow on the 26th for a week, be
> embarassing not to have that done before I report to The Mothership...
>
> Rob
I've been avoiding anything past your latest tarball release because
I suspected there was a fair bit of instability in tip. I've been
playing around with and getting a feel for Aboriginal Linux. I
haven't build my first testing image yet; I have a few things I want
to play with first.
-Alan
--
.i ma'a lo bradi ku penmi gi'e du
1300840282.0
From rlandley at parallels.com Wed Mar 23 07:02:55 2011
From: rlandley at parallels.com (Rob Landley)
Date: Wed, 23 Mar 2011 02:02:55 -0500
Subject: [Aboriginal] [PATCH] documentation typos
In-Reply-To: <20110323003122.GA74409@alice.local>
References: <20110316124818.GA52995@alice.local> <4D888E7A.9070404@landley.net>
<20110323003122.GA74409@alice.local>
Message-ID: <4D899B1F.5040503@parallels.com>
On 03/22/2011 07:31 PM, Alan Post wrote:
> I've been avoiding anything past your latest tarball release because
> I suspected there was a fair bit of instability in tip. I've been
> playing around with and getting a feel for Aboriginal Linux. I
> haven't build my first testing image yet; I have a few things I want
> to play with first.
>
> -Alan
There's a ginormous presentation.pdf in the downloads directory, the raw
text of which is in presentation.html one level up, which tries to
explain the design I was going for.
I can give you the design rant if you like, but presumably reading that
would give it as well. (And for all I remember it's in the FAQ. :)
Rob
1300863775.0
From onefang at gmail.com Wed Mar 23 14:01:28 2011
From: onefang at gmail.com (David Seikel)
Date: Thu, 24 Mar 2011 00:01:28 +1000
Subject: [Aboriginal] Back to work.
Message-ID: <20110324000128.3d2a1e52@U64-desktop>
A) I finally found out this list got moved. 2) The client finally
pulled his finger out and is now serious about the project I want to
use aboriginal linux for. III) The actual aboriginal living downstairs
has so far decided he does not object to the name, though more likely
he does not know about it.
In the end the client seems to have decided to go for generic x86
systems, not the tiny 486 board I was looking at initially.
Performance is not a big issue though, anything better than a 486 is
way more than we actually need. Plus, I still have copies of that 486
board that I want to use for other things. So I'll go ahead and keep
working on that 486 target I had previously contributed. I'll also
make a variant that works on the 486 AND generic x86s. Like I said,
performance is not critical.
I know the client might have trouble coming up with the money, that's
why I make him pay monthly in advance. B-)
At least the initial work I'll be able to use for other projects, so it
wont be until he has invested heavily in the project and it is near the
end that we get into the area of "not useful for others". So some of
the work I do I can contribute back to the aboriginal linux project.
It's good to be back.
--
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL:
From rlandley at parallels.com Wed Mar 23 23:17:08 2011
From: rlandley at parallels.com (Rob Landley)
Date: Wed, 23 Mar 2011 18:17:08 -0500
Subject: [Aboriginal] Back to work.
In-Reply-To: <20110324000128.3d2a1e52@U64-desktop>
References: <20110324000128.3d2a1e52@U64-desktop>
Message-ID: <4D8A7F74.6080104@parallels.com>
On 03/23/2011 09:01 AM, David Seikel wrote:
> A) I finally found out this list got moved. 2) The client finally
> pulled his finger out and is now serious about the project I want to
> use aboriginal linux for.
Yay!
> III) The actual aboriginal living downstairs
> has so far decided he does not object to the name, though more likely
> he does not know about it.
The word was coined in 1660, New South Wales colony wasn't established
until 1788, and it's still not funny.
> In the end the client seems to have decided to go for generic x86
> systems, not the tiny 486 board I was looking at initially.
> Performance is not a big issue though, anything better than a 486 is
> way more than we actually need. Plus, I still have copies of that 486
> board that I want to use for other things. So I'll go ahead and keep
> working on that 486 target I had previously contributed. I'll also
> make a variant that works on the 486 AND generic x86s. Like I said,
> performance is not critical.
As far as I know the 486 version does work on generic x86s? (Or do you
mean there's still an actual 386 system in use somewhere?)
> I know the client might have trouble coming up with the money, that's
> why I make him pay monthly in advance. B-)
>
> At least the initial work I'll be able to use for other projects, so it
> wont be until he has invested heavily in the project and it is near the
> end that we get into the area of "not useful for others". So some of
> the work I do I can contribute back to the aboriginal linux project.
>
> It's good to be back.
It's good to have you back.
The current repository version still has numerous regressions from last
release because uClibc-rc3 is iffy.
Let's see: armv4l is stuck on sjlj but uClibc-NPTL only supports dwarf
stack unwinding, I think I may have to keep that arch using old
pthreads. For some reason x86-64 isn't building some of its code with
-fpic and the link is failing creating the library. Powerpc builds but
segfaults immediately. I need to track down the runtime problems with
sparc32 and sh4.
And then on the targets that _do_ build, building lfs natively makes it
as far as this bit of fun (longish thread):
http://lists.uclibc.org/pipermail/uclibc/2011-March/045041.html
(There are times I really miss Erik Anderson's participation in Embedded
Linux.)
Rob
1300922228.0
From onefang at gmail.com Mon Mar 28 22:39:51 2011
From: onefang at gmail.com (David Seikel)
Date: Tue, 29 Mar 2011 08:39:51 +1000
Subject: [Aboriginal] Back to work.
In-Reply-To: <4D8A7F74.6080104@parallels.com>
References: <20110324000128.3d2a1e52@U64-desktop>
<4D8A7F74.6080104@parallels.com>
Message-ID: <20110329083951.32b845a6@U64-desktop>
On Wed, 23 Mar 2011 18:17:08 -0500 Rob Landley
wrote:
> On 03/23/2011 09:01 AM, David Seikel wrote:
> > In the end the client seems to have decided to go for generic x86
> > systems, not the tiny 486 board I was looking at initially.
> > Performance is not a big issue though, anything better than a 486 is
> > way more than we actually need. Plus, I still have copies of that
> > 486 board that I want to use for other things. So I'll go ahead and
> > keep working on that 486 target I had previously contributed. I'll
> > also make a variant that works on the 486 AND generic x86s. Like I
> > said, performance is not critical.
>
> As far as I know the 486 version does work on generic x86s? (Or do
> you mean there's still an actual 386 system in use somewhere?)
Nope, not 386. I'm seeing kernel panics on the old one I made last
year when running it on things more powerful than that 486. I'll see
if it happens with the latest version. Something for me to investigate
and send patches if needed.
After playing with it a bit, but only running things under QEMU, looks
like I'll start with the lfs bootstrap stuff and modify that a bit.
Suits my project perfectly.
Been working through the night, I'm dead tired, but I can't seem to see
if there is a way to actually run the results of building the lfs
bootstrap, under QEMU easily. At least without hacking something up.
--
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL:
From rlandley at parallels.com Tue Mar 29 10:07:52 2011
From: rlandley at parallels.com (Rob Landley)
Date: Tue, 29 Mar 2011 05:07:52 -0500
Subject: [Aboriginal] Back to work.
In-Reply-To: <20110329083951.32b845a6@U64-desktop>
References: <20110324000128.3d2a1e52@U64-desktop> <4D8A7F74.6080104@parallels.com>
<20110329083951.32b845a6@U64-desktop>
Message-ID: <4D91AF78.6090000@parallels.com>
On 03/28/2011 05:39 PM, David Seikel wrote:
> On Wed, 23 Mar 2011 18:17:08 -0500 Rob Landley
> wrote:
>
>> On 03/23/2011 09:01 AM, David Seikel wrote:
>>> In the end the client seems to have decided to go for generic x86
>>> systems, not the tiny 486 board I was looking at initially.
>>> Performance is not a big issue though, anything better than a 486 is
>>> way more than we actually need. Plus, I still have copies of that
>>> 486 board that I want to use for other things. So I'll go ahead and
>>> keep working on that 486 target I had previously contributed. I'll
>>> also make a variant that works on the 486 AND generic x86s. Like I
>>> said, performance is not critical.
>>
>> As far as I know the 486 version does work on generic x86s? (Or do
>> you mean there's still an actual 386 system in use somewhere?)
>
> Nope, not 386. I'm seeing kernel panics on the old one I made last
> year when running it on things more powerful than that 486. I'll see
> if it happens with the latest version. Something for me to investigate
> and send patches if needed.
Odd. I haven't seen these panics, but I haven't really been banging on
the 486 target very heavily (or running it outside of qemu).
> After playing with it a bit, but only running things under QEMU, looks
> like I'll start with the lfs bootstrap stuff and modify that a bit.
> Suits my project perfectly.
Woot.
On my todo list are making a gentoo bootstrap and a debian bootstrap,
but I need to finish the uClibc transition first.
> Been working through the night, I'm dead tired, but I can't seem to see
> if there is a way to actually run the results of building the lfs
> bootstrap, under QEMU easily. At least without hacking something up.
Um...
It makes a tarball, and uploads it to the host. (All the native builds
do that.) Afterwards, you can:
1) Run dev-environment.sh reusing the hdb.img file, find the appropriate
directory under /home and chroot into it. (I think your chroot can run
sbin/init.sh and it'll detect it's not PID 1 and do chroot setup instead
of fresh boot setup, but I haven't tested that since last year.)
2) wget the tarball into a fresh /home directory, extract it, and chroot
into it there.
3) Play around with genext2fs or loopback on the host to make your own
bootable ext2 image. (I should make a script to convert a tarball to an
ext2 or squashfs image, but things like /dev nodes and suid bits are
nontrivial to handle as non-root. It can be done, but parsing them out
of a tarball... Hmmm, actually I could do tar txv and have the script
parse the output to generate a device table for genext2fs... But then I
have to extract the tarball in such a way that errors from being unable
to create dev nodes don't kill the script but errors from the tarball
being corrupt are...)
Might be a fun todo item, but not a particularly small one. And if I
got it to work of course I'd want to redo system-image.sh to take
advantage of it...
Rob
1301393272.0
From onefang at gmail.com Tue Mar 29 10:56:14 2011
From: onefang at gmail.com (David Seikel)
Date: Tue, 29 Mar 2011 20:56:14 +1000
Subject: [Aboriginal] Back to work.
In-Reply-To: <4D91AF78.6090000@parallels.com>
References: <20110324000128.3d2a1e52@U64-desktop>
<4D8A7F74.6080104@parallels.com>
<20110329083951.32b845a6@U64-desktop>
<4D91AF78.6090000@parallels.com>
Message-ID: <20110329205614.526f524f@U64-desktop>
On Tue, 29 Mar 2011 05:07:52 -0500 Rob Landley
wrote:
> On 03/28/2011 05:39 PM, David Seikel wrote:
> > After playing with it a bit, but only running things under QEMU,
> > looks like I'll start with the lfs bootstrap stuff and modify that
> > a bit. Suits my project perfectly.
>
> Woot.
>
> On my todo list are making a gentoo bootstrap and a debian bootstrap,
> but I need to finish the uClibc transition first.
Think I'll make a uLFS bootstrap. Like the LFS one you made, but
keeping busybox versions of as much as possible. There's a few things
I need from BLFS, adding those can act as a sanity test.
> > Been working through the night, I'm dead tired, but I can't seem to
> > see if there is a way to actually run the results of building the
> > lfs bootstrap, under QEMU easily. At least without hacking
> > something up.
>
> Um...
>
> It makes a tarball, and uploads it to the host. (All the native
> builds do that.) Afterwards, you can:
>
> 1) Run dev-environment.sh reusing the hdb.img file, find the
> appropriate directory under /home and chroot into it.
Yep, that worked. Said I was tired.
--
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL:
From onefang at gmail.com Thu Mar 31 08:08:47 2011
From: onefang at gmail.com (David Seikel)
Date: Thu, 31 Mar 2011 18:08:47 +1000
Subject: [Aboriginal] ulfs-bootstrap, shrinking LFS.
Message-ID: <20110331180847.1e70e680@U64-desktop>
ulfs is my effort to shrink LFS down, mostly to suit my own purposes,
by using the stuff that already exists in Aboriginal linux. So, no
need for most of the usual gnu tools when we have busybox, no need to
replace the tool chain we already got, and see how far we can get using
uClibc. The result should be able to compile stuff from BLFS, though
I'll only be testing the stuff from BLFS that I actually need when I
need it.
Mostly this is by removing packages, if the removed package turns out
to be something you need, just put it back again.
First thing I did was remove gmp, mpfr, and mpc. They are complex
maths packages that are only in LFS coz the latest gcc needs them. We
are not using a gcc that needs them, we already have an older one that
works. The original lfs-bootstrap had already removed the building of
the toolchain coz aboriginal linux already supplies one. For the same
reason make was left out, we already got that.
Next thing I did was to leave out packages that busybox could be used
for. This step removed sed, util-linux-ng, e2fsprogs, coreutils, gawk,
procps, grep, inetutils, bzip2, diffutils, findutils, gzip, iproute2,
kbd, less, module-init-tools, patch, psmisc, shadow, sysklogd,
sysvinit, tar, udev, and vim. Util-linux-ng includes a lot of stuff
that busybox does not, we shall see if it's really needed.
First problem, iana-etc needs the real gawk, it uses fancy options that
the busybox awk does not support. So put gawk back in.
Second problem, autoconf stops part way through asking the user a
question when using busybox instead of coreutils. A quick
investigation seems to point to the busybox mv command needing to know
if it's OK to overwrite a file, when the coreutils one just overwrites
it without asking. There may in fact be some deeper root cause for
this problem, I did not look deeper. See next step for why.
Next step is to remove autofoo and friends. The general purpose of
autofoo is to let developers create source tarballs that users can
compile on any old unix system. The target systems don't need autofoo
installed to allow such tarballs to compile. So autofoo itself is a
development tool, and LFS is not supposed to be a development system,
but a way to get a linux system up and running which can be used to
install more packages. So, autofoo is not really needed in an LFS
system. Removing it is good, and lets me get rid of perl, which is
even better. B-)
Grub was left off for the same reason it was left out of lfs-bootstrap.
Bash and readline where removed. We already have an older bash as part
of aboriginal linux. Readline is only in LFS as a dependency of bash.
Time will tell if this is a bad move.
Libtool and texinfo where left out as being pointless development
tools. I had considered leaving out bison, flex, and m4, but they
ended up being needed to build those bits of LFS that remain, so left
them in.
This left the ulfs-bootstrap package-list looking like this -
setup
zlib
m4 #development
pkg-config #development
ncurses
gettext-stub #development internationalization
gawk #busybox
iana-etc
bison #development
gdbm
file
flex #development
groff
make #development
man-db
A much smaller system that should still allow compiling of stuff from
BLFS.
As a quick sanity check, I installed the one thing from BLFS that I
can't live without - midnight commander. It has glib as a dependency,
so that's the first thing I tried to install. It failed due to a lack
of iconv. The base config for uClibc has the iconv parts commented
out, uncommenting them and rebuilding fixed up glib. Midnight
commander installed fine after that. And it actually worked. B-)
I guess iconv was left out as it's just bloat that is not needed if you
are not doing any internationalization, for the same reason
gettext-stub is used instead of gettext in lfs-bootstrap. I think
gentoo have a stub version of iconv they are working on, but the above
was easy to do and worked for me. I'm not doing internationalization
either.
My next step will be to install the dependencies of the GUI library I
want to use for this contract. A lot of those dependencies are in BLFS,
so those will go in first using the BLFS recipes. This should help to
shake out any more issues with ulfs. If people are interested, I'll
ship the results to Rob later. Though the package-list above is the
important bit, you can just copy the rest from lfs-bootstrap.
Feel free to let me know if there are other issues with building BLFS
with this ulfs-bootstrap.
--
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL:
From rob at landley.net Thu Mar 31 12:44:12 2011
From: rob at landley.net (Rob Landley)
Date: Thu, 31 Mar 2011 07:44:12 -0500
Subject: [Aboriginal] ulfs-bootstrap, shrinking LFS.
In-Reply-To: <20110331180847.1e70e680@U64-desktop>
References: <20110331180847.1e70e680@U64-desktop>
Message-ID: <4D94771C.7070708@landley.net>
On 03/31/2011 03:08 AM, David Seikel wrote:
> ulfs is my effort to shrink LFS down, mostly to suit my own purposes,
> by using the stuff that already exists in Aboriginal linux.
I need better documentation, I'm just not sure where to put it.
If you look in sources/control-images/lfs-bootstrap/mnt/package-list
you'll see I've annotated them with various tags I was thinking of using
to let you switch off various package builds. (Pretty much with "grep -v".)
I've got tags for busybox (this is already provided by busybox),
development (only needed if you want a development system),
internationaliation (only needed if you want to support
internationalization, and I can link you to several of my old blog
entries on my struggles to get that to work right under uClibc), and
pointless (never needed by anybody for any reason, only exists because
the FSF is insane).
However, that's the sort of thing that could easily open "the distro can
of worms" which I'm trying very hard not to do with this project. Of
course if somebody ELSE wanted to take that over... :)
I admit to being sort of tempted to separate the control-images stuff
into its own project. (This is why I split
sources/download_functions.sh out into its own file, because the
control-image generator needs a copy of that.)
Really, they should be able to bootstrap on top of any arbitrary native
development environment.
> So, no
> need for most of the usual gnu tools when we have busybox,
Agreed. (If the busybox tools are deficient, fix busybox.)
> no need to replace the tool chain we already got,
In the LFS bootstrap script I never bothered to build the new toolchain.
I built its prerequisites, but skipped gcc and binutils. (I _do_
rebuilt make, for no readily apparent reason.)
My annotations aren't quite complete: gmp, mpfr, and mpc are parts of
gcc that the FSF broke off into separate packages in some misguided
attempt to make gcc look smaller or something. In 4.2 they aren't
separate packages.
Bash I'm installing a newer version of. The old 2.04b is easy to build
and less than 1/3 of the size of the current monstrosity, and I really
want to replace it all with busybox hush. But you need current bash in
order to run gentoo's portage, it uses stuff like ~= that old bash
hasn't got, and depends on the subtly changed quoting rules...
m4, bison, readline, autoconf, automake, flex, and pkg-config aren't
provided by the existing dev environment. m4, bison, and flex are
probably necessary. Readline there's a bsd-licensed replacement I'd
prefer to use out of sheer spite for the FSF, and idealy busybox should
export that functionality anyway. Don't get me started on
autoconf/automake.
pkg-config is its own horror (you do NOT improve on the rpm vs dpkg vs
ebuild situation by ADDING YET ANOTHER... grumble) and either not having
it installed or setting PKG_CONFIG=/bin/true is my preferred choice,
butI got tired of fighting with some package builds.
> and see how far we can get using
> uClibc. The result should be able to compile stuff from BLFS, though
> I'll only be testing the stuff from BLFS that I actually need when I
> need it.
I built rather large chunks of BLFS when I ported aboriginal linux to
the Qualcomm Hexagon for my day job last year. (Alas, it was based on a
toolchain and ginormous kernel patch that we hadn't shipped, so I could
never quite merge it. They claim that SOMEDAY it'll make it past the
lawyers and out into the world...)
But the point is, lots of BLFS work just fine under uClibc. And I'm
hoping to get more under uClibc-1.0. (In fact, once we've got NTPL and
TLS I'd like to treat aborigininal Linux as the /tools system and build
a new glibc based system natively, just so I don't ever have to worry
about cross compiling glibc. It requires perl to build. You may barf now.)
> Mostly this is by removing packages, if the removed package turns out
> to be something you need, just put it back again.
>
> First thing I did was remove gmp, mpfr, and mpc. They are complex
> maths packages that are only in LFS coz the latest gcc needs them. We
> are not using a gcc that needs them, we already have an older one that
> works. The original lfs-bootstrap had already removed the building of
> the toolchain coz aboriginal linux already supplies one. For the same
> reason make was left out, we already got that.
You have to remove make from the package-list (it's currently in there),
but yes, you shouldn't need it.
> Next thing I did was to leave out packages that busybox could be used
> for. This step removed sed, util-linux-ng, e2fsprogs, coreutils, gawk,
> procps, grep, inetutils, bzip2, diffutils, findutils, gzip, iproute2,
> kbd, less, module-init-tools, patch, psmisc, shadow, sysklogd,
> sysvinit, tar, udev, and vim. Util-linux-ng includes a lot of stuff
> that busybox does not, we shall see if it's really needed.
Generally if it's really needed, it's in busybox.
> First problem, iana-etc needs the real gawk, it uses fancy options that
> the busybox awk does not support. So put gawk back in.
Poke the busybox gawk maintainer about that.
> Second problem, autoconf stops part way through asking the user a
> question when using busybox instead of coreutils. A quick
> investigation seems to point to the busybox mv command needing to know
> if it's OK to overwrite a file, when the coreutils one just overwrites
> it without asking. There may in fact be some deeper root cause for
> this problem, I did not look deeper. See next step for why.
I'd poke busybox about that.
I also just got a fan letter about toybox (from the guy doing
http://www.makelinux.com/emb/fastboot/omap ) that makes me vaguely
wonder if I should start poking at that again.
Something I could do is port busybox applets one at a time to toybox
commands. I tried pushing toybox infrastructure upstream into busybox
and that sort of worked, but not really all that well. I still can't
stomach the current state of toybox, working on that bloated pile of
#ifdefs is no fun and trying to clean it up is like trying to bail out
the middle of the ocean: any space I clear immediately fills up with
cruft again.
Not that I really have time to do so, but eh. If I copied hush and
started cleaning that up and extending it, I might get a reasonable bash
replacement THAT way...
> Next step is to remove autofoo and friends. The general purpose of
> autofoo is to let developers create source tarballs that users can
> compile on any old unix system. The target systems don't need autofoo
> installed to allow such tarballs to compile. So autofoo itself is a
> development tool, and LFS is not supposed to be a development system,
> but a way to get a linux system up and running which can be used to
> install more packages. So, autofoo is not really needed in an LFS
> system. Removing it is good, and lets me get rid of perl, which is
> even better. B-)
autoconf/make is horrible. I have an entire rant about the current
state of makefiles, which I'll spare you of just now.
> Grub was left off for the same reason it was left out of lfs-bootstrap.
I've never really addressed bootloaders, or installing stuff on real
hardware. It's too system-specific, and QEMU's -kernel option allows me
to handwave past the issue entirely for my use cases. :)
> Bash and readline where removed. We already have an older bash as part
> of aboriginal linux.
Which doesn't work with portage, so I needed newer bash as part of the
gentoo bootstrap anyway.
> Readline is only in LFS as a dependency of bash.
> Time will tell if this is a bad move.
I was erring on the side of building more packages rather than less on
the theory that if I could get it to build, anything that actually did
need it could then use it, and driving more cybermen across the board
would find more digits of pi, or something like that. ("Used to drive
sheep across minefields. The principle's the same.")
> Libtool and texinfo where left out as being pointless development
> tools.
Pointless in general, really. Libtool exists to make non-elf systems
behave like elf, meaning on Linux (which has been ELF since 1995) it
serves no purpose and does nothing. The fact that it fails to do
nothing correctly (and thus regularly breaks builds) is a trademark move
of the FSF.
> I had considered leaving out bison, flex, and m4, but they
> ended up being needed to build those bits of LFS that remain, so left
> them in.
Yup. m4 is vaguely cool, flex is a sort of sideways grep (instead of
"find all occurrences of this one regex" it's "find the next occurrence
of any of the regexes in this list, and tell me which one and where").
yacc/bison is something mathematicians like and which I personally find
conceptually unpleasant.
> This left the ulfs-bootstrap package-list looking like this -
>
> setup
> zlib
> m4 #development
> pkg-config #development
> ncurses
> gettext-stub #development internationalization
> gawk #busybox
> iana-etc
> bison #development
> gdbm
> file
> flex #development
> groff
> make #development
> man-db
>
> A much smaller system that should still allow compiling of stuff from
> BLFS.
Good luck. :)
> As a quick sanity check, I installed the one thing from BLFS that I
> can't live without - midnight commander. It has glib as a dependency,
> so that's the first thing I tried to install. It failed due to a lack
> of iconv. The base config for uClibc has the iconv parts commented
> out, uncommenting them and rebuilding fixed up glib. Midnight
> commander installed fine after that. And it actually worked. B-)
I turned on iconv when I was building BLFS for Qualcomm, but that was on
my work machine and I didn't take any of the qualcomm code home with me,
so I have to reproduce all that stuff when I do a blfs-bootstrap. I may
have just installed the gnu libiconv package, I don't remember. (I
wasn't trying to do it RIGHT, I was trying to get the code ready to
demo. Unfortunately, the demo was delayed repeatedly by toolchain
problems, and although we held it right before I left and it was
successful, my contract expired about a week after that and they didn't
have the budget to renew it, and wouldn't get the budget renewal for at
least two more months, so I found another job rather than waiting around.)
I note I haven't even enabled devtmpfs in the builds yet. My todo list
runneth over. :)
> I guess iconv was left out as it's just bloat that is not needed if you
> are not doing any internationalization, for the same reason
> gettext-stub is used instead of gettext in lfs-bootstrap. I think
> gentoo have a stub version of iconv they are working on, but the above
> was easy to do and worked for me. I'm not doing internationalization
> either.
My 2010 blog (http://landley.net/notes-2010.html) has a lot of hits for
iconv.
> My next step will be to install the dependencies of the GUI library I
> want to use for this contract. A lot of those dependencies are in BLFS,
> so those will go in first using the BLFS recipes. This should help to
> shake out any more issues with ulfs. If people are interested, I'll
> ship the results to Rob later. Though the package-list above is the
> important bit, you can just copy the rest from lfs-bootstrap.
I lean towards making the lfs-bootstrap build more configurable by using
the annotations with grep -v. It may need more/better annotations. How
to specify this configuration is a UI issue I haven't come up with a
good answer for yet. Environment variable I guess,
KERNEL_EXTRA="LFS_SKIP=busybox,development" maybe? That could be done
at build time without respinning the control image, which is kind of
important considering how long that sucker takes to build...
> Feel free to let me know if there are other issues with building BLFS
> with this ulfs-bootstrap.
On the Hexagon I built the x11 client libraries and managed to build
xeyes and xboard and rxvt and a couple other things. There was some
hacking around uClibc but they were using 0.9.30 rather than 0.9.31 so
lots of it was backporting stuff...
So all this was made to work once, I just didn't get permission to open
source it.
Rob
1301575452.0