From f4c9a32a111652ed4a454f6a6d7d7d0091b983e4 Mon Sep 17 00:00:00 2001
From: Rob Landley
Date: Wed, 15 Apr 2020 00:30:59 -0500
Subject: Add "other packages" section to roadmap explaining what Linux From
Scratch packages toybox commands provide partial or complete replacements
for.
---
www/roadmap.html | 194 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 194 insertions(+)
mode change 100755 => 100644 www/roadmap.html
(limited to 'www/roadmap.html')
diff --git a/www/roadmap.html b/www/roadmap.html
old mode 100755
new mode 100644
index 81dc6ff3..5eba3acc
--- a/www/roadmap.html
+++ b/www/roadmap.html
@@ -41,6 +41,7 @@ and progress towards implementing it.
Miscelaneous: klibc, glibc,
sash, sbase,
uclinux...
+Other Packages
@@ -1101,5 +1102,198 @@ ascii crc32 devmem fmt i2cdetect i2cdump i2cget i2cset mcookie prlimit sntp ulim
+
+
+Other packages
+
+System administrators have asked what other Linux packages toybox commands
+replace, so they can annotate alternatives in their package management system.
+
+This section uses the package definitions from Chapter 6 of
+Linux From Scratch 9.0). Each package lists what we currently
+replace, pending commands [in square brackets], and what we DON'T plan to
+implement.
+
+Each "see also" note means the listed package also installs the listed shared
+libraries. (While toybox contains equivalent functionality to a lot of these
+shared libraries in its lib/ directory, it does not currently provide a shared
+library interface.)
+
+Packages toybox plans to provide complete-ish replacents for:
+
+- file: file (see also: libmagic)
+- m4: [m4]
+- bc: [bc] [dc]
+- bison: [yacc] (not: bison, see also: liby)
+- flex: [lex] (not: flex flex++, see also: libfl)
+- make: [make]
+- sed: sed
+- grep: grep egrep fgrep
+- bash: bash sh (not: bashbug)
+- diffutils: cmp [diff] [diff3] [sdiff]
+- gawk: [awk] (not: gawk gawk-5.0.1)
+- findutils: find xargs (not: locate updatedb)
+- less: less (not: lessecho lesskey)
+- gzip: zcat [gzip] [gunzip] [zcmp] [zdiff] [zegrep] [zfgrep] [zgrep] [zless] [zmore]
+(not: gzexe uncompress zforce znew)
+- make: [make]
+- patch: patch
+- tar: tar
+- procps-ng: free pgrep pidof pkill ps sysctl top uptime vmstat w watch
+[pmap] [pwdx] [slabtop]
+(not: tload, see also libprocps)
+- sysklogd: [klogd] [syslogd]
+- sysvinit: [init] halt poweroff reboot killall5 [shutdown]
+(not telinit runlevel fstab-decode bootlogd)
+- man: man (but not accessdb apropos catman lexgrog mandb manpath whatis,
+see also libman libmandb)
+- vim: vi xxd (but not ex, rview, rvim, view, vim, vimdiff, vimtutor)
+- sysvinit: [init] halt poweroff reboot killall5 [shutdown]
+(not telinit runlevel fstab-decode bootlogd)
+- kmod: insmod lsmod rmmod modinfo [modprobe]
+(not: depmod kmod)
+- attr: [getfattr] setfattr (not: attr, see also: libattr)
+- shadow: [chfn] [chpasswd] [chsh] [groupadd] [groupdel] [groupmod]
+[newusers] passwd [su] [useradd] [userdel] [usermod]
+[lastlog] [login] [newgidmap] [newuidmap]
+(not: chage expiry faillog groupmems grpck logoutd newgrp nologin pwck sg
+vigr vipw, grpconv grpunconv pwconv pwunconv, chgpasswd gpasswd)
+- psmisc: killall [fuser] [pstree] [peekfd] [prtstat]
+(not: pslog pstree.x11)
+- inetutils: dnsdomainname [ftp] hostname ifconfig ping ping6 [telnet] [tftp] [traceroute] (not: talk)
+- coreutils: [ base64 basename true cat chgrp chmod chown chroot comm cp cut date
+dd df dirname du echo env expand factor false fmt fold groups head id install
+link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup nproc od
+paste printenv printf pwd readlink realpath rm rmdir seq sha1sum shred
+sleep sort split stat sync tac tail tee test timeout touch true truncate
+tty uname uniq unlink wc who whoami yes
+[expr] [fold] [join] [numfmt] [runcon] [sha224sum] [sha256sum] [sha384sum]
+[sha512sum] [stty] [b2sum] [tr] [unexpand]
+(not: b2sum base32 basenc chcon cksum csplit dir dircolors hostid pathchk
+pinky pr ptx shuf stdbuf sum tsort users vdir, see also libstdbuf)
+- util-linux: blkid blockdev cal chrt dmesg eject fallocate flock hwclock
+ionice kill logger losetup mcookie mkswap more mount mountpoint nsenter
+pivot_root prlimit rename renice rev setsid swapoff swapon switch_root taskset
+umount unshare uuidgen
+[addpart] [fdisk] [findfs] [findmnt] [fsck] [fsfreeze] [fstrim] [getopt]
+[hexdump] [linux32] [linux64] [lsblk] [lscpu] [lsns] [setarch]
+(not: agetty blkdiscard blkzone cfdisk chcpu chmem choom col
+colcrt colrm column ctrlaltdel delpart fdformat fincore fsck.cramfs
+fsck.minix ipcmk ipcrm ipcs isosize last lastb ldattach look lsipc
+lslocks lslogins lsmem mesg mkfs mkfs.bfs mkfs.cramfs mkfs.minix namei partx
+raw readprofile resizepart rfkill rtcwake script scriptreplay
+setterm sfdisk sulogin swaplabel ul
+uname26 utmpdump uuidd uuidparse wall wdctl whereis wipefs
+i386 x86_64 zramctl)
+
+
+Commentary: toybox init doesn't do runlevels, man and vim are just the
+relevant commands without the piles of strange overgrowth, and if you want
+to call a toybox binary by another name you can create a symlink to a
+symlink. If somebody really wants to argue for "gzexe" or similar, be
+my guest, but there's a lot of obsolete crap in shadow, coreutils,
+util-linux...
+
+No idea why LFS is installing inetutils instead of net-tools
+(which contains arp route ifconfig mii-tool nameif netstat and rarp that
+toybox does or might implement, and plipconfig slattach that it probably won't.)
+
+Packages toybox plans to provide partial replacents for:
+
+Toybox provides replacements for some binaries from these packages,
+but there are other useful binaries which this package provides that toybox
+currently considers out of scope for the project:
+
+
+- binutils: strings [ar] [nm] [readelf] [size] [objcopy] [strip]
+(not c++filt, dwp, elfedit, gprof. The following commands belong
+in qcc: addr2line as ld objdump ranlib)
+- bzip2: bunzip2 bzcat [bzcmp] [bzdiff] [bzegrep] [bzfgrep] [bzgrep] [bzless]
+[bzmore] (not: bzip2, bzip2recover, see also libbz2)
+- xz: [xzcat] [lzcat] [lzcmp] [lzdiff] [lzegrep] [lzfgrep] [lzgrep]
+[lzless] [lzmadec, lzmainfo] [lzmore] [unlzma] [unxz] [xzcat]
+[xzcmp] [xzdec] [xzdiff] [xzegrep] [xzfgrep] [xzgrep] [xzless] [xzmore]
+(not: compression side, see also: liblzma)
+- ncurses: clear reset (not: everything else, see also: libcurses)
+- e2fsprogs: chattr lsattr [e2fsck] [mkfs.ext2] [mkfs.ext3]
+[fsck.ext2] [fsck.ext3] [e2label] [resize2fs] [tune2fs]
+(not badblocks compile_et debugfs dumpe2fse2freefrag e2image
+e2mmpstatus e2scrub e2scrub_all e2undo e4crypt e4defrag filefrag
+fsck.ext4 logsave mk_cmds mkfs.ext4 mklost+found)
+
+
+Toybox provides several decompressors but compresses to a single format
+(deflate, ala gzip/zlib). Our e2fsprogs doesn't currently plan to support
+ext4 or defrag. The "qcc" reference is because someday an external project to glue
+QEMU's Tiny Code Generator
+to Fabrice Bellard's old Tiny C Compiler
+making a multicall binary that does cc/ld/as for all the targets QEMU
+supports (then use the
+LLVM C Backend
+to compile LLVM itself to C for use as a modern replacement for
+cfront to bootstrap
+C++ code) is under consideration
+as a successor project to toybox. Until then things like objdump -d
+(requiring target-specific disassembly for an unbounded number of architectures)
+are out of scope for toybox. (This means drawing the line somewhere between
+architecture-specific support in file and strace, and including a full
+assembler for each architecture.)
+
+
+Packages from LFS ch6 toybox does NOT plan to replace:
+
+
+- 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
+
+
+That said, we do implement our own zlib and readline replacements, and
+presumably _could_ export them as library bindings. Plus we provide
+our own version of a bunch of the section 1 man pages (as command help).
+Possibly libcap and acl are interesting?
+
+Misc
+
+The kbd package has over a dozen commands, we only implement chvt. The
+iproute2 package implements over a dozen commands, there's an "ip" in
+pending but I'm not a fan (ifconfig and route and such should be extended
+to work properly). We don't implement eudev, but toybox's maintainer
+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.
+
--
cgit v1.2.3