From ea6c172dadd035a09b5157edf83f4f6e5d2f19b0 Mon Sep 17 00:00:00 2001
From: Rob Landley
Toybox's current minimal native development environment builder is a new -tiny +tiny implementation integrated into the toybox source. The "make root" target will create a simple toybox chroot (by default in the root/host directory), and adding a LINUX= argument to @@ -98,7 +98,7 @@ bootable system with a wrapper script to run it under the emulator
The list of commands remaining before we can build Linux From Scratch under the result (with an appropriate -compiler) +compiler) is tracked in the roadmap, and doing so is one of the main goals for toybox's 1.0 release.
@@ -150,7 +150,7 @@ kind of nice to have.This project is maintained as a git
+ This project is maintained as a git
archive, and also offers source
tarballs and static binaries
of the release versions.
For the build environment and runtime environment, toybox depends on @@ -508,7 +508,7 @@ it's not out yet.)
We use a few of the new features like compound literals (6.5.2.5) and structure initialization by member name with unnamed members zeroed (6.7.9), but mostly we "officially" went from c99 to C11 to work around a -clang compiler bug. +clang compiler bug. The main thing we use from c99 that c89 hadn't had was // single line comments. (We mostly don't even use C99's explicit width data types, ala uint32_t and friends, because LP64 handles that for us.) diff --git a/www/faq.html b/www/faq.html index 3640e82b..8ecc2788 100644 --- a/www/faq.html +++ b/www/faq.html @@ -266,7 +266,7 @@ failing tests. The default VERBOSE=fail stops at the first such failure.A: For vanilla releases, check the -date on the commit tag +date on the commit tag or the example binaries against the output of "toybox --version". Between releases the --version @@ -299,7 +299,7 @@ info for that one.
A: Ideally on the mailing list, although emailing the maintainer is a popular if slightly less reliable alternative. -Issues submitted to github +Issues submitted to codeberg are generally dealt with less promptly, but mostly get done eventually. AOSP has its own bug reporting mechanism (although for toybox they usually forward them to the mailing list) and Android vendors usually forward them to AOSP which @@ -334,8 +334,8 @@ and its original author (Rob Landley) continues to maintain the open source project.
Android's base OS maintainer (Elliott Hughes, I.E. enh) -ported -toybox +ported +toybox to Android in 2014, merged it into Android M (Marshmallow), and remains Android's toybox maintainer. (He explained it in his own words in this podcast, starting either 18 or 20 minutes in depending how @@ -381,7 +381,7 @@ and thus spends less time coding than he does sitting in meetings where testers talk to security people about vendor issues.
Android has many other coders and security people who submit the occasional -toybox patch, but of the last 1000 commits at the time +toybox patch, but of the last 1000 commits at the time of writing this FAQ entry, Elliott submitted 276 and all other google.com or android.com addresses combined totaled 17. (Rob submitted 591, leaving 116 from other sources, but for both Rob and Elliott there's a lot of "somebody @@ -554,6 +554,8 @@ $ exit
But the rest of the hermetic build works without it:
+$ cc scripts/kconfig.c +$ KCONFIG_ALLCONFIG=kconfig/macos_miniconfig ./a.out -n > .config $ scripts/prereq/build.sh #ignoring SO many warnings $ mkdir prereq; mv toybox-prereq prereq/ $ for i in $(prereq/toybox-prereq); do ln -s toybox-prereq prereq/$i; done @@ -680,13 +682,13 @@ Cobol, most people just try to get on with their lives.)These cross compilers are built from the musl-libc maintainer's musl-cross-make -project, built by running toybox's scripts/mcm-buildall.sh in that directory, +project, built by running toybox's scripts/mcm-buildall.sh in that directory, and then symlink the resulting "ccc" subdirectory into toybox where "make root CROSS=" can find them, ala:
cd ~ -git clone https://github.com/landley/toybox +git clone https://codeberg.org/landley/toybox git clone https://github.com/richfelker/musl-cross-make cd musl-cross-make ../toybox/scripts/mcm-buildall.sh # this takes a while @@ -720,7 +722,7 @@ LDFLAGS=--static make distclean defconfig toybox CROSS=m68k-linux-musl- won't run on your host unless you install musl's libc.so into the system libraries (which is an accident waiting to happen adding a second C library to most glibc linux distribution) or play with $LD_LIBRARY_PATH. -(The dynamic package +(The dynamic package in mkroot copies the shared libraries out of the toolchain to create a dynamic linking environment in the root filesystem, but it's not nearly as well tested.) @@ -824,9 +826,12 @@ auditable version of the cmdline portion of that base.Q: How do you build a working Linux system with toybox?
-A: Toybox has a built-in system builder called "mkroot", with the Makefile target "make -root". To enter the resulting root filesystem, "sudo chroot -root/host/fs /init". Type "exit" to get back out.
+A: Toybox has a built-in +system builder +called "mkroot", +with the Makefile target "make root". To enter the resulting root +filesystem, "sudo chroot root/host/fs /init". +Type "exit" to get back out.
Prebuilt binary versions of these system images, suitable for running under the emulator qemu, are uploaded to @@ -865,13 +870,14 @@ pointing at a directory full of cross compilers. The ones I test this with are built from the musl-libc maintainer's musl-cross-make project, built by running toybox's -scripts/mcm-buildall.sh in a musl-cross-make checkout directory, +scripts/mcm-buildall.sh +in a musl-cross-make checkout directory, and then symlinking the resulting "ccc" subdirectory into toybox where CROSS= can find them:
cd ~ -git clone https://github.com/landley/toybox +git clone https://codeberg.org/landley/toybox git clone https://github.com/richfelker/musl-cross-make cd musl-cross-make ../toybox/scripts/mcm-buildall.sh # this takes a while diff --git a/www/header.html b/www/header.html index 178c1391..f6a788a2 100644 --- a/www/header.html +++ b/www/header.html @@ -25,7 +25,7 @@ Download
- Git repo: -
@@ -47,7 +47,7 @@diff --git a/www/license.html b/www/license.html index a7233132..067c0209 100755 --- a/www/license.html +++ b/www/license.html @@ -37,7 +37,7 @@ public domain code and slaps To work around this perception, the above license is the OpenBSD suggested template -license, minus the half sentence +license, minus the half sentence requiring the license text be copied verbatim into derived works. If 2BSD is ok, then 0BSD should be ok, despite being equivalent to placing code in the public domain. diff --git a/www/quick.html b/www/quick.html index 4b5f3413..dbb1f579 100644 --- a/www/quick.html +++ b/www/quick.html @@ -45,7 +45,7 @@ $ ls --help
- Mailing List
- IRC #toybox on libera.chat
-- Commit RSS feed
+- Commit RSS feed
- Maintainer's Blog
- Patreon
To compile toybox from source:
-$ git clone https://github.com/landley/toybox
+$ git clone https://codeberg.org/landley/toybox
$ cd toybox
$ make defconfig toybox
$ ./toybox
@@ -61,7 +61,7 @@ to provide a portable executable without external userspace dependencies. To reproduce that:-$ git clone https://github.com/landley/toybox
+$ git clone https://codeberg.org/landley/toybox
$ cd toybox
$ wget https://landley.net/bin/toolchains/latest/x86_64-linux-musl-cross.tar.xz
$ tar xvf x86_64-linux-musl-cross.tar.xz
@@ -71,7 +71,7 @@ $ ./toyboxYou can also build individual toybox commands as standalone executables, either by name ("make sed") or using the "make change" target (as in change -for a $20) to build all of them at once. This is much less efficient than +for a $20 bill) to build all of them at once. This is much less efficient than the default build, the individual commands add up to around ten times the size of the equivalent all-in-one toybox binary.