Update pass over the roadmap.
This commit is contained in:
parent
cd9601739e
commit
8dbf4e10d9
262
www/roadmap.html
262
www/roadmap.html
@ -20,6 +20,7 @@
|
||||
<a href=#sash>sash</a>, <a href=#sbase>sbase</a>,
|
||||
<a href=#uclinux>uclinux</a>...</li>
|
||||
<li><a href=#packages>Other Packages</a></li>
|
||||
<li><a href=#todo>TODO list</a></li>
|
||||
</ul>
|
||||
|
||||
<a name="goals" />
|
||||
@ -34,7 +35,7 @@ commplation.</p>
|
||||
<p>The most interesting publicly available standards are A) POSIX-2008 (also
|
||||
known as SUSv4), B) the Linux Standard Base version 4.1, and C) the official
|
||||
<a href=https://www.kernel.org/doc/man-pages/>Linux man pages</a>.
|
||||
But they include commands we've decided not implement, exclude
|
||||
But each of those include commands we've decided not implement, exclude
|
||||
commands or features we have, and don't always entirely match reality.</p>
|
||||
|
||||
<p>The most thorough real world test (other than a large interactive
|
||||
@ -48,19 +49,17 @@ plus <a href=faq.html#cross>musl-cross-make</a> to hermetically build
|
||||
<a href=https://source.android.com>AOSP</a>.</p>
|
||||
|
||||
<p>We've also checked what commands were provided by similar projects
|
||||
(klibc, sash, sbase, embutils,
|
||||
nash, and beastiebox), looked at various vendor configurations of busybox,
|
||||
and collected end user requests.</p>
|
||||
(klibc, sash, sbase, embutils, nash, beastiebox...), looked at various
|
||||
vendor configurations of busybox, and collected end user requests.</p>
|
||||
|
||||
<p>Finally, we'd like to provide a good replacement for the Bash shell,
|
||||
which was the first program Linux ever ran and remains the standard shell
|
||||
of Linux (no matter what Ubuntu says). This doesn't necessarily mean including
|
||||
every last Bash 5.x feature, but does involve {various,features} <(beyond)
|
||||
posix.</p>
|
||||
which was the first program Linux ever ran (leading up to the 0.0.1 release
|
||||
in 1991) and remains the standard shell of Linux (no matter what Ubuntu says).
|
||||
This doesn't necessarily mean including every last Bash 5.x feature, but
|
||||
does involve {various,features} <(beyond) posix.</p>
|
||||
|
||||
<p>See the <a href=status.html>status page</a> for the categorized command list
|
||||
and progress towards implementing it. There's also a
|
||||
<a href=todo.html>historical todo list</a> from the project's 2011 relaunch.</p>
|
||||
and progress towards implementing it.</p>
|
||||
|
||||
<hr />
|
||||
<a name="standards">
|
||||
@ -68,22 +67,30 @@ and progress towards implementing it. There's also a
|
||||
|
||||
<h3><a name=susv4 /><a href="#susv4">POSIX-2008/SUSv4</a></h3>
|
||||
<p>The best standards describe reality rather than attempting to impose a
|
||||
new one. A good standard should document, not legislate.
|
||||
new one. I.E. "A good standard should document, not legislate."
|
||||
Standards which document existing reality tend to be approved by
|
||||
more than one standards body, such ANSI and ISO both approving <a href=https://landley.net/c99-draft.html>C99</a>. That's why IEEE 1003.1-2008,
|
||||
more than one standards body, such as ANSI and ISO both approving <a href=https://landley.net/c99-draft.html>C99</a>. That's why IEEE 1003.1-2008,
|
||||
the Single Unix Specification version 4, and the Open Group Base Specification
|
||||
edition 7 are all the same standard from three sources, but most people just
|
||||
call it "posix" (portable operating system derived from unix).
|
||||
edition 7 are all the same standard from three sources, which most people just
|
||||
call "posix" (short for "portable operating system that works like unix").
|
||||
It's available <a href=https://pubs.opengroup.org/onlinepubs/9699919799>online in full</a>, and may be downloaded as a tarball.
|
||||
Previous versions (<a href=https://pubs.opengroup.org/onlinepubs/009695399/>SUSv3</a> and
|
||||
<a href=https://pubs.opengroup.org/onlinepubs/7990989775/>SUSv2</a>)
|
||||
are also available.
|
||||
(Note:
|
||||
are also available.</p>
|
||||
|
||||
<p>The original Posix was a collection of different standards (POSIX.1
|
||||
from 1988, POSIX.1b from 1993, and POSIX.1c from 1995). The unified
|
||||
SUSv2 came out in 1997 and SUSv3 came out in 2001.
|
||||
<a href=https://pubs.opengroup.org/onlinepubs/9699919799.2008edition/>Posix
|
||||
2008</a> was reissued in 2013 and 2018, the first was minor wordsmithing
|
||||
2008</a> was then reissued in 2013 and 2018, the first was minor wordsmithing
|
||||
with no behavioral changes, the second was to renew a ten year timeout
|
||||
to still be considered a "current standard" by some government regulations.
|
||||
It's still posix-2008/SUSv4/issue 7.)</p>
|
||||
to still be considered a "current standard" by some government regulations,
|
||||
but isn't officially a new standard. It's still posix-2008/SUSv4/Issue 7.
|
||||
The endless committee process to produce
|
||||
"Issue 8" has been ongoing for over 15 years now, with conference
|
||||
calls on mondays and thursdays, mostly to discuss recent bug tracker
|
||||
entries then publish the minutes of the meeting on the mailing list.
|
||||
Prominent committee members have died during this time.</p>
|
||||
|
||||
<h3>Why not just use posix for everything?</h3>
|
||||
|
||||
@ -116,7 +123,7 @@ versions of the standard have been removed, while obsolete commands like
|
||||
cksum, compress, sccs and uucp remain with no mention of modern counterparts
|
||||
like crc32/sha1sum, gzip/xz, svn/git or scp/rsync. Meanwhile posix' description
|
||||
of the commands
|
||||
themselves are missing dozens of features and specify silly things like ebcdic
|
||||
themselves are missing dozens of features, and specify silly things like ebcdic
|
||||
support in dd or that wc should use %d (not %lld) for byte counts. So
|
||||
we have to extensively filter posix to get a useful set of recommendations.</p>
|
||||
|
||||
@ -131,7 +138,7 @@ val what), fortran support (asa fort77), and batch processing support (batch
|
||||
qalter qdel qhold qmove qmsg qrerun qrls qselect qsig qstat qsub).</p>
|
||||
|
||||
<p>Some commands are for a compiler toolchain (ar c99 cflow ctags cxref gencat
|
||||
iconv lex m4 make nm strings strip tsort yacc) which is out of scope for
|
||||
iconv lex m4 make nm strings strip yacc) which is out of scope for
|
||||
toybox and should be supplied externally. (Some of these might be
|
||||
revisited later, but not for toybox 1.0.)</p>
|
||||
|
||||
@ -141,7 +148,7 @@ type ulimit umask unalias wait). These may be implemented as part of the
|
||||
built-in toybox shell, but are not exported into $PATH via symlinks and
|
||||
thus are not part of toybox's main command list. (If you fork a
|
||||
child process and have it "cd" then exit, you've accomplished nothing.)
|
||||
Again, what posix provides is incomplete: a shell also needs exit, if, while,
|
||||
Again, what posix lists as "commands" is incomplete: a shell also needs exit, if, while,
|
||||
for, case, export, set, unset, trap, exec... (And for bash compatibility
|
||||
function, source, declare...)</p>
|
||||
|
||||
@ -167,7 +174,7 @@ csplit cut date dd df diff dirname du echo env expand expr false file find
|
||||
fold fuser getconf grep head id join kill link ln logger logname ls man
|
||||
mkdir mkfifo more mv newgrp nice nl nohup od paste patch printf ps
|
||||
pwd renice rm rmdir sed sh sleep sort split stty tabs tail tee test time
|
||||
touch tput tr true tty uname unexpand uniq unlink uudecode uuencode vi wc
|
||||
touch tput tr true tsort tty uname unexpand uniq unlink uudecode uuencode vi wc
|
||||
who xargs zcat
|
||||
</span>
|
||||
</b></blockquote>
|
||||
@ -182,11 +189,11 @@ being consumed by <a href=https://landley.net/notes-2010.html#18-07-2010>the Lin
|
||||
<p>Where POSIX allowed its standards process to be compromised
|
||||
by leaving things out (but what
|
||||
they DID standardize tends to be respected, if sometimes obsolete),
|
||||
the Linux Standard Base's failure mode is different. They respond to
|
||||
pressure by including anything their members pay them enough to promote,
|
||||
the Linux Standard Base's failure mode was different. They responded to
|
||||
pressure by including anything their members paid them enough to promote,
|
||||
such as allowing Red Hat to push
|
||||
RPM into the standard even though all sorts of distros (Debian, Slackware, Arch,
|
||||
Gentoo, Android) don't use it and never will. This means anything in the LSB is
|
||||
Gentoo, Android, Alpine...) don't use it and never will. This means anything in the LSB is
|
||||
at best a suggestion: arbitrary portions of this standard are widely
|
||||
ignored.</p>
|
||||
|
||||
@ -199,19 +206,20 @@ of those donors</a> regardless of technical merit. (The Linux Foundation, which
|
||||
maintains the LSB, is NOT a 501c3. It's a 501c6, the
|
||||
same kind of legal entity as the Tobacco Institute and
|
||||
<a href=https://lwn.net/Articles/706585/>Microsoft's</a>
|
||||
old "<a href=https://en.wikipedia.org/wiki/Don%27t_Copy_That_Floppy>Don't Copy That Floppy</a>" program.) Debian officially
|
||||
old "<a href=https://en.wikipedia.org/wiki/Don%27t_Copy_That_Floppy>Don't Copy That Floppy</a>" campaign.) Debian officially
|
||||
<a href=http://lwn.net/Articles/658809>washed its hands of LSB</a> by
|
||||
refusing to adopt release 5.0 in 2015, and no longer even pretends to support
|
||||
it (which affects Debian derivatives like Ubuntu and Knoppix). Toybox has
|
||||
stayed on 4.1 for similar reasons: a lot of historical effort went into
|
||||
producing the standard before the Linux Foundation took over.</p>
|
||||
stayed on 4.1 for similar reasons.</p>
|
||||
|
||||
<p>That said, Posix by itself isn't enough, and this is the next most
|
||||
comprehensive standards effort for Linux so far, so we salvage what we can.</p>
|
||||
comprehensive standards effort for Linux so far, so we salvage what we can.
|
||||
A lot of historical effort went into producing the standard before the
|
||||
Linux Foundation took over.</p>
|
||||
|
||||
<h3>Analysis</h3>
|
||||
|
||||
<p>The LSB specifies a <a href=http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/cmdbehav.html>list of command line
|
||||
<p>LSB 4.1 specifies a <a href=http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/cmdbehav.html>list of command line
|
||||
utilities</a>:</p>
|
||||
|
||||
<blockquote><b>
|
||||
@ -223,8 +231,8 @@ patch pidof remove_initd renice sed sendmail seq sh shutdown su sync
|
||||
tar umount useradd userdel usermod xargs zcat
|
||||
</b></blockquote>
|
||||
|
||||
<p>Where posix specifies one of those commands, LSB's deltas tend to be
|
||||
accomodations for broken tool versions which aren't up to date with the
|
||||
<p>Where posix specifies one of those commands, LSB's deltas tended to be
|
||||
accomodations for broken tool versions which ween't up to date with the
|
||||
standard yet. (See <a href=http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/more.html>more</a> and <a href=http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/xargs.html>xargs</a>
|
||||
for examples.)</p>
|
||||
|
||||
@ -234,7 +242,7 @@ various legacy tool implementations "compliant", this means we're mostly
|
||||
interested in the set of LSB tools that aren't mentioned in posix.</p>
|
||||
|
||||
<p>Of these, gettext and msgfmt are internationalization, install_initd and
|
||||
remove_initd weren't present in Ubuntu 10.04, lpr is out of scope,
|
||||
remove_initd weren't present even in Ubuntu 10.04, lpr is out of scope,
|
||||
lsb_release just reports information in /etc/os-release, and sendmail's
|
||||
turned into a pile of cryptographic verification and DNS shenanigans due
|
||||
to spammers.</p>
|
||||
@ -252,12 +260,13 @@ su sync tar umount useradd userdel usermod zcat
|
||||
|
||||
<h3><a name=rfc /><a href="#rfc">IETF RFCs and Man Pages</a></h3>
|
||||
|
||||
<p>They're very nice, but there's thousands of them.</p>
|
||||
<p>They're very nice, but there's thousands of them. The signal to noise
|
||||
ratio here is terrible.</p>
|
||||
|
||||
<p>Discussion of standards wouldn't be complete without the Internet
|
||||
Engineering Task Force's "<a href=https://www.rfc-editor.org/in-notes/rfc-index.txt>Request For Comments</a>" collection and Michael Kerrisk's
|
||||
<a href=https://www.kernel.org/doc/man-pages/>Linux man-pages project</a>.
|
||||
Except these aren't standards, they're collections of documentation with
|
||||
<a href=https://www.kernel.org/doc/man-pages/>Linux man-pages project</a>...
|
||||
except these aren't standards, they're collections of documentation with
|
||||
low barriers to inclusion. They're not saying "you should support
|
||||
X", they're saying "if you do, here's how".
|
||||
Thus neither really helps us select which commands to include.</p>
|
||||
@ -275,13 +284,14 @@ the result. As with man pages they can be <a href=https://www.ietf.org/rfc/rfc06
|
||||
<a href=https://www.ietf.org/rfc/rfc1951.txt>terse and impenetrable</a>,
|
||||
have developed a certain amount of <a href=https://www.ietf.org/rfc/rfc8179.txt>bureaucracy</a> over the years, and often the easiest way to understand what
|
||||
they <a href=https://www.ietf.org/rfc/rfc4330.txt>document</a> is to find an <a href=https://www.ietf.org/rfc/rfc1769.txt>earlier version</a> to read first.
|
||||
(The greybeard community problem where all documentation is written by people
|
||||
who don't remember NOT already knowing this stuff.)</p>
|
||||
(This is an example of the greybeard community problem, where all current
|
||||
documentation was written by people who don't remember NOT already knowing
|
||||
this stuff and the resources they originally learned from are long gone.)</p>
|
||||
|
||||
<p>That said, RFC documents can be useful (especially for networking protocols)
|
||||
and the four URL templates the recommended starting files
|
||||
for new commands (toys/example/{skeleton,hello}.c) provide point to posix, lsb,
|
||||
man, and rfc pages.</p>
|
||||
for new commands (hello.c and skeleton.c in the toys/example directory)
|
||||
provide point to example posix, lsb, man, and rfc pages online.</p>
|
||||
|
||||
<hr />
|
||||
<a name="dev_env">
|
||||
@ -310,18 +320,18 @@ resize2fs tune2fs fsck.ext2 genext2fs mke2fs xzcat
|
||||
configure, make, and install in each package, and providing basic command line
|
||||
facilities such as a text editor. (It does not include a compiler toolchain or
|
||||
C library, those are outside the scope of the toybox project, although mkroot
|
||||
has a <a href=https://landley.net/code/qcc>potentialy follow-up project</a>.
|
||||
has a <a href=https://landley.net/code/qcc>potential follow-up project</a>.
|
||||
For now we use distro toolchains,
|
||||
<a href=https://github.com/richfelker/musl-cross-make>musl-cross-make</a>,
|
||||
and the Android NDK for build testing.)
|
||||
That build system also instaled bash 2.05b as #!/bin/sh and its scripts
|
||||
That build system also installed bash 2.05b as #!/bin/sh and its scripts
|
||||
required bash extensions not present in shells such as busybox ash.
|
||||
To replace that toysh needs to supply several bash extensions _and_ work
|
||||
To replace that, toysh needs to supply several bash extensions _and_ work
|
||||
when called under the name "bash".</p>
|
||||
|
||||
<p>The above command list was collected using a command line recording wrapper
|
||||
(scripts/record-commands and toys/example/logpath.c) which scripts/mkroot.sh
|
||||
also uses to populate root/log/*-commands.txt. Try
|
||||
(mkroot/record-commands and toys/example/logpath.c) which mkroot/mkroot.sh
|
||||
also uses to populate root/build/log/*-commands.txt. Try
|
||||
<b>awk '{print $1}' root/build/log/*-commands.txt | sort -u | grep -v musl | xargs</b>
|
||||
after building a mkroot target to see the list of commands called out
|
||||
of the $PATH during that build.</p>
|
||||
@ -351,7 +361,7 @@ project ("mkroot") designed to use an existing cross+native toolchain (such as
|
||||
or the Android NDK) instead of building its own cross and native compilers
|
||||
from source. In 2019 the still-incomplete
|
||||
mkroot was merged into toybox as the "make root" target (which runs
|
||||
scripts/mkroot.sh). This is intended
|
||||
mkroot/mkroot.sh). This is intended
|
||||
as a simpler way of providing essentially the same build environment, and doesn't
|
||||
significantly affect the rest of this analysis (although the "rebuild itself
|
||||
from source" test should now include building musl-cross-make under either
|
||||
@ -453,7 +463,7 @@ replace existing Android versions, so we should take into account Android's use
|
||||
cases when doing so. This includes:</p>
|
||||
<blockquote><b>
|
||||
<span id=toolbox>
|
||||
dd getevent gzip modprobe newfs_msdos sh
|
||||
getevent gzip modprobe newfs_msdos sh
|
||||
</span>
|
||||
</b></blockquote>
|
||||
|
||||
@ -465,7 +475,7 @@ the libmodprobe-based implementation.) These should be a priority for
|
||||
cleanup:</p>
|
||||
|
||||
<blockquote><b>
|
||||
bc dd diff expr getfattr lsof more stty tr traceroute
|
||||
diff expr getopt tr brctl getfattr lsof modprobe more stty traceroute vi
|
||||
</b></blockquote>
|
||||
|
||||
<p>Android wishlist:</p>
|
||||
@ -499,7 +509,7 @@ awk bc bzip2 jar java javap m4 make python python2.7 python3 xz
|
||||
</b></blockquote>
|
||||
|
||||
<p>Subtracting what's already in toybox (including the following toybox toys
|
||||
that are still in pending: <code>dd diff expr getopt gzip lsof tr</code>),
|
||||
that are still in pending: <code>diff expr gzip lsof tr</code>),
|
||||
that leaves:</p>
|
||||
|
||||
<blockquote><b>
|
||||
@ -606,7 +616,7 @@ usleep vi watch wc wget which who whoami xargs xzcat yes zcat
|
||||
</span>
|
||||
</b></blockquote>
|
||||
|
||||
|
||||
<p>Nobody seems entirely sure why.</p>
|
||||
|
||||
<a name="fhs" />
|
||||
<hr /><a href=fhs>Filesystem Hierachy Standard</a>
|
||||
@ -619,8 +629,8 @@ managed to achieve before they chased away the hobbyists maintaining it.
|
||||
Only one version (3.0 in 2015) has been released since the Linux Foundation
|
||||
absorbed the FHS. The previous release, Version 2.3, was released in 2004.
|
||||
The Linux Foundation did not retain earlier versions. The contents of
|
||||
the relevant sections appear identical between the two versions, the
|
||||
Linux Foundation just added section numbers.</p>
|
||||
the relevant sections appear identical between the two versions, in the
|
||||
11 years between releases the Linux Foundation just added section numbers.</p>
|
||||
|
||||
<p><a href=https://refspects.linuxfoundation.org/FHS_3.0/fhs-3.0.html>FHS 3.0</a>
|
||||
section 3.4.2 requires commands to be in the /bin directory, and then 3.4.3
|
||||
@ -629,9 +639,9 @@ and then 3.16.2 and 3.16.3 similarly cover /sbin. There are linux
|
||||
specific sections in 6.1.2 and 6.1.6 but everything in them is obsolete.</p>
|
||||
|
||||
<p>The /bin options include csh but not bash, and ed but not vi.
|
||||
The /sbin options have update which seems obsolete (filesystem
|
||||
The /sbin options have "update" which seems obsolete (filesystem
|
||||
buffers haven't needed a userspace process to flush them for DECADES),
|
||||
fastboot and fasthalt (reboot and halt have -nf), and
|
||||
"fastboot" and "fasthalt" (reboot and halt have -nf), and
|
||||
fsck.* and mkfs.* that don't actually specify any specific filesystems.
|
||||
Removing that gives us:</p>
|
||||
|
||||
@ -656,15 +666,15 @@ which sed make bash patch gzip bzip2 tar cpio unzip rsync file bc wget
|
||||
</b></p></blockquote>
|
||||
|
||||
<p>(It also lists binutils gcc g++ perl python, and for debian it wants
|
||||
build-essential. And it wants file to be in /usr/bin because
|
||||
the build-essential meta-package. And it wants file to be in /usr/bin because
|
||||
<a href=https://git.busybox.net/buildroot/tree/support/dependencies/dependencies.sh?h=2018.02.x#n84>libtool
|
||||
breaks otherwise</a>.)</p>
|
||||
|
||||
<p>Oddly, buildroot can't NOT cross compile. Buildroot does not support a cross toolchain that lives in "/usr/bin"
|
||||
with a prefix of "" (if you try, and chop out the test for a blank prefix,
|
||||
it dies trying to run "/usr/bin/-gcc"). You can patch your way to
|
||||
making it work if you try, but buildroot's developers explicitly do not
|
||||
support this.</p>
|
||||
with a prefix of "". If you try, and chop out the test for a blank prefix,
|
||||
it dies trying to run "/usr/bin/-gcc". In theory you can modify any open source
|
||||
project to do anything if you rewrite enough of it, but buildroot's developers
|
||||
explicitly do not support this usage model.</p>
|
||||
|
||||
<hr /><a name=klibc />
|
||||
<h2>klibc:</h2>
|
||||
@ -702,19 +712,15 @@ which removes mknodes, mksyntax, sha1hash, and fixdep from the list.
|
||||
"rm -rf -- $@", and minips is more commonly called "ps": I'm not doing aliases
|
||||
for these oddball names.
|
||||
The "kinit" command is another gratuitous rename, it's init running as PID 1.
|
||||
The halt, poweroff, and reboot commands work with it.</p>
|
||||
|
||||
<p>Yet more stale forks of dash and gzip got sucked in here (see "dubious
|
||||
The halt, poweroff, and reboot commands work with it.
|
||||
Yet more stale forks of dash and gzip got sucked in here (see "dubious
|
||||
license terms" above).</p>
|
||||
|
||||
<p>In theory "blkid" or "file" handle fstype (and df for mounted filesystems),
|
||||
but we could do fstype.</p>
|
||||
|
||||
<p>We should implement nfsmount, and probably smbmount
|
||||
and p9mount even though this hasn't got one. The reason these aren't
|
||||
in the base "mount" command is they interactively query login credentials.</p>
|
||||
|
||||
<p>The ipconfig command here has a built in dhcp client, so it's ifconfig
|
||||
but we could do fstype. We should also implement nfsmount, and probably smbmount
|
||||
and p9mount even though this hasn't got one. (The reason these aren't
|
||||
in the base "mount" command is they interactively query login credentials.)
|
||||
The ipconfig command here has a built in dhcp client, so it's ifconfig
|
||||
and dhcpcd and maybe some other stuff.</p>
|
||||
|
||||
<p>The resume command is... weird. It finds a swap partition and reads data
|
||||
@ -769,8 +775,8 @@ non-configurable iconv now that utf8+unicode exist.</li>
|
||||
unistd.h; it probably belongs in the development toolchain.</li>
|
||||
<li><b>getent</b> handles retrieving entries from passwd-style databases
|
||||
(in a rather lame way) and is trivially replacable by grep.</li>
|
||||
<li><b>locale</b> was discussed under <a href=#susv4>posix</a>.
|
||||
localedef compiles locale definitions, which musl currently does not use.</li>
|
||||
<li><b>locale</b> was discussed under <a href=#susv4>posix</a>.</li>
|
||||
<li><b>localedef</b> compiles locale definitions, which musl currently does not use.</li>
|
||||
<li><b>mtrace</b> is a perl script to use the malloc debugging that glibc has built-in;
|
||||
this is not relevant for musl, and would necessarily vary with libc.</li>
|
||||
<li><b>nscd</b> is a name service caching daemon, which is not yet relevant for musl.</li>
|
||||
@ -794,7 +800,7 @@ outputting a great deal of extra information about each timezone.</li>
|
||||
<li><b>zic</b> converts a description of a timezone to a file in tz format.</li>
|
||||
</ul>
|
||||
|
||||
<p>We implemented getconf, and I could see maybe arguing for ncsd.
|
||||
<p>We implemented getconf and iconv, and I could see maybe arguing for ncsd.
|
||||
The rest are not relevant to toybox.</p>
|
||||
|
||||
</b></blockquote>
|
||||
@ -1394,43 +1400,12 @@ assembler for each architecture.)</p>
|
||||
|
||||
<h3>Packages from LFS ch6 toybox does NOT plan to replace:</h3>
|
||||
|
||||
<ul>
|
||||
<li><b>linux-api-headers</b></li>
|
||||
<li><b>man-pages glibc</b></li>
|
||||
<li><b>zlib</b></li>
|
||||
<li><b>readline</b></li>
|
||||
<li><b>gmp</b></li>
|
||||
<li><b>mpfr</b></li>
|
||||
<li><b>mpc</b></li>
|
||||
<li><b>gcc</b></li>
|
||||
<li><b>pkg-config</b></li>
|
||||
<li><b>ncurses</b></li>
|
||||
<li><b>acl</b></li>
|
||||
<li><b>libcap</b></li>
|
||||
<li><b>psmisc</b></li>
|
||||
<li><b>iana-etc</b></li>
|
||||
<li><b>libtool</b></li>
|
||||
<li><b>gdbm</b></li>
|
||||
<li><b>gperf</b></li>
|
||||
<li><b>expat</b></li>
|
||||
<li><b>perl</b></li>
|
||||
<li><b>XML::Parser</b></li>
|
||||
<li><b>intltool</b></li>
|
||||
<li><b>autoconf</b></li>
|
||||
<li><b>automake</b></li>
|
||||
<li><b>gettext</b></li>
|
||||
<li><b>libelf</b></li>
|
||||
<li><b>libffi</b></li>
|
||||
<li><b>openssl</b></li>
|
||||
<li><b>python</b></li>
|
||||
<li><b>ninja</b></li>
|
||||
<li><b>meson</b></li>
|
||||
<li><b>check</b></li>
|
||||
<li><b>groff</b></li>
|
||||
<li><b>grub</b></li>
|
||||
<li><b>libpipeline</b></li>
|
||||
<li><b>texinfo</b></li>
|
||||
</ul>
|
||||
<blockquote><p><b>
|
||||
linux-api-headers man-pages glibc zlib readline gmp mpfr mpc gcc pkg-config
|
||||
ncurses acl libcap psmisc iana-etc libtool gdbm gperf expat perl XML::Parser
|
||||
intltool autoconf automake gettext libelf libffi openssl python ninja meson
|
||||
check groff grub libpipeline texinfo
|
||||
</b></p></blockquote>
|
||||
|
||||
<p>That said, we do implement our own zlib and readline replacements, and
|
||||
presumably _could_ export them as library bindings. Plus we provide
|
||||
@ -1447,5 +1422,72 @@ created busybox mdev way back when (which replaces it) and plans to do a
|
||||
new one for toybox as soon as we work out what subset is still needed now that
|
||||
devtmpfs is available.</p>
|
||||
|
||||
<hr /><a name=todo /><h2>TODO list</h2>
|
||||
|
||||
<ul>
|
||||
<li><p>Fill out "development" command list (finish toysh, implement awk, etc.)</p></li>
|
||||
|
||||
<p><li>Handle "pending" directory.
|
||||
<ul>
|
||||
<li>Cleanup and promote the "pending" commands used to run mkroot.</li>
|
||||
<ul><li>Enabled by $PENDING in mkroot.sh (sh route)</li></ul>
|
||||
|
||||
<li>Cleanup and promote the "pending" commands used to build mkroot.</li>
|
||||
<ul><li>In scripts/install.sh the $PENDING list symlinked from the host $PATH
|
||||
into "make airlock" directory (expr git tr bash sh gzip awk bison flex make).</li></ul>
|
||||
<li>Cleanup and promote all $PENDING commands used by android
|
||||
<ul><li><b>grep pending Android.bp</b>
|
||||
in <a href=https://android.googlesource.com/platform/external/toybox>their repo</a>
|
||||
(diff expr tr brctl getfattr lsof modprobe more stty traceroute vi)</li></ul>
|
||||
</li>
|
||||
|
||||
<li>Cleanup/promote/delete remaining "pending" commands</li>
|
||||
<ul><li>Once empty, remove toys/pending and maybe collape together other
|
||||
directories into just toys/*.c (with "default n" meaning examples, and
|
||||
a "posix_defconfig" target alongside macos/bsd/android).</li></ul>
|
||||
|
||||
</ul></li></p>
|
||||
|
||||
<li><p>Replace kconfig/ with a new implementation (menu/def/yes/no/old).</p></li>
|
||||
|
||||
<p><li>Automate Linux From Scratch build.
|
||||
<ul>
|
||||
|
||||
<li>Automate the <a href=https://linuxfromscratch.org/lfs/downloads/stable/LFS-BOOK-12.0-NOCHUNKS.html>existing build</a>
|
||||
<ul>
|
||||
<li>create chroot directory from host (chapters 4-6)</li>
|
||||
<li>setup/launch chroot directory (start of chapter 7)</li>
|
||||
<li>build in chroot directory (chapters 7-10)</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>Add record-commands support (both inside and outside chroot)</li>
|
||||
<li>Build host->chroot part with PATH=$PWD/airlock (moving one command over at a time)
|
||||
<ul><li>Set up native compiler, enumerate/build/install "temp stuff" toybox
|
||||
doesn't provide yet (make, busybox commands, etc).</li></ul>
|
||||
</li>
|
||||
|
||||
<li>Run host->chroot build under mkroot, with airlock built+packaged for
|
||||
target (toybox, native compiler, temp stuff from busybox or "make")</li>
|
||||
<li>Run chroot build to completion in chroot under mkroot (kernel etc smoketest)</li>
|
||||
<li>Run chroot build outside chroot (keeping toybox at start of $PATH)
|
||||
to prove toybox commands sufficient to build ALL packages</li>
|
||||
<li>Package LFS build (mkroot/packages/lfs)
|
||||
|
||||
<ul>
|
||||
<li>host/chroot/target build scripts</li>
|
||||
<li><a href=http://ftp.osuosl.org/pub/lfs/lfs-packages/>download</a> and
|
||||
setup packages.</li>
|
||||
<li>Note: I already did this <a href=https://github.com/landley/control-images/tree/master/images/lfs-bootstrap/mnt>long ago</a> for LFS 6.7.</li>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</ul></p>
|
||||
|
||||
<li><p>1.0 release</p></li>
|
||||
|
||||
<li><p>Tackle AOSP build.</p></li>
|
||||
</ul>
|
||||
|
||||
<!-- #include "footer.html" -->
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user