• Home
  • Raw
  • Download

Lines Matching +full:alpine +full:- +full:build +full:- +full:testing

2 <!--#include file="header.html" -->
5 into a single BSD-licensed executable that's simple, small, fast,
6 reasonably standards-compliant, and powerful enough to turn Android into
11 <a name="30-11-2021" /><a href="#30-11-2021"><hr><h2><b>November 30, 2021</b></h2></a>
15 <p>- The Hitchhiker's Guide to the Galaxy</p></blockquote>
17 <p><a href=downloads/toybox-0.8.6.tar.gz>Toybox 0.8.6</a>
21 bootable under QEMU (using vanilla linux-5.15).</p>
26 (Also added basic support for the <a href=http://lists.landley.net/pipermail/toybox-landley.net/2021-August/012497.html>qualcomm hexagon</a>,
28 <a href=https://lists.nongnu.org/archive/html/qemu-devel/2021-07/msg06430.html>quite yet</a>.)</p>
37 Elliott added <b>date -s</b>, <b>pmap -p</b>, <b>tail -F -s</b>, <b>kill -0</b>,
38 <b>reboot/halt/poweroff -d</b>, taught <b>file</b> to
39 recognize Mach-o universal binaries, made Android's <b>log</b>
40 take input from stdin when it has no arguments, added <b>tail --bytes --lines</b>
41 (the --long synonyms for -c and -n),
42 added <b>i2cdetect -q</b>, taught <b>i2cdump</b> to write XX for
46 <p>Rob added <b>find -quit -lname -ilname</b> and <b>-d</b> as a synonym for -depth,
47 taught <b>cut -d $'\n'</b>
48 to cut by line and added posix <b>cut -nb</b> (which wraps to the start of -c
49 utf8 characters), added <b>cpio --ignore-devno --renumber-inodes</b>,
50 taught <b>cal</b> to use 3 arguments (day month year), added <b>tar --selinux</b>
51 support and a "had errors" message at the end, made <b>uname -o</b>
52 say "Toybox", and fixed the <b>grep -Fw</b> combination (used by the 64 bit
53 powerpc kernel build).</p>
55 <p>Ella-0 added <b>split -n</b>. Peter Collingbourne added <b>grep -L</b>.</p>
58 <a href=https://standards.iso.org/ittf/PubliclyAvailableStandards/>ISO-5962</a>
62 <p>Elliott asked that toybox's <b>cut -DF</b> feature (a cheaper
65 <a href=http://lists.busybox.net/pipermail/busybox/2021-June/088886.html>submitted it to busybox</a>
73 (like <a href=https://boingboing.net/2021/05/19/freenode-irc-staff-quit-after-new-owner-seizes-control.html>everyone else's</a>;
75 <a href=https://hackaday.com/2021/05/20/freenode-debacle-prompts-staff-exodus-new-network/>was</a>
85 types (declare -i, declare -u, etc), several bugfixes, greatly
98 scripts/mkstatus.py, the old status.html wrapper that server-side-included
112 it's called with no arguments. (It still shows it for command --help.)
113 The --help option no longer needs to be the first option, and is
118 fixed an off-by-one in <b>dmesg</b> and a bounds check in <b>netstat</b>,
119 fixed <b>pidof -s</b>, and taught <b>rmmod</b> to handle multiple arguments.
120 Denys Vlasenko pointed out that <b>free -t</b> is "total" not "terabytes".
123 without -p.
124 Rob fixed the 32 bit <b>readelf</b> build on Android, fixed a race condition
129 whitespace and ignore trailing + or - (a NOP timezone), made <b>su</b> log the
134 made <b>env -i</b> use the old $PATH to run its command,
135 and made <b>grep --color</b> highlight all matches.</p>
140 a non-threaded app. (I hadn't noticed because it works fine with the musl
144 FS_IOC_{GET,SET}{VERSION,FLAGS} ioctl family are <a href=https://www.spinics.net/lists/linux-api/msg49101.html>historically broken</a>
149 <a href=https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/commit/man2?id=3de87d46840d>giving up</a>
153 <b>cut</b> switched to FLAG() macros and no longer allows -f with -F,
163 Ryan Pritchard reported a bug where <b>alias ls="ls --color"</b> would prevent
164 --help or --version from being the first argument to the command, which was
165 a pain to fix without breaking things like <b>echo -- --version</b> and
166 <b>basename -s --help file--help</b>.
173 <p><b>scripts/make.sh</b> now uses wait -n (available since bash 4.3 in February 2014)
174 to keep the processors busier during a parallel build.
178 <p>Guo Chuang reported that lsattr won't build on an 8 year old version of
179 <a href=https://github.com/landley/toybox/pull/292#issuecomment-899895909>centos</a>,
184 but the <a href=http://lists.landley.net/pipermail/toybox-landley.net/2021-August/012537.html>philosophal argument</a>
185 remains <a href=http://lists.landley.net/pipermail/toybox-landley.net/2021-September/012603.html>unresolved</a>.</p>
188 KCONFIG_CONFIG same as the multiplexer build. scripts/single.sh can
196 <p><b>scripts/record-commands</b> got updated and logwrapper got renamed <b>logpath</b>.</p>
198 <a name="19-05-2021" /><a href="#19-05-2021"><hr><h2><b>May 19, 2021</b></h2></a>
202 The other two-thirds stayed firmly at home and lived full, rich and happy lives
204 a dirty telephone.</p><p>- The Hitchhiker's Guide to the Galaxy</p></blockquote>
206 <p><a href=downloads/toybox-0.8.5.tar.gz>Toybox 0.8.5</a>
210 bootable under QEMU (using vanilla linux-5.12, except that s390 needed another
219 history/editing, plus a bunch of testing.</p>
238 <b>df</b> -a now shows overmounted filesystems.
239 <b>test</b> -k checks the sticky bit.
240 Added -t to <b>install</b>, <b>cp</b>, and <b>mv</b>, and -u to <b>cp</b>
242 <b>find</b> -executable checks that _we_ can execute them (u+x could be owned
245 <p>Elliott added several features to <b>date</b> (--iso, %:z output format, and
246 --utc as a synonym for -u), added a <b>sed</b> s///x option,
260 diff -u output).
269 Yi-Yo Chiang fixed a <b>rm</b> bug where -f could get confused by read
271 file, pointed out <b>install</b> -D was broken when the target file
274 promised (corrupting the archive) and fixed another cpio bug where -t test
277 fixed some <b>sed</b> tests (sed's lie-to-autoconf --version
280 Nir Lichtman pointed out that <b>rm</b> -p shouldn't try to rmdir / at the end,
283 Ethan Sommer fixed <b>install</b> -Dt,
285 -tnomsdos,smbfs.
289 Daniel Santana fixed <b>df</b> combining -P and -k,
296 -I with no arguments no longer segfaults, <b>grep</b> -f /dev/null no
297 longer adds a "" regex matching everything, -z no longer splits patterns
298 on \n, and -o can print zero length matches,
299 <b>cp</b> -t works with one argument and with --parents.
303 <b>tar</b> now removes empty directories where it wants to put a non-directory.
306 <p>The prebuilt x86-64 binaries shouldn't segfault on older x86-64 processors
309 a hyphenated "toybox-$TARGET" and then tried to make symlinks to just "toybox".</p>
311 <p><u>Build</u>:
313 Ella-0 added OpenBSD support (but not a separate defconfig, try
318 xclose() tests if fd is -1 so the caller doesn't have to.
319 txpect (the test suite's built-in "expect", implemented in shell) can
323 made multiple portability tweaks (header tweaks to build in more
332 <a name="24-10-2020" /><a href="#24-10-2020"><hr><h2><b>October 24, 2020</b></h2></a>
334 "We are now cruising at a level of two to the power of twenty-five thousand to
337 <p>- The Hitchhiker's Guide to the Galaxy</p>
343 <a href=downloads/toybox-0.8.4.tar.gz>Toybox 0.8.4</a>
349 qemu. (The vmlinux in each tarball is a vanilla linux-5.9 kernel built
353 more links. New command features include the <b>sed -s</b> flag,
354 <b>cpio --no-preserve-owner</b> now affects archive creation,
355 Elliott added <b>tar -I</b> and multi-type
356 <b>find -type a,b,c</b> support, Mark Salyzyn added <b>xargs -P</b> to
369 Plus the standalone "<b>make sh</b>" build understands MAYFORK now. It's
376 mkroot ("how do I build a working Linux system
380 The "toybox --help" output now lists the project's web page (<a href=https://github.com/landley/toybox/issues/50>by request</a>).
385 command list output (and "kill -l") to measure the current the terminal width
401 The clang asan plumbing slows some code down more than 10 times, so some testing timeouts were expanded.
415 Ariadne Conill submitted several small fixes from testing Alpine Linux with
421 Elliott fixed chmod -R
424 to read date's default output format, fixed a recent echo -e \0 regression,
425 changed cpio -p parsing to match a <a href=http://lists.landley.net/pipermail/toybox-landley.net/2020-August/011955.html>bug</a> in the gnu version
430 <p>David Legault pointed out that unescape2() (and thus echo -e) wasn't handling
433 a build break if we assume glibc behaves consistently, which led to a bunch of
436 to an archive, and reported that --exclude wasn't working.
437 Peter McConalogue pointed out that cp/mv -i prompt should
444 Martin Stjernholm fixed <b>cp -P</b> to not follow symlinks and updated
446 Antoni Villalonga added more --long asiases to <b>chgrp/chown/rmdir</b>.
465 Rob switched dirtree_path() to a non-recursive implementation, and
468 read_password() now reads from tty device rather than stdin, and handles ctrl-c and ctrl-d, and
475 mkroot now only passes --no-preserve-owner to cpio (so initramfs files
476 belong to root rather than whichever user ran the build) when using toybox's
477 version, because the other one is brain-damaged and errors out not
486 Cleanup blkdiscard so lib/args.c parses the -o and -l numbers, which means
488 oneit now uses flag macros and mentions -rn in the help. demo-utf8towc
492 <a name="11-05-2020" /><a href="#11-05-2020"><hr><h2><b>May 11, 2020</b></h2></a>
502 <p>- The Hitchhiker's Guide to the Galaxy</p>
505 <p>Despite everything <a href=downloads/toybox-0.8.3.tar.gz>Toybox 0.8.3</a>
511 (Some people were looking forward to <b>patch --fuzz</b> support too.)</p>
514 builds a bootable toybox-based Linux system using two source
517 a <a href=http://lists.landley.net/pipermail/toybox-landley.net/2020-April/011667.html>post with instructions</a> if you want to know how to build the
518 cross compilers for testing the various architectures. The self-contained
524 assignments are the names of scripts to run to build more
525 packages at the end of the build. I checked in an <a href=https://github.com/landley/toybox/blob/master/scripts/root/dropbear>example package</a>,
533 dir for UID 0, and creates /dev/fd and /dev/shm in devtmpfs. The build works
535 build bug where "make distclean" doesn't work in a "cp -sfR" symlink
541 The CROSS=all build announces each target in the title bar, puts
543 ctrl-c.
550 <p>As for <b>scripts/mcm-buildall.sh</b> building cross compilers,
551 of COURSE gcc 8.3 requires a different configuration to build the same
554 be used but prevents compile-time probes from detecting nommu,
555 and checks that the cross compiler completed before trying to build
559 <a href=https://github.com/richfelker/musl-cross-make/commit/5086175f2902>version</a>
560 of musl-cross-make with the top level Makefile
562 <a href=https://www.spinics.net/lists/linux-sh/msg56844.html>breaks the kernel
563 build</a>
564 and LINUX_VER = 4.19.90 because the default musl-cross-make config uses an
565 out-of-tree headers package for some reason (those who forget history are
569 (I've also <a href=http://lists.landley.net/pipermail/toybox-landley.net/2020-May/011673.html>test built</a>
582 got a .config when you run it. (If you build and can't boot, your .config
588 <b>cal</b> highlight the current day, added -T to <b>cp</b>/<b>mv</b>,
589 did a lot of work on <b>lsattr</b>/<b>chattr</b> (including adding -p
590 and "chattr ="), added tar --absolute-names, taught <b>id</b> to
591 support numeric lookup and handle unknown groups, made -G show all
592 groups, and removed context= from -Z.
593 Rob added <b>patch -F</b> (fuzz factor) support and <b>help -u</b> (usage only),
594 taught <b>echo -e</b> about bash extensions like \uXXXX unicode escapes,
595 <b>netcat -L</b> no longer automatically includes stderr (new -E
597 <b>setsid</b> now uses -c (like the man page says) instead of -t, and added
598 -w (wait) and -d (detach from tty).
599 Andrew Ilijic added <b>ls -w</b>, removed trailing whitespace on output,
600 and added tests for -C and -x.</p>
632 Ethan Sommer fixed numerous small issues (including several build
637 <b>find -L -type -l</b> now finds dangling symlinks, extra #ifdefs in
641 <b>netcat -L</b> no longer accumulates zombie processes,
642 <b>sntp</b> now uses adjtimex instead of adjtime (to build on bionic).
648 Elliott fixed xargs -E, various things in modinfo,
649 added an error check to gzip when using zlib (which copies non-gzip data to
657 of its array in patch.c, removed the cpio --trailer option,
662 Jarno Mäkipää fixed utf8 support in cut -C, and cp --parents.
667 Denys Nykula fixed rm -i not to prompt for an empty "" argument.
670 Elliott switched <b>ls</b> to use the path-based functions now (which is racy,
680 <p><u>Build plumbing</u>:
681 The "make root CROSS=all" build announces each target in the title bar, puts
683 ctrl-c.</p>
688 The non-git version number I keep forgetting to update each release moved
690 Fixed a couple different errors in mkflags.c (one of which caused ls --color
702 standard toybox argument parsing for -v and -p.
703 Several commands (help, cp) had sub-options removed from menuconfig.
710 <p>Update roadmap to note that posix-2008 moved to a different URL (content
722 <p>Shrank the sed help from 150 lines to 90-ish.</p>
727 reports the first non-matching step. (This for example lets sh.test check
734 EVAL doesn't supply -- (you have to provide your own if you want that).</p>
745 because they (intentionally!) don't support --help.
749 <a name="18-10-2019" /><a href="#18-10-2019"><hr><h2><b>October 18, 2019</b></h2></a>
754 </p> <p>- The Hitchhiker's Guide to the Galaxy</p>
757 <p><a href=downloads/toybox-0.8.2.tar.gz>Toybox 0.8.2</a>
762 (<b>dnsdomainname</b> is hostname -d, <b>arch</b> is uname -m), but about
763 1/3 of toysh got implemented in pending, <a href=https://github.com/landley/mkroot>mkroot</a> got merged as a "make root" target (see Build),
764 and Android's <a href=http://lists.landley.net/pipermail/toybox-landley.net/2019-August/010845.html>hermetic build</a>
767 <p>The android-specific <b>getprop</b>, <b>setprop</b>, <b>start</b>, and <b>stop</b>
772 <p><u>Build</u>:
779 <p>The new "scripts/mcm-buildall.sh" convenience script builds cross
782 using <a href=https://github.com/richfelker/musl-cross-make>musl-cross-make</a>,
792 <p>Patrick Oppenlander fixed make -j (our make is a wrapper around
793 scripts/make.sh which was already doing a parallel build, but if you called
794 make with -j it wouldn't wait for make.sh to finish and the build broke).</b>
796 <p>Lots of fixes for the MacOS build.</p>
799 We upgraded <b>tar</b> to extract some older tarballs, <b>file</b> added -b and -s
807 <b>patch</b> ignores the -f -g# and --no-backup-if-mismatch options
809 ignores -P# (which requests parallel execution, maybe add it later but
811 --no-check-ceritificate and <b>gzip</b> ignore -n (again, we weren't doing
816 Eric Molitor implemented <b>nl</b> -v (with negative and zero starting values),
817 and fixed a MacOS compatibility issue in the build scripts.
818 Tom Cherry added <b>netcat</b> -U (UNIX domain socket support).
820 Ethan Sommer added ln -t and rmdir --ignore-fail-on-non-empty.
821 Elliott Hughes added <b>grep</b> -R, <b>killall</b> -w, tar --mode,
822 fixed <b>ls</b> -Z and spacing in -lZ and --full-time,
823 added <b>xargs</b> --max-args and removed xargs -I (which we never actually
826 added xargs -o and made -p read from /dev/tty, added <b>blkid</b> -s, SEC_TYPE for ext3,
829 display in <b>lsof</b>, added <b>pidof</b> -x (thus making the default behavior _not_
830 be -x).</p>
838 with 1 argument (implicit - as second argument reading from stdin).
842 <b>find</b> grew several new options (%Z, -true, -false, and -newerXY), <b>ln</b> added -T.
843 The argument to <b>mktmp</b> --tmpdir is now optional.</p>
846 The unshare probe bit-rotted so it was impossible to build <b>unshare</b>
852 (ln -s toybox sh; ln -s sh ash) had an off by one error,
854 and later block that for non-root users to prevent device tracking).
856 hasn't got built-in support for yet (like sha3sum) which acted like redundant
863 <b>cp</b> -r unlinks() an existing symlink before trying to
864 recreate the symlink (otherwise cp -r into an existing directory will
869 and <b>hostname</b> -d no longer segfaults on machines with no domain name.</p>
880 made <b>printf</b> \c and \0 octal escapes work, fixed a <b>find</b> -name corner
881 case (find src/*.c -name file.c) and find dangling symlink behavior,
884 fixed a race in <b>losetup</b>, fixed <b>grep</b> -F with multiple matches on the same
885 line and an -I failure in the existing grep tests, made <b>readlink</b> notice
895 (non-UTF8) locale (didn't expect wcrtomb to return -1).
904 DIRTREE_STATLESS returns entries we couldn't stat() (with a zeroed ->st
905 field, and ->again |= 2), but filling in the file type from readdir().
931 <p>Android ndk-r20 doesn't define the __ANDROID_NDK__ symbol, so we switched
951 implemented diff --strip-trailing-cr and made diff not need /tmp.
959 <p>Elliott Hughes did a lot of work on the test suite: add kill -l tests,
966 confused by SELinux, hostname.test can run some tests as non-root,
981 and make kill.test stop testing the shell builtin
993 The "./toybox --help" output now explains how to do install_flat by hand.</p>
999 <a name="21-05-2019" /><a href="#21-05-2019"><hr><h2><b>May 21, 2019</b></h2></a>
1001 <p>"I like the cover," he said. "'Don't Panic.' It's the first helpful or intelligible thing anybody's said to me all day."</p> <p>- The Hitchhiker's Guide to the Galaxy</p>
1004 <p><a href=downloads/toybox-0.8.1.tar.gz>Toybox 0.8.1</a>
1008 <p>Android is now using toybox as part of a <a href=http://lists.landley.net/pipermail/toybox-landley.net/2018-November/009824.html>"hermetic" build</a>
1010 building under Android). See Android's <a href=https://android.googlesource.com/platform/prebuilts/build-tools/+log>build-tools</a> and <a href=https://android.googlesource.com/platform/build/soong/+log>soong</a> repositories to follow along with development, or check the list for the <a href=http://lists.landley.net/pipermail/toybox-landley.net/2019-May/010485.html>current status</a>.</p>
1017 Tar is a near-rewrite with support for --owner --group and --sparse,
1018 capable of autodetecting "wget blah.tar.bz2 -O - | tar xv", a --restrict option
1025 <p><u>Updates</u>: Elliott added <b>find</b> -wholename/-iwholename, -printf,
1026 and -context, <b>grep</b> --exclude-dir, and <b>echo</b> -E.
1027 Rob added <b>blkid</b> -U and -L, <b>mount</b> now has UUID= support via blkid -U,
1028 you can now specify TZ="blah" in the <b>date</b> -d input string (although
1030 understands ,+N relative ranges. Makepost added <b>rm</b> -v.
1034 <b>touch</b> -t and -d autodetect the time format.</p>
1043 terminal types, made more better about directories and non-tty output,
1045 to recognize a c-sky ELF machine, and fixed timezone and daylight
1048 When run as non-PID 1 (for a chroot) oneit's exit code now indicates
1053 Sort's -k2.3,4.5 syntax is now documented and behaves more closely to
1069 and an endless loop with -EPIPE, fixed find -path/-ipath, made loggit()
1071 of --longname synonyms for short options, added getfattr --only-values,
1072 and timeout --foreground --preserve-status and --signal.</p>
1075 parent thread (in -H mode), hides the cursor in interactive mode, updates the
1082 Top now treats -o "" as an error (previously it displayed an empty screen).</p>
1085 clear the environment when -p is absent.
1086 Vidar Holen fixed inverted find -exec exit status.
1088 because a <a href=https://github.com/varnishcache/varnish-cache/issues/2879>newly added gcc bug</a> turns that into a build break, and
1091 A missing else in grep meant -x was sometimes ignored.</p>
1094 in the build scripts/portability.sh now tests that the compiler it's trying
1099 fails (because AOSP build scripts cared), so timeout --unknown returns 125
1105 (meaning -x was or wasn't encountered on the command line this time by
1110 lets long-running loops reset environment variables without memory leaks.</p>
1115 <p>New xparsedate() and xvali_date() functions allow date, tar --mtime, and
1142 so <a href=https://github.com/github/choosealicense.com/pull/643#issuecomment-463746027>github could recognize it</a> as 0BSD. (We're still waiting for
1143 "<a href=https://github.com/github/choosealicense.com/pull/643#issuecomment-464380789>a while</a>" to pass before github actually does, though.)</p>
1162 <p><u>Testing</u>: Added VERBOSE=nopass to not show passing tests.
1163 The test suite now does an rm -rf on testdir between each command so
1166 toyonly function only runs command when we're testing the toybox version
1169 The find -newer test calls "sleep .1" to avoid intermittently failing with an
1175 <a name="08-02-2019" /><a href="#08-02-2019"><hr><h2><b>February 8, 2019</b></h2></a>
1181 <p>- The Hitchhiker's Guide to the Galaxy</p>
1184 <p><a href=downloads/toybox-0.8.0.tar.gz>Toybox 0.8.0</a>
1197 <p><u>New options</u>: <b>grep</b> now has --color, supports embedded NUL bytes in its input,
1199 needed the middle numerical field of -bB, etc).
1201 Volodymyr Medvid reported that install -d doesn't honor -o or -g.
1203 <b>mkdir</b> accepts both --parent and --parents as synonyms for -p, <b>touch</b> ignores -f,
1204 <b>basename</b> added -s to remove a trailing suffix, <b>dirname</b> now supports multiple
1205 arguments, <b>cmp</b> accepts --quiet and --silent as synonyms for -s, <b>hostname</b>
1206 added -sfd, <b>head</b> added --bytes as a synonym for -c and --lines as a synonym
1207 for -n, <b>mktemp</b> added -t and fixed -u, <b>sed</b> added -z and -iEXT to keep backup files,
1208 <b>md5sum</b> and sha1sum added --status and --check as synonyms -s and -c,
1209 <b>readlink</b> added --canonicalize as a synonym for -f, <b>sort</b> grew -V,
1210 <b>patch</b> added -s its synonym --quiet, <b>stat</b> added --format as
1211 a synonym for -c, <b>xargs</b> added -p -t -r,
1213 that <b>umount</b> ignore -c. Reverend Homer added a small optimization to file.c,
1215 taught <b>ls</b> -t to use the nanoseconds field.
1219 <b>cp</b> --preserve was segfaulting when you didn't specify _what_ to
1222 <b>sort</b> -x didn't work when
1231 Marius Adaskevicius pointed out <b>mdev</b> -s should follow symlinks,
1237 <p><u>Build</u>:
1242 make install_airlock now adds sha256sum (because the Linux 4.20 build now
1252 same command aren't worth the complexity in testing, documentation,
1257 names via an escape syntax (because mkfs.vfat specifies an offset with -@),
1259 didn't have a dash (allowing "ps ax" and "ps -ax" to behave differently).</p>
1266 yocto 2.6 buils with -Werror=format-security by default).</p>
1268 <p>There's a scripts/portability.sh now which lets the build use gsed and gmake
1277 reformatted a lot of --help text for consistency (removing trailing
1288 root-only tests when run as a normal user. The testcmd function prints the
1298 <a name="31-10-2018" /><a href="#31-10-2018"><hr><h2><b>October 31, 2018</b></h2></a>
1301 This has made a lot of people very angry and been widely regarded as a bad move."</p><p>- The Hitchhiker's Guide to the Galaxy
1305 <p><a href=downloads/toybox-0.7.8.tar.gz>Toybox 0.7.8</a>
1309 <p>Toybox <a href=http://lists.landley.net/pipermail/toybox-landley.net/2018-October/009769.html>now builds</a> with the Android NDK (r18 release), almost out of the box.
1310 You have to add an "llvm-cc" symlink to "clang", then use CROSS_COMPILE=llvm-
1312 target you want to build for. (To run it on a non-android host, you probably
1313 want "LDFLAGS=--static" too.)</p>
1316 courtesy of Elliott/Android. The <b>watch</b> command got a complete (tty-aware)
1322 The <b>ifconfig</b> command added -S (short view) giving one line of
1324 format. <b>grep</b> grew binary file detection, with -I and -a options to
1326 Zach Van Rijn asked for <b>find -empty</b>.
1329 Elliott also added "getconf -a" and a lot of missing getconf symbols the
1330 AOSP build uses, including support for pathconf(3) symbols requiring two
1333 processing each like last release), and -l grew section identifiers (so
1334 the "getconf -l" output is no longer a directly consumable list of symbols
1336 Command line options specifying durations (like top -d or ping -i) can
1337 now use fractions and units, like "1.5" and ".1m". See "toybox --help" for
1340 name it's called under (so if you "ln -s $(which sleep) blah" and then
1345 which covers everything the kernel build needs (and more) but is going to
1347 In <b>diff</b> the android guys added --color and timestamps on the
1348 +++/--- lines. In <b>mdev</b> Faustas Azuolas Bagdonas added support
1354 Elliott responded to a bug in <b>getconf</b>'s sed-based header generation by
1358 build environments, but at least it works on bionic now.)
1363 Several fixes in <b>ping</b> (-w and -W didn't work, -c kept sending packets
1368 also fixed the units on blockdev --blkraget (reported by Martijn Coenen).
1370 style, leading zeroes, switch -f from %t to %T), <b>oneit</b> no longer
1374 triggered Android's strict ioctl filtering on non-filesystem fifos).
1375 An unstripped build (where the "strip" command fails for a given
1376 CROSS_COMPILE) will now overwrite the (read-only) output file instead of
1382 into a hermetic build (hopefully with an eventual self-hosting option, work
1386 The <b>ps</b> help text changed: now "ps -o help" shows the fields and the normal
1387 --help is much more manageable. Ifconfig's --help text also got tidied up.
1389 the kconfig/ subdirectory still having (build only, non-shipping) GPL code
1403 the bootstrap dependencies for the "airlock" step of a hermetic build.)
1417 <p><u>Build infrastructure:</u>
1421 it needs into itself, improving build portability.
1422 The build now checks the specified cross compiler exists, hopefully providing
1426 <a name="23-06-2018" /><a href="#23-06-2018"><hr><h2><b>June 23, 2018</b></h2></a>
1432 <p> - The Hitchhiker's Guide to the Galaxy</p>
1435 <p><a href=downloads/toybox-0.7.7.tar.gz>Toybox 0.7.7</a>
1442 <p><u>New options</u>: The <b>cp</b> command added the --parents option,
1443 <b>readlink</b> now has -m to show where a missing path would be,
1446 Ng Zhi An added --getra and --setra (get/set readahead) to <b>blockdev</b>,
1447 Elliott Hughes added <b>xxd</b> -o and made <b>top</b> -d understand fractional
1449 Minghui Liu added <b>watch</b> -b.</p>
1452 48-core machine
1453 and fixed a glitch with -n, Haroon Maqsood pointed out "vmstat 1 1" didn't
1454 stop and "vmstat -n" didn't print the first theader line.
1455 Minghui Liu fixed a bug where <b>cp</b> -p didn't preserve
1457 working. Ryan Pritchard pointed out that <b>du</b> -d0 should act like du -s.
1461 Elliott fixed several things in <b>top</b> (removed spurious '\r' characters from -b
1464 ("cat /bin/ls | file -" still won't work but "file - < /bin/ls" should).
1466 and fixed <b>cut</b> -DF
1468 because outputting all delimiterless lines isn't what you want there, -D
1473 prequisites that needs to run, and reformatted more of the ps --help text
1478 with & has no dash in its first argument. (This lets "ps -ax" and "ps ax"
1480 The comma-separated-list parsing infrastructure moved to lib/commas.c.
1496 behavior difference between toybox and ubuntu (Ubuntu's ln -sf wouldn't
1501 run a test on a command name beginning with "-" (none yet but it
1510 dynamic libraries without corresponding --static versions).
1514 <a name="24-02-2018" /><a href="#24-02-2018"><hr><h2><b>February 24, 2018</b></h2></a>
1521 <p> - The Hitchhiker's Guide to the Galaxy</p>
1524 <p><a href=downloads/toybox-0.7.6.tar.gz>Toybox 0.7.6</a>
1534 ranges, utf8/unicode characters, and new -CDFO options. Use -C to measure
1535 columns rather than characters (for double width chars), and "cut -DF 3-5"
1538 <p>This release adds <b>top -m</b> and <b>iotop -H</b> (and fixed top width truncating for narrow terminal windows),
1539 added <b>iconv -c</b>, fixed <b>ps -T 1234</b> to show threads belonging to
1545 "See %s --help" message on the same line, and several web pages
1548 <p>Elliott and the Android devs added <b>df -i</b>, <b>uptime -p</b>,
1549 <b>time -v</b>, and <b>xxd -i -ri</b>,
1550 fixed <b>id -G</b> to only output the group IDs, fixed the <b>xargs -0 -n</b>
1551 combination, made <b>find -exec +</b> obey ARG_MAX (just like xargs), made
1564 with make bloatcheck's build dependencies, and
1567 <p>Commands with locale support now setlocale(LC_TYPE, "C.UTF-8") for more
1573 (which as a 64 bit number is good for + or - 292 million years from
1575 -1 instead of erroring out.</p>
1582 <a name="12-10-2017" /><a href="#12-10-2017"><hr><h2><b>October 12, 2017</b></h2></a>
1585 <p> - The Hitchhiker's Guide to the Galaxy</p>
1588 <p><a href=downloads/toybox-0.7.5.tar.gz>Toybox 0.7.5</a>
1593 of the many half-finished projects (dd, ping, lsof, iconv, cut, sysconf,
1594 the cp --parents option...) finished/promoted/tested, but decided adding big
1597 <p>A couple <b>new features</b> slipped in anyway. Ilya Kuzmich added head -c
1598 and strings -t (and corrected strings' output in a couple places). Elliott
1599 Hughes taught file to recognize Macintosh (Mach-O) binaries.</p>
1601 <p><b>NOTE</b>: the chrt command is broken when built against musl-libc
1604 <a href=https://git.musl-libc.org/cgit/musl/commit/?id=1e21e78bf7a5>removed
1606 so the chrt command there will always say -ENOSYS. (It works fine built against
1609 <p><b>Bugfixes</b>: Remounting (mount -o remount,rw) should work properly now,
1612 mostly noticeable in long-running "top" exiting; error value was treated
1613 as a pointer). Elliott Hughes fixed a -Wformat warning in expr.c,
1617 Josh Gao made netcat -l exit after handling a request, and reported a
1619 broken URL in the README. Rob fixed env -0 checking the flag wrong so
1630 <p><b>Build</b>: Patrick Oppenlander added a workaround for a bug in config2help.c
1632 after free error; the build infrastructure isn't nearly as heavily audited as
1634 environment variable can force the build version from
1635 the command line, and the build checks for .git in the top directory
1637 in an enclosing directory). Added a build #warning about musl intentionally
1639 stub function so compile-time probes for its existence think it's there, and
1642 <a name="19-06-2017" /><a href="#19-06-2017"><hr><h2><b>June 19, 2017</b></h2></a>
1643 <blockquote><p>It is a well-known fact that those people who most want to rule people are, ipso facto, those least suited to do it.
1645 <p>- The Hitchhiker's Guide to the Galaxy</p>
1648 <p><a href=downloads/toybox-0.7.4.tar.gz>Toybox 0.7.4</a>
1655 -M and -S to match and skip wildcards respectively (useful with -r).
1656 Elliott's updated dmesg has -T and --color. The file
1657 command can recognize gzip now, uptime grew -s, date grew %N, env knows - as a first argument
1658 means -i (posix!) and grew -0, ls defaults to -b
1659 instead of -q now when there's a tty, and ls has a new -ll option (with
1660 --full-time as a compatibility synonym) showing nanoseconds and (for some
1662 "uudecode -o -" support. Illya Kuzmich taught head -v and -q. The cpio
1665 (Use the new --trailer option if you want the legacy behavior.)
1668 <p><u>Build</u>:
1670 the kernel <a href=https://landley.net/notes-2013.html#28-03-2013>inexplicably</a>
1671 needs that to build. This was motivated by
1677 pass, made more tests run on a toybox-only system, and so on. The test suite
1678 infrastructure now has a second testing function,
1682 <p>Various android build and config fixes, getting closer to being able
1688 <a href=http://lists.busybox.net/pipermail/buildroot/2016-December/180102.html>last release</a>.</p>
1696 help text for argument errors but instead just say "See %s --help" with the
1698 Elliott did a big period-ectomy on all the --help text, and
1700 non-html help -a output now has separators with the command name.
1708 was causing long-running top instances to occasionally exit),
1711 (so "ps -A | cat" doesn't vary), date's chkmktime() was replaced with
1718 Elliott fixed touch -a/-m (they were backwards), and allowed ':' in
1719 setprop's property names. Grep now exits with 2 for errors (so -q can
1729 <a name="21-02-2017" /><a href="#21-02-2017"><hr><h2><b>February 21, 2017</b></h2></a>
1733 <p>- The Hitchhiker's Guide to the Galaxy</p></blockquote>
1735 <p>Despite everything, <a href=downloads/toybox-0.7.3.tar.gz>Toybox 0.7.3</a>
1748 <p><u>New features</u>: Rob added units to <b>find</b> -atime and friends
1749 (with the legacy -amin alias). Elliott added color and -w to dmesg, fallocate
1750 -o, and improved file's ELF parsing. Steve Muckle added -d and finit_module
1754 df -a isn't entirely new, but wasn't documented and needed a bugfix.</p>
1757 Last release broke oneit because -c didn't get moved to xopen_stdio() (oops).
1760 that case but also switches on -w to avoid field truncation. The "tty"
1764 And while we're there, replace "ADDR" with "BIT" in ps -l so there are
1767 <p>Izabera pointed out that split -b and -l can't mix, and suggested seq should
1769 increments. Wang Xiao Jian fixed a bug in sort -k.
1772 Elliott also improved some error reporting and improved top -H's display
1776 in chmod -R (and the resulting generic fix to dirtree_notdotdot() fixed
1781 Rob fixed an option parsing bug (where switching off a --longopt in menuconfig
1783 (ala "abc[-ab][!abc]" with "command -a -b") would segfault.</p>
1785 <p>There's some sort of gcc stack over-optimization bug where musl-libc's
1787 stack varabiles in the same function after that get semi-randomly overwritten
1795 <p>Continuing attempts to build under Android NDK brought up that posix
1798 name. (This worked in the AOSP build because it only builds against current
1805 when you "ps -A | head" about EPIPE on output. (Older versions of bionic
1816 <p><u>Build tweaks</u>:
1818 commands (unless $PEDANTIC is set) when it sets up the hermetic build
1826 but it's a work in progress (<a href=http://lists.landley.net/pipermail/toybox-landley.net/2016-December/008767.html>thread</a>). Various changes
1830 <p>Cross-compiling from Macs needs to use "gsed" instead of apple's
1831 version, so teach the build to use that name if it exists in the $PATH.
1832 If you try to build without running config first, you should get better
1837 The new dirtree flag DIRTREE_PROC skips non-numeric entries so things
1840 <a name="21-10-2016" /><a href="#21-10-2016"><hr><h2><b>October 21, 2016</b></h2></a>
1843 own problem.</p><p> - The Hitchhiker's Guide to the Galaxy</p></blockquote>
1845 <p><a href=downloads/toybox-0.7.2.tar.gz>Toybox 0.7.2</a>
1849 <p>During this development cycle, Elliott Hughes <a href=http://androidbackstage.blogspot.com/2016/07/episode-53-adb-on-adb.html>got interviewed
1851 and Rob Landley <a href=http://linuxluddites.com/shows/episode-88/>got interviewed on Linux Luddites</a> (<a href=http://linuxluddites.com/shows/episode-11/>again</a>).
1864 <p><b>Upgrades</b>: All commands now parse --version when they understand
1865 --help, but "true" and "false" should now ignore their arguments entirely.
1866 We taught stat to handle "%12x" and "%.12x" printf-style escapes, which
1868 device driver. Added patch -d and --dry-run, wc can now do -cm together,
1869 find has a NOP -noleaf so scripts that use that don't break, add -c to md5sum
1870 and sha1sum. Elliott taught ps to treat extra aguments as additional -p
1871 pids, implemented xxd -s, did a number of upgrades to file (added -HL,
1873 and stripped/not stripped and it no longer prints a guessed build ID type).
1874 Elliott also added optional build-time support for using openssl's
1875 assembly-optimized md5sum/sha1sum implementations (leading to a new
1881 workaround for <a href=https://sourceware.org/bugzilla/show_bug.cgi?id=17829>glibc bug 17829</a>, made sed -i preserve ownership when run as root,
1882 made du max out at 2 terabytes instead of 2 gigabytes on 32-bit systems
1886 octal digits and handling the (posix-mandated) difference between %b and
1887 non-%b octal output, reading from "-" no longer closes stdin when done,
1888 netcat -L works with nommu (although it may need more portability work),
1894 appropriate). "LC_ALL=C ls -Cs --color" produces the same output
1895 as other versions (two spaces padding, -k hardwired on).<p>
1901 changing, fixed ls -sh, and added a lot of
1903 Izabera pointed out cmp -l and -s can't be selected at the same time,
1904 that timeout was never actually checking -v, that ls should default to -q
1905 when output is to a tty, and that "file -" would sometimes try to open "-"
1909 hardwired 512-byte units, so stat.c was wrong. David Hedges pointed out
1922 <p>The defconfig build is now slightly less broken on older centos versions
1923 (although <a href=http://lists.landley.net/pipermail/toybox-landley.net/2016-September/008664.html>the consensus</a> is that Centos is just generally broken).<p>
1925 <p>Several commands were over-using xprintf(), which flushes its output
1952 understands that "-" means stdin. New flag WARN_ONLY tells these functions
1953 to just print a warning on failure, and return -1 instead of exiting.
1959 <p>New TOYFLAG_NOHELP disables --help processing (which "true" and "false"
1962 <p>The test suite now has NOSPACE=1 to ignore whitespace (using diff -b to
1966 and a function testcmd() which is just like testing() except it prepends
1970 <a name="02-06-2016" /><a href="#02-06-2016"><hr><h2><b>June 2, 2016</b></h2></a>
1975 brain to see what is likely to be well received. However, no-one knows
1978 <p> - The Hitchhiker's Guide to the Galaxy</p></blockquote>
1980 <p><a href=downloads/toybox-0.7.1.tar.gz>Toybox 0.7.1</a>
1982 is out. (Yes, I forgot to update the --version string, but I already
1996 <p>Izabera implemented env -u, suggested adding seq -w, made factor
1998 -w0 should disable wrapping, and sped up wc -c.
1999 Elliott Hughes added mount -o relatime, xxd -p -r, and od -w.
2000 Sameer Pradhan (or possibly Bilal Qureshi) suggested adding stat -tL -c %m%t%T.
2001 Tom Cherry added getprop -Z. Paul Barker added hostname -b and -F.
2002 Rob added ls -b, made ls -q work with utf8,
2003 made sed -f - read from stdin, and added top -O (like ps -O).</p>
2006 with -o TID, TNAME. We also added -o PCY (android scheduling policy),
2007 -o BIT (process is 32 or 64 bit), and -o TNAME now shows the parent
2022 <p>Grep -H and -n should now work properly with -ABC. Andy Chu pointed out an
2024 in diff -r, and fixed operator precedence in expr (although Rob is rewriting
2026 Patrick Ohly fixed the too-aggressive suid permission dropping logic.
2027 Josh Gao fixed a segfault when find -iname got no argument, and
2028 made tail -f work right with just one file argument.
2030 the tar tests, and reported another find bug (with -iname -o -iname not
2033 <p>Elliott Hughes fixed wc -c to not trust zero length files to actually be
2034 zero length (/proc does that), fixed "mount -o rw,remount /system" on
2035 Android, removed trailing spaces on ps -o cmdline, fixed pkill -9 and
2036 the corresponding tests, made "insmod -" work, fixed top -b and tail -NUM,
2039 explicit "sort" calls to make pipelines so build tempfiles are easier to cache.
2040 Rob <a href=https://github.com/landley/toybox/commit/32b3587af261>fixed an insane sed thing</a> the perl 5.22 build was doing.
2041 Fixed mount -o to properly pass in leftover string data, and
2042 <a href=http://lists.landley.net/pipermail/toybox-landley.net/2016-March/004790.html>documented how to use toybox to mount nfs</a> (warning: kernel patch
2048 John Regehr. Andy Chu found a segfault in "sed -e 'c\'" with no trailing
2049 line, and implemented mv -n and cp -n. The cyanogenmod guys pointed out that
2050 cp -a shouldn't complain if a non-root user can't chown, and we added
2051 the output path to cp -r error messages while we were there (before was just
2056 suffix. Davis Mosenkovs fixed touch -t seconds parsing.
2060 <p>Not all of the commands build standalone, but more of them do now;
2061 scripts/single.sh can now build a "mv" that isn't actually "cp".
2063 produces a broken ps that ignores -A (because ps.o wasn't getting rebuilt
2064 even though top had the FLAG macros for -A zeroed).</p>
2066 <h2>Build</h2>
2071 <p><b>New build targets let you build individual commands by name</b>, ala
2083 build loop has fewer forks now.</p>
2098 nommu conversion (which should fix the allyesconfig build).</p>
2111 infinite recursion depth support (needed by rm -r), updated the
2121 <a href=https://sourceware.org/ml/libc-alpha/2015-11/msg00253.html>has vowed
2140 toys.h (to make cross-compiling from systems we don't run on easier).</p>
2143 "sed -e 'a\'" (with no next line of the pattern, so an unterminated
2148 is undocumented, non-obvious, and doesn't really make logical sense.)</p>
2155 <a name="02-02-2016" /><a href="#02-02-2016"><hr><h2><b>February 2, 2016</b></h2></a>
2159 </p><p>- The Hitchhiker's Guide to the Galaxy</p></blockquote>
2161 <p><a href=downloads/toybox-0.7.0.tar.gz>Toybox 0.7.0</a>
2167 (most replacing corresponding versions from pending). Added grep -ABC,
2168 swapon -d (discard), mkswap -L (label) and UUID support, and find -delete.
2169 Izabera added free -h and unshare -f. Josh Gao implemented tail -f.
2170 Jose Bollo submitted cp --preserve=context,attr. Kylie McClain added
2171 mktemp -u.</p>
2178 <p>Lots of updates to ps: several new -o options, -k (--sort) -O and -M,
2185 <p>Dreamhost restored the <a href="#12-21-2015">missing 11 months</a>
2192 <a href=http://landley.net/notes-2012.html#15-10-2012>never
2197 <a href=https://engineering.twitter.com/opensource/code-of-conduct>borrowing twitter's</a>) because somebody
2202 first one in the range, so [[] didn't terminate). Fixed sort -f and added test cases.
2203 Assume 80 columns in "ls -m | cat", ls -L is no longer backwards,
2206 to find (Gilad Arnold fixed -perm, Daniel K. Levy fixed "find . -exec echo {}",
2207 and while we're there I fixed find --prune, made "find . -execdir
2208 echo {} + -execdir ls {} +" work, and ripped out the environment size
2211 years and documented the %s escape, fixed hwclock -u, and pointed out
2215 values, and added a --no-preserve-owner option. Fixed the SUID permission
2216 dropping logic (which was a bit over-zealous, preventing some commands from
2219 <p>I'm told that debian-testing broke its libc so the nsenter build breaks,
2220 but my attempts to install the debian-testing network cd image under
2222 reproduce the problem. (Debootstrap under unbuntu builds an ubuntu-flavored
2226 <p>Rewrite of the about.html page, tweaks to design.html, and a re-triage of
2239 <li><p>Renamed dirtree->data to dirfd and stopped storing symlink length
2241 didn't give a valid directory filehandle, noticeable with ls -Z).</p></li>
2261 <p>We're getting close to having a self-hosting development environment
2270 <p>And the remaining non-busybox commands in Aboriginal Linux's build/host
2288 <a name="12-21-2015" /><a href="#12-21-2015"><hr><h2><b>December 21, 2015</b></h2></a>
2315 <a name="03-11-2015" /><a href="#03-11-2015"><hr><h2><b>November 3, 2015</b></h2></a>
2318 of Betelgeuse?" Arthur shrugged in a so-so sort of way. "I don't know," he
2319 said, taking a pull of beer. "Why - do you think it's the sort of thing you're
2320 likely to say?"</p><p>- The Hitchhiker's Guide to the Galaxy</p></blockquote>
2322 <p><a href=downloads/toybox-0.6.1.tar.gz>Toybox 0.6.1</a>
2326 <p>We have a new <b>ps</b> command with all the -o fields posix wants (although
2327 it doesn't accept BSD non-dash option syntax yet), and <b>bunzip2</b> (not just
2328 bzcat but the proper extract-in-place command).
2332 <p>The people waiting for <b>human readable number support</b> (du -hH, ls -h,
2344 all knowledge and wisdom about nommu. The old site <a href=#12-02-2012>contains
2360 reboot, init, login, and modprobe, and fixed a distro-specific build break in
2361 scripts/mkflags.h. Elliott Hughes and Lipi Lee made netstat -p handle
2362 command lines longer than 21 characters, and Elliott fixed netstat -e and
2363 some build warnings. Yeongdeok Suh fixed a warning in dhcpd.
2376 either), fixed several ls -l display issues (user/group field ordering,
2379 class, fixed a mv overwrite bug, made df's columns auto-size, added
2380 --ppid and -Z to ps, and teamed up with Daniel K. Levy to fix
2381 a segfault in find's handling of -newer -group or -user.</p>
2383 <p>Hyejin Kim added stat -c %T support. Colin Cross worked
2386 units. Isabella Parakiss reported that sed -e "/x/c\" -e "y" added an extra
2387 newline and that grep -w '\(x\)\1' didn't work, both now fixed.
2393 <p>Isabella Parakiss reported that sed -e "/x/c\" -e "y" added an extra
2394 newline and that grep -w '\(x\)\1' didn't work, both now fixed.
2400 <p>Two large thinko fixes in oneit: -3 was always enabled (which would
2403 set up right (for requesting semi-graceful halt/poweroff/reboot).
2404 Calling install without a mode is now 0755, and install -g 0 no longer clashes
2405 with cp --preserve. Better error message for ls -r on unreadable
2406 directories, and ls -Z now uses O_PATH (with the /proc/self/fd/%d
2409 <p>Date now understands @unixtime[.fraction] and uses -D for
2410 the set-side format (matching busybox's extension for this). The seq -f
2421 a NULL argv (see cpio -p for example usage). Replaced toys.recurse
2422 with toys.stacktop so the recurse or re-exec decision is now based
2423 on bytes of stack space used. Marked a bunch of command-local functions
2430 The login command finally got a long-overdue cleanup (it's one of the
2437 "make CROSS_COMPILE=prefix-" (as well as "CROSS_COMPILE=prefix- make",
2438 which still works). Toybox is now installed chmod -w so broken installers
2442 we added a workaround. You can now build uptime without utmpx.h.
2447 toolchain such as <a href=http://landley.net/aboriginal/downloads/binaries/old/1.4.3/cross-compiler-sh2eb.tar.gz>the one from Aboriginal Linux</a>,
2448 but <a href=http://github.com/richfelker/musl-cross-make>with musl-libc</a>
2450 fact they provide a non-functional fork() implementation that always returns
2451 -ENOSYS, to prevent you from compile-time probing for nommu support when
2452 cross-compiling. Unfortunately "preventing you from probing" seems to be
2456 enable musl-specific bug workarounds.</p>
2458 <a name="23-07-2015" /><a href="#23-07-2015"><hr><h2><b>July 23, 2015</b></h2></a>
2459 <p>I recreated the <a href=downloads/toybox-0.6.0.tar.gz>0.6.0 source tarball</a>
2461 because I forgot to add --prefix to the git archive command when I updated
2465 <a name="19-07-2015" /><a href="#19-07-2015"><hr><h2><b>July 19, 2015</b></h2></a>
2470 around in.</p><p>- The Hitchhiker's Guide to the Galaxy</p></blockquote>
2472 <p><a href=downloads/toybox-0.6.0.tar.gz>Toybox 0.6.0</a>
2474 is out. (Yes, git. See the <a href=#05-04-2015>previous news entry</a>.)</p>
2484 <a href=http://landley.net/talks/celf-2015.txt>outline</a>), in which I
2485 repeat my <a href=http://landley.net/notes-2013.html#07-11-2013>perennial</a>
2494 <a href=#15-11-2011>most</a>
2496 <a href=http://landley.net/notes-2011.html#13-11-2011>research</a> on
2506 (<a href=http://landley.net/talks/ohio-2013.txt>outline</a>,
2507 <a href=https://archive.org/download/OhioLinuxfest2013/24-Rob_Landley-The_Rise_and_Fall_of_Copyleft.mp3>audio</a>) on why I switched away from GPL for
2523 <p>You can once again build catv now the flag infrastructure's been updated to
2524 let it coexist with cat -v.
2530 <p><b>New options:</b> Added sed -E as a BSD-compatible synonym for -r.
2531 Upgraded oneit with -r (restart), -3 (send exiting PID values to child),
2532 and signal handling. Added -v option to timeout, -m to mknod, -u to shred,
2533 -t to dmesg, and -123 to head and tail. Added implicit "." to grep -r without
2534 any files to work on. Hyejin Kim requested prefix support for truncate -s.
2535 Greg Hackman added -inum to find.
2536 Jan Cybulski added the smack side of ls -Z support. Various patches also
2537 added -Z to mkdir, mknod, and mkfifo.
2538 Basic cp --preserve support went in, but not yet the xattr/LSM parts.</p>
2540 <p>The toybox command now has a --version option,
2543 <p><b>Build infrastructure:</b>
2545 command build in a .bad file, and "make defconfig" is quieter now.</p>
2549 update-alternatives". (There's some argument over
2553 <a href=http://landley.net/writing/hackermonthly-issue022-pg33.pdf>for
2567 to make --longopts take an optional =value part, and more about TOYBOX_DEBUG
2580 Fixed mount -a segfaulting without -O (reported by Janus Troelsen),
2583 Fixed printf -- and printf ---. Lots of tweaks to ls -l spacing with
2584 different options. Make touch -d and -t actually set time when you don't
2591 the build). Output an error message for "cat /mnt".</p>
2595 numeric uid/gids, and that sort -z affects both input and output.
2597 David Halls fixed bugs in install -D and find -exec. Samuel Holland
2598 fixed unshare -r. Hyejin Kim fixed makedevs with a count of 1, fold -w
2599 range checking, an error path in scripts/mkflags.c, added -i to dhcpd,
2601 Jan Cybulski spotted wrong indentation when combining ls -s and -i with -C and
2602 -x. José Bollo fixed stat %G. Sameer Pradhan fixed a bug in mkfifo -Z.</p>
2612 fix dmesg -c error reporting, fix a segfault in comma_scan where the option
2613 was the last item in optlist (triggered by mount -o ro,remount), fix
2614 hwclock -w, made ifconfig print lowercase MAC addresses (it was bothering
2623 support to mdev. Yeongdeok Suh added RFC-3315 ipv6 support to dhcpd.</p>
2635 a standard syntax). Don't depend on malloc(0) to return non-null in ls.
2647 The build now checks $LDFLAGS for linker-only flags, and allows the strip
2652 security modules stuff, if (lsm_enabled()) should turn into a compile-time
2654 testing against CFG_TOYBOX_LSM_NONE or derived symbols is still useful
2661 build targets without even software float). Added readfileat() to lib/lib.c.</p>
2668 <p>The not-curses infrastructure introduced by hexedit mostly moved to
2679 with its GNU counterparts" means when CP_MORE adds 7 non-posix options
2683 GNU is special is there are a half-dozen other independent
2689 <a href=http://archive.linuxfromscratch.org/lfs-museum/7.6/LFS-BOOK-7.6-NOCHUNKS.html#ch-tools-gcc-pass1>calling mv -v</a>
2690 then I impelement mv -v
2693 util-linux isn't a gnu package, nor are info-zip, e2fsprogs, kmod, less,
2696 <a name="05-04-2015" /><a href="#05-04-2015"><hr><h2><b>April 5, 2015</b></h2></a>
2699 and <a href=https://github.com/kraj/meta-musl/tree/master/recipes-core/toybox>openembedded</a>
2700 and <a href=https://packages.gentoo.org/package/sys-apps/toybox>gentoo</a>
2706 <a name="25-02-2015" /><a href="#25-02-2015"><hr><h2><b>February 25, 2015</b></h2></a>
2709 complete fools."</p><p>- The Hitchhiker's Guide to the Galaxy</p></blockquote>
2711 <p><a href=downloads/toybox-0.5.2.tar.gz>Toybox 0.5.2</a>
2727 binary. Rather a lot of commands that didn't build by themselves (mv depending
2739 <a href=http://www.mail-archive.com/toybox@lists.landley.net/>two</a>
2757 <p>Some commands grew new option flags, such as cp --remove-destination
2758 and touch -h.</p>
2760 <p>The parallel build has better error reporting now. When toybox needs to
2761 re-exec itself to regain suid root permissions and hasn't got the suid bit,
2771 no longer defined -d but still had it in option groups at the end).
2772 Workaround for glibc redefining dirname() and basename() to random non-posix
2781 did rm -r on it without -f, after the prompt it would complain it was a
2793 <p>Reworked the option parsing infrastructure so more commands build
2826 <a name="18-02-2015" /><a href="#18-02-2015"><hr><h2><b>February 18, 2015</b></h2></a>
2828 here's <a href=http://www.mail-archive.com/toybox@lists.landley.net/>another
2834 <a href=http://www.dreamhoststatus.com/2015/01/14/discussion-list-hardware-maintenance/>hardware upgrade to fix a software problem</a>, and the stale
2839 web archive, from Dec 15-Jan 3, and then another hole from Jan 16-Feb 18.
2843 <a name="30-12-2014" /><a href="#30-12-2014"><hr><h2><b>December 30, 2014</b></h2></a>
2851 <a href=http://lists.landley.net/listinfo.cgi/toybox-landley.net>the first link</a>.</p>
2855 <a name="19-11-2014" /><a href="#19-11-2014"><hr><h2><b>November 19, 2014</b></h2></a>
2857 <blockquote><p>"This time it was right, it would work, and no one would have to get nailed to anything."</p><p>- The Hitchhiker's Guide to the Galaxy</p></blockquote>
2859 <p><a href=downloads/toybox-0.5.1.tar.bz2>Toybox 0.5.1</a>
2869 Busybox's sed test suite that aren't explicitly testing for gnu bugs we
2870 don't want to copy, it's not yet good enough to build Linux From Scratch.
2874 Did you know "echo hello | sed p - -" segfaults gnu sed in Ubuntu 12.04?
2893 Isaac Dunham implemented acpi -ctV options, and spotted the bug that ls -d
2894 was inappropraitely following command line symlinks without -H or -L (it
2895 should act like ls -l does), and ls -F handles symlinks wrong too.
2903 static analysis. (These fixes are mostly to seldom-used codepaths like the
2905 also suggested upgrading ln -f to leave the original target alone if link
2906 creation fails, and reported that mv -f and -i weren't implemented (now fixed).</p>
2919 probes for functions missing from bionic-libc, and annotated the commands that
2931 <p>The printf-style escape parsing ("\n" and friends) got factored out into
2934 <a name="02-10-2014" /><a href="#02-10-2014"><hr><h2><b>October 2, 2014</b></h2></a>
2938 difficulties."</p><p>- The Hitchhiker's Guide to the Galaxy<p></blockquote>
2940 <p><a href=downloads/toybox-0.5.0.tar.bz2>Toybox 0.5.0</a>
2948 <p>cp now implements -HL and -F to force delete of pending files, cpio now
2949 ignores -m and implements -p, ls -C now has utf8 support (using wcwidth
2959 <h3>Build infrastructure</h3>
2963 <p>The build now takes advantage of SMP, autodetecting the number of
2965 Other build changes: split out $LDOPTIMIZE because old compilers complain
2966 about linker options passed with -c, and the entire "generated" directory now
2971 <p>The standalone build infrastructure (scripts/single.sh) got upgraded to
2972 build more commands as standalone executables. In make.sh the source file
2975 sub-options (so CP has CP_MORE), enables I18N and FLOAT support to build
2976 full-featured commands, and includes --help text (at least when
2978 now produces (redundant) function prototypes so you can build an OLDTOY
2987 <p>The main reason for standalone build failures is NEWTOY() or OLDTOY()
2996 <p>Standalone builds are used by the test suite when testing individual
3001 <p>A new addition to the "generated" directory is generated/build.sh
3002 containing a single compiler command line to build toybox in its current
3004 exisiting build, this may let you build on a new system that hasn't quite
3011 done with the directory filehandle still open (new dir->again variable added
3014 Use daemon() out of libc instead of hand-rolled daemonize() in various
3023 command was promoted (and the build would break if both were enabled),
3024 toy_exec() sometimes needs to re-exec from $PATH rather than recurse
3030 option parsing bug where [-abc] would forget _all_ command line arguments
3033 Lukasz Szpakowski fixed rm -f on a broken symlink (failed), and killall
3038 <p>A somewhat fiddly fix to rm -rf (which needs to chmod directories to u+rwx
3042 to portability.h with a workaround, you may need CFLAGS=-D__MUSL__ in your
3043 build if your musl build's features.h doesn't #define that. (I may do
3051 another release, so locally patching around posix-2008 violations is silly).</p>
3057 "$" at the end), but this prevents UTF-8 usernames. Posix' stated logic
3076 testing.sh script is now in scripts rather than mixed into the *.test files.</p>
3079 stop at the first failure), and spotted a build bug where using gnu
3080 sort on the host broke in non-C locales.</p>
3085 <a name="07-07-2014" /><a href="#07-07-2014"><hr><h2><b>July 7, 2014</b></h2></a>
3086 <blockquote><p>"This planet has - or rather had - a problem, which was this:
3091 unhappy."</p><p>- The Hitchhiker's Guide to the Galaxy</p></blockquote>
3093 <p><a href=downloads/toybox-0.4.9.tar.bz2>Toybox 0.4.9</a> (<a href=/hg/toybox/shortlog/1385>commit 1385</a>) is out.</p>
3099 host from Rich felker, and I did nbd-client and the first 2/3 of mount.</p>
3103 fallocate, and nbd-client.</p>
3134 <p>Fix od bug reported by Samuel Holland ("od -v -b" was appending the default
3148 a pipe). Bugfix so "help -a" works again. Option parsing on nohup now stops
3150 which was actually a bug in lib function find_in_path(). Made rm -rf of
3153 <p>The build now passes the same $CFLAGS to the library probe as the final
3154 build, because arch linux is so broken it provides different sets of
3166 added tests for cpio, link, and du, added lspci -i, made the pci database
3170 it actually smaller in the process. I added -b flags to md5sum and sha1sum
3175 the build now switches on all the sub-options of the command so we get
3178 <p>Add -ds flags to date and document +FORMAT escapes. Add the shell NOP
3182 build against uClibc is why fallocate wasn't enabled in defconfig before.)</p>
3184 <p>The umount command now does an losetup -d on the device by default, so
3196 to toys.signalfd with the signal number if signalfd isn't -1 (which it's
3202 decimal kilo/mega/gigabytes (so when du -u says 5.0G it means 5.0 billion
3203 bytes). The build infrastructure now notices duplicate commands (so if you
3205 first one, the build break is now more informative).</p>
3207 <a name="20-04-2014" /><a href="#20-04-2014"><hr><h2><b>April 20, 2014</b></h2></a>
3212 turn it off.</p><p>- The Hitchhiker's Guide to the Galaxy</p></blockquote>
3214 <p><a href=downloads/toybox-0.4.8.tar.bz2>Toybox 0.4.8</a> is based on
3218 <p>The big news is that the build no longer needs python to generate help.h,
3234 compress.c, and still need to do a corresponding deflate (compression-side)
3243 <p><b>Upgrades:</b> Ifconfig grew /prefix netmask support (ala 1.2.3.4/24). Grep now has -zZ to
3244 handle null terminated data, cksum grew -H for hex output. Upgraded od so the
3245 fields align better when producing multiple output types. Help has -a and -h
3251 Ashwini Sharma spotted a bug in pidof -o, and added verbose (-v) options
3252 to mkdir and ln, and suggested killall should have an -s option and
3253 allow -l to take zero arguments. Ashwini Sharma and Felix Janda upgraded
3263 <p><b>Build stuff:</b> Each FOR_xxxx macro now has a complementary CLEANUP_xxxx macro, so you
3273 <p>Regression tested against Ubuntu 8.04 to fix up bit-rot in defconfig
3274 build on older systems. (We depend on Posix-2008, but not necessarily
3275 the absolute latest build environment.)</p>
3285 help text for all the defconfig commands, using the new help -ah output.
3293 <a name="18-11-2013" /><a href="#18-11-2013"><hr><h2><b>November 18, 2013</b></h2></a>
3294 <blockquote><p>"Space," it says, "is big. Really big. You just won't believe how vastly, hugely, mindbogglingly big it is. I mean, you may think it's a long way down the street to the chemist's, but that's just peanuts to space."</p><p>-
3297 <p><a href=downloads/toybox-0.4.7.tar.bz2>Toybox 0.4.7</a> is based on
3311 added -e to watch, removed a memory leak, and fixed a terminal size problem.
3314 where grep didn't malloc enough space with -E (leading to a segfault).
3316 the code I wrote), in od to fix -t co, -J, and -c options. Add uname -o as a
3317 synonym for -s. Build fix to never use $CC without prefixing it with
3321 <p>The compile-time command line option parsing got rewritten (ported from
3323 --longopts to drop out properly when disabled in the configuration. Terminal
3324 querying got refactored. Patch's -x option is now more informative (a
3328 now uses scripts/single.sh when testing a single command.</p>
3330 <a name="17-09-2013" /><a href="#17-09-2013"><hr><h2><b>September 17, 2013</b></h2></a>
3334 and this might turn out to be it.</p><p>- The Hitchhiker's Guide to the Galaxy</p>
3337 <p><a href=downloads/toybox-0.4.6.tar.bz2>Toybox 0.4.6</a> is based on
3346 <p>The ls command now has a --color=auto option (suggested by Rich Felker).
3347 The multiplexer now has a --help option so you can say "./toybox --help blah"
3348 instead of using the built-in "help" command. (Which is a shell built-in.
3350 other project has conditioned people to expect --help, so...) I forget who
3362 M. Farkas-Dyck), and sysvinit by Kyungwan Han.</p>
3402 <p>General improvements and bug fixes to argument parsing. The [-abc] exclude
3403 logic should now clear arguments slots when disabling options. Bare --longopts
3406 --color and --color=auto but not --color auto).</p>
3421 (-fno-asynchronous-unwind-tables)
3424 "-fstop-being-stupid" is a thing you have to hit gcc with from time to time.</p>
3429 finally make it work right (we think). Still need to implement tail -f
3430 someday (the tricky bit is making -f follow multiple files at once).
3439 pointed out the build was making a FLAG_ macro for " " which broke some
3451 between TEST_HOST and testing toybox. (If you go "TEST_HOST=1 scripts/test.sh
3454 <p>Last release, "mkdir sub/sub && chmod 007 sub/sub && rm -rf sub" didn't
3459 <a name="26-07-2013" /><a href="#26-07-2013"><hr><h2><b>July 26, 2013</b></h2></a>
3465 <a name="02-07-2013" /><a href="#02-07-2013"><hr><h2><b>July 2, 2013</b></h2></a>
3468 like you."</p><p>- The Hitchhiker's Guide to the Galaxy</p></blockquote>
3470 <p><a href=downloads/toybox-0.4.5.tar.bz2>Toybox 0.4.5</a> is based on
3479 each command can now understand --help (including both "toybox --help"
3480 and "toybox --help command" in the multiplexer).</p>
3482 <p>The "pending" directory has several commands (find, xzcat, nbd-client,
3492 <p>Fixed _another_ "ls -C" segfault when terminal size can't be detected,
3493 condensed the ls help text to fit on one page, implented --color, and taught
3494 -l to print the major, minor numbers when showing block/char devices.
3495 Argument parsing now handles "--" properly (to end option checking),
3496 and the infrastructure can now handle bare --longopts that have no
3498 Fixed an old bug in "patch", chmod grew -f, who grew -a. Isaac Dunham
3499 fixed "-" vs "_" handling in modinfo, added a "firmware" output
3500 field, added -b and -k support, and taught it that the ".ko" extension means
3505 (ala readlink -f /dev/sda as a normal user).
3508 <p>In the build infrastructure, scripts/findglobals.sh finds leaked global
3518 <p>You should now be able to build from a source control snapshot on a build
3524 <p><b>LICENSE TWEAK</b>: After <a href=http://lists.landley.net/pipermail/toybox-landley.net/2013-March/000794.html>discussion</a> on the mailing list the "2 clause
3543 <a name="21-03-2013" /><a href="#21-03-2013"><hr><h2><b>March 21, 2013</b></h2></a>
3547 <a href=http://landley.net/talks/celf-2013.txt>talk outline</a> and an
3548 <a href=/aboriginal/about.html#selfhost>android self-hosting writeup</a>.</p>
3556 <li>4m22s <a href=http://www.youtube.com/watch?v=SGmtP5Lg_t0#t=4m22s>Software needed to become self-hosting</a></li>
3578 <a name="14-03-2013" /><a href="#14-03-2013"><hr><h2><b>March 14, 2013</b></h2></a>
3579 <blockquote><p>"Ford, you're turning into a penguin. Stop it." -
3582 <p><a href=downloads/toybox-0.4.4.tar.bz2>Toybox 0.4.4</a> is based on
3586 <p>The "cp" command now implements the -s symlink option, plus bugfixes
3588 "id -Gn root" should now print root's groups
3589 instead of the current user's. Several build fixes so toybox builds under
3590 Ubuntu 8.04 again (which is about as old a build environment as you
3591 can expect to find posix-2008 features in).</p>
3601 <a name="18-01-2013" /><a href="#18-01-2013"><hr><h2><b>January 18, 2013</b></h2></a>
3602 <blockquote><p>This must be Thursday. I never could get the hang of Thursdays.</p><p>- The Hitchhiker's Guide to the Galaxy</p></blockquote>
3604 <p><a href=downloads/toybox-0.4.3.tar.bz2>Toybox 0.4.3</a> is based on
3609 <p>Elie De Brauwer added the rev command, cleaned up tac, implemented the -s
3610 and -f flags for seq, added -v and -i to killall (and fixed killall not to
3612 Felix Janda added -m to mkdir, pwd -L and -P, and more test suite entries.</p>
3617 default to -C and a screen size of 0 made column view unhappy), and cp got an
3623 <p>Infrastructure-wise the code is better about automatically setting the
3640 to -Os by default now.</p>
3642 <a name="15-12-2012" /><a href="#15-12-2012"><hr><h2><b>December 15, 2012</b></h2></a>
3646 </p><p>- The Hitchhiker's Guide to the Galaxy</p></blockquote>
3648 <p><a href=downloads/toybox-0.4.2.tar.bz2>Toybox 0.4.2</a> is based on
3656 bug in login), and rm (from Rob Landley). Felix Janda added UTF-8
3657 support infrastructure (for non-ascii character sets) with a config option.
3658 Elie De Brauwer added tests for cat and sha1sum, and -so options to pidof.
3659 The "ls" command defaults to -C (column view) now, and "readlink" now supports
3660 -fenq.</p>
3662 <p>Portability work: toybox should now build against the musl C library,
3690 but am waiting for somebody to complain first. The default "ulimit -n" is 1024
3693 <a name="13-11-2012" /><a href="#13-11-2012"><hr><h2><b>November 13, 2012</b></h2></a>
3695 </p><p>- The Hitchhiker's Guide to the Galaxy</p></blockquote>
3697 <p><a href=downloads/toybox-0.4.1.tar.bz2>Toybox 0.4.1</a> is based on
3705 <p>The patch command now supports -l, and gethostname is now enabled by
3707 Felix Janda added -m support to wc (for utf8).</p>
3710 "posix", "lsb", and "other" subdirectories (for things required by Posix-2008,
3721 <p>An upgrade to the build infrastructure now allows commands with _ and -
3729 calculation to match the POSIX spec. The kernel build didn't like our mktemp
3734 fixes (thinko in xpidfile). Fixed uname -m when running a 32 bit x86 binary
3735 on an x86-64 host (it lies and says the system is i686, i586, or i486 depending
3757 <a name="23-07-2012" /><a href="#23-07-2012"><hr><h2><b>July 23, 2012</b></h2></a>
3760 out."</p><p>- The Hitchhiker's Guide to the Galaxy</p></blockquote>
3762 <p><a href=downloads/toybox-0.4.0.tar.bz2>Toybox 0.4.0</a> is based on
3775 <a href=code.html#lib_dirtree>dirtree</a> infrastructure, added an -r option
3776 to date (and fixed a bug where -u wouldn't override /etc/localtime),
3782 <a name="25-06-2012" /><a href="#25-06-2012"><hr><h2><b>June 25, 2012</b></h2></a>
3783 <blockquote><p>"For a moment, nothing happened. Then, after a second or so, nothing continued to happen."</p><p>- The Hitchhiker's Guide to the Galaxy</p></blockquote>
3785 <p><a href=downloads/toybox-0.3.1.tar.bz2>Toybox 0.3.1</a> is based on commit
3787 mostly a bugfix release for ls -l (which was unhappy on targets other than
3788 x86-64), plus a new "date" from Andre Renaud and rewritten chgrp/chown which
3798 <a name="12-06-2012" /><a href="#12-06-2012"><hr><h2><b>June 12, 2012</b></h2></a>
3800 he was more intelligent than dolphins because he had achieved so much - the
3801 wheel, New York, wars and so on - whilst all the dolphins had ever done was
3803 always believed that they were far more intelligent than man - for precisely
3804 the same reasons."</p><p>- The Hitchhiker's Guide to the Galaxy</p></blockquote>
3806 <p>It's well past time for <a href=downloads/toybox-0.3.0.tar.bz2>toybox 0.3.0</a>,
3825 you need a quarter-second sleep, it can do that now), and fixed a build bug
3829 mkdir -m). Ilya Kuzmich contributed comm. Elie De Brauwer added mountpoint,
3843 <p>Several random bugfixes: unshare() might actually build portably now,
3844 yes 'n' | cp -i should no longer bypass stdin and prompt via the tty, the
3846 multiplexer command, and a bugfix to xargs -0 means it should no longer
3848 posix whitespace handling that -0 obsoleted, but I'll deal with that next
3851 <p>The build infrastructure is now automatically generating FLAG_ macros
3863 <a name="03-03-2012" /><a href="#03-03-2012"><hr><h2><b>March 3, 2012</b></h2></a>
3868 for all these years."</p><p>- The Hitchhiker's Guide to the Galaxy</p>
3871 <p>Here's <a href=downloads/toybox-0.2.1.tar.bz2>toybox 0.2.1</a> based
3883 for cmp. Frank Bergmann sent a warning fix. Bryce Fricke added -i to cp.
3888 code, a build fix to unshare, some random bugfixes, and so on. My only new
3890 bloat-o-meter.)</p>
3903 <a name="12-02-2012" /><a href="#12-02-2012"><hr><h2><b>February 12, 2012</b></h2></a>
3908 <p> - The Hitchhiker's Guide to the Galaxy</p></blockquote>
3911 <a href=downloads/toybox-0.2.0.tar.bz2>toybox-0.2.0</a>, more a synchronization
3913 ready-to-use state (what "make defconfig" builds), another ten or so partially
3920 <a name="15-11-2011" /><a href="#15-11-2011"><hr><h2><b>November 15, 2011</b></h2></a>
3921 - Back from the dead, Toybox is now under a 2
3931 <!--#include file="footer.html" -->