From 79af65b116a736e7f5ac5b6609664fd37805d5ec Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Mon, 16 Nov 2015 03:13:22 -0600 Subject: Rewrite of the about page, re-triage of sbase, and other documentation updates. --- www/roadmap.html | 73 ++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 44 insertions(+), 29 deletions(-) (limited to 'www/roadmap.html') diff --git a/www/roadmap.html b/www/roadmap.html index 9878133e..c31e1f34 100755 --- a/www/roadmap.html +++ b/www/roadmap.html @@ -86,7 +86,10 @@ revisited later, but not for toybox 1.0.)

separate executables (alias bg cd command fc fg getopts hash jobs kill read type ulimit umask unalias wait). These may be revisited as part of a built-in toybox shell, but are not exported into $PATH via symlinks. (If you fork a -child process and have it "cd" then exit, you've accomplished nothing.)

+child process and have it "cd" then exit, you've accomplished nothing. +This is not a complete list, a shell also needs exit, if, while, for, case, +export, set, unset, trap, exec... And for bash compatability, function and +source.)

A few other commands are judgement calls, providing command-line internationalization support (iconv locale localedef), System V inter-process @@ -220,15 +223,23 @@ self-bootstrapping build still uses the following busybox commands, not yet supplied by toybox:

-awk dd diff expr fdisk ftpd ftpget ftpput gunzip -gzip less pgrep ping pkill ps route sh sha512sum tar test tr unxz vi -wget xzcat zcat +awk bunzip2 bzcat dd diff expr fdisk ftpd ftpget +ftpput gunzip gzip less pgrep ping pkill route sh +sha512sum tar test tr unxz vi wget xzcat zcat

-

Many of those are in "pending". Most of the archive commands are needed -because busybox tar doesn't call external versions. The remaining "difficult" +

Many of those are in "pending". The remaining "difficult" commands are vi, awk, and sh.

+

Building Linux From Scratch is not the same as building the +Android Open Source Project, +but after toybox 1.0 focus may shift to modifying the AOSP build +to reduce dependencies. (It's fairly likely we'll have to add at least +a read-only git utility so repo can download the build's source code, +but that's actually not +that hard. We'll probably also need our own "make" at some point after +1.0.)

+

Use case: Replacing Android Toolbox

@@ -311,7 +322,7 @@ from its core system, and is installing toybox as
arch base64 users dir vdir unexpand shred join csplit -hostid nproc runcon sha224 sha256 sha384 sha512 sha3 mkfs.vfat fsck.vfat +hostid nproc runcon sha224sum sha256sum sha384sum sha512sum sha3sum mkfs.vfat fsck.vfat dosfslabel uname stdbuf pinky diff3 sdiff zcmp zdiff zegrep zfgrep zless zmore
@@ -342,19 +353,19 @@ replacement.

musl), klibc builds a random assortment of executables to run init scripts with. There's no multiplexer command, these are individual executables:

-

+

cat chroot cpio dd dmesg false fixdep fstype gunzip gzip halt ipconfig kill kinit ln losetup ls minips mkdir mkfifo mknodes mksyntax mount mv nfsmount nuke pivot_root poweroff readlink reboot resume run-init sh sha1hash sleep sync true umount uname zcat -

+

To get that list, build klibc according to the instructions (I looked at version 2.0.2 and did cd klibc-*; ln -s /output/of/kernel/make/headers_install linux; make) then echo $(for i in $(find . -type f); do file $i | grep -q executable && basename $i; done | grep -v '[.]g$' | sort -u) to find -executables, then eliminated the *.so files and *.shared duplicates.

+executables, then eliminate the *.so files and *.shared duplicates.

Some of those binaries are build-time tools that don't get installed, which removes mknodes, mksyntax, sha1hash, and fixdep from the list. @@ -368,7 +379,7 @@ for the oddball names.

license terms" above), adding nothing to the other projects we've looked at. But we still need sh, gunzip, gzip, and zcat to replace this package.

-

By the time I did the analysis toybox already had cat, chroot, dmesg, false, +

At the time I did the initial analysis toybox already had cat, chroot, dmesg, false, kill, ln, losetup, ls, mkdir, mkfifo, readlink, rm, switch_root, sleep, sync, true, and uname.

@@ -514,30 +525,34 @@ it sucks in -lz from the host.)

sbase:

-

It's on suckless. So far it's -implemented:

+

It's on suckless in +two parts. As of November 2015 it's +implemented the following (renaming "cron" to "crond" for +consistency, and yanking "sponge", "mesg", "pagesize", "respawn", and +"vtallow"):

-basename cat chmod chown cksum cmp cp date dirname echo false fold grep head -kill ln ls mc mkdir mkfifo mv nl nohup pwd rm seq sleep sort tail tee test -touch true tty uname uniq wc yes +basename cal cat chgrp chmod chown chroot cksum cmp cols comm cp crond cut date +dirname du echo env expand expr false find flock fold getconf grep head +hostname join kill link ln logger logname ls md5sum mkdir mkfifo mktemp mv +nice nl nohup od paste printenv printf pwd readlink renice rm rmdir sed seq +setsid sha1sum sha256sum sha512sum sleep sort split strings sync tail +tar tee test tftp time touch tr true tty uname unexpand uniq unlink uudecode +uuencode wc which xargs yes

-

And has a TODO list:

+

and

-cal chgrp chvt comm cut df diff du env expand expr id md5sum nice paste -printenv printf readlink rmdir seq sha1sum split sync test tr unexpand unlink +chvt clear dd df dmesg eject fallocate free id login mknod mountpoint +passwd pidof ps stat su truncate unshare uptime watch who

-

At triage time, of the first list I still need to do: fold grep mc mv nl. Of -the second list: diff expr paste printf split test tr unexpand who.

-

s6

@@ -666,18 +681,18 @@ mount_ffs mv pfctl ping poweroff ps reboot rm route sed sh stty sysctl tar test traceroute umount vi wiconfig

-

Apparently lv is the missing link ed and vi, copyright 1982-1997 (do not -want), ex is another obsolete vi mode, lesskey is "used to +

Apparently lv is the missing link between ed and vi, copyright 1982-1997 (do +not want), ex is another obsolete vi mode, lesskey is "used to specify a set of key bindings to be used with less", and csh is a shell they -sucked in, [ is an alias for test. Several more bsd-isms that don't have Linux +sucked in (even though they have mksh?), [ is an alias for test. Several more bsd-isms that don't have Linux equivalents (even in the ubuntu "install this package" search) are -disklabel, fsck_ffs, mount_ffs, and pfctl. And wiconfig is a wavelan interface -network card driver utility. Subtracting all that and the commands toybox -already implements at triage time, we get:

+disklabel, fsck_ffs, mount_ffs, and pfctl. And wiconfig is a +wavelan interface network card driver utility. Subtracting all that and the +commands toybox already implements at triage time, we get:

-fdisk fsck getty halt ifconfig init kill less mksh more mount mv ping poweroff +fdisk fsck getty halt ifconfig init kill less more mount mv ping poweroff ps reboot route sed sh stty sysctl tar test traceroute umount vi

-- cgit v1.2.3