aboutsummaryrefslogtreecommitdiff
path: root/www/roadmap.html
diff options
context:
space:
mode:
Diffstat (limited to 'www/roadmap.html')
-rwxr-xr-xwww/roadmap.html73
1 files changed, 44 insertions, 29 deletions
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.)</p>
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.)</p>
+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.)</p>
<p>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:</p>
<blockquote><p>
-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
</p></blockquote>
-<p>Many of those are in "pending". Most of the archive commands are needed
-because busybox tar doesn't call external versions. The remaining "difficult"
+<p>Many of those are in "pending". The remaining "difficult"
commands are vi, awk, and sh.</p>
+<p>Building Linux From Scratch is not the same as building the
+<a href=https://source.android.com>Android Open Source Project</a>,
+but after toybox 1.0 focus may shift to <a href=http://landley.net/aboriginal/about.html#hairball>modifying the AOSP build</a>
+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 <a href=https://www.youtube.com/watch?v=P7n6G2IL6eo>not
+that hard</a>. We'll probably also need our own "make" at some point after
+1.0.)</p>
+
<hr />
<h2><a name=android /><a href="#android">Use case: Replacing Android Toolbox</a></h2>
@@ -311,7 +322,7 @@ from its core system, and is installing toybox as
<blockquote><b>
<span id=tizen>
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
</span>
</b></blockquote>
@@ -342,19 +353,19 @@ replacement.</p>
musl), klibc builds a random assortment of executables to run init scripts
with. There's no multiplexer command, these are individual executables:</p>
-<blockquote><p>
+<blockquote><p><b>
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
-</p></blockquote>
+</b></p></blockquote>
<p>To get that list, build klibc according to the instructions (I
<a href=http://landley.net/notes-2013.html#23-01-2013>looked at</a> version
2.0.2 and did cd klibc-*; ln -s /output/of/kernel/make/headers_install
linux; make) then <b>echo $(for i in $(find . -type f); do file $i | grep -q
executable && basename $i; done | grep -v '[.]g$' | sort -u)</b> to find
-executables, then eliminated the *.so files and *.shared duplicates.</p>
+executables, then eliminate the *.so files and *.shared duplicates.</p>
<p>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.</p>
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.</p>
-<p>By the time I did the analysis toybox already had cat, chroot, dmesg, false,
+<p>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.</p>
@@ -514,30 +525,34 @@ it sucks in -lz from the host.)</p>
<a name=sbase />
<h2>sbase:</h2>
-<p>It's <a href=http://git.suckless.org/sbase>on suckless</a>. So far it's
-implemented:</p>
+<p>It's <a href=http://git.suckless.org/sbase>on suckless</a> in
+<a href=http://git.suckless.org/ubase>two parts</a>. As of November 2015 it's
+implemented the following (renaming "cron" to "crond" for
+consistency, and yanking "sponge", "mesg", "pagesize", "respawn", and
+"vtallow"):</p>
<blockquote><p>
<span id=sbase_cmd>
-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
</span>
</p></blockquote>
-<p>And has a TODO list:</p>
+<p>and<p>
<blockquote><p>
<span id=sbase_cmd>
-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
</span>
</p></blockquote>
-<p>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.</p>
-
<hr />
<a name=s6 />
<h2>s6</h2>
@@ -666,18 +681,18 @@ mount_ffs mv pfctl ping poweroff ps reboot rm route sed sh stty sysctl tar test
traceroute umount vi wiconfig
</p></blockquote>
-<p>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
+<p>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:</p>
+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:</p>
<blockquote><p>
<span id=beastiebox_cmd>
-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
</span>
</p></blockquote>