You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
572 lines
12 KiB
572 lines
12 KiB
/*
|
|
--- To sync with upstream:
|
|
|
|
# Update source and regenerate generated files.
|
|
git remote add toybox https://github.com/landley/toybox.git
|
|
git fetch toybox && git merge toybox/master && ./regenerate.sh
|
|
|
|
# Make any necessary Android.bp changes and rebuild.
|
|
mm -j32
|
|
|
|
# Run all the tests.
|
|
./run-tests-on-android.sh
|
|
# Run a single test.
|
|
./run-tests-on-android.sh wc
|
|
|
|
# Upload changes.
|
|
git commit -a --amend
|
|
git push aosp HEAD:refs/for/master # Push to gerrit for review.
|
|
git push aosp HEAD:master # Push directly, avoiding gerrit.
|
|
|
|
|
|
--- To add a toy:
|
|
|
|
# Edit the three .config-* files to enable the toy you want for the targets
|
|
# you want it on, and regenerate the generated files:
|
|
./regenerate.sh
|
|
|
|
# Edit the relevant `srcs` below, depending on where the toy should be
|
|
# available.
|
|
|
|
# If you just want to use the toy via "toybox x" rather than "x", you can
|
|
# stop now. If you want this toy to have a symbolic link in /system/bin,
|
|
# add the toy to symlinks.
|
|
|
|
*/
|
|
|
|
package {
|
|
default_applicable_licenses: ["external_toybox_license"],
|
|
}
|
|
|
|
license {
|
|
name: "external_toybox_license",
|
|
visibility: [":__subpackages__"],
|
|
license_kinds: [
|
|
"SPDX-license-identifier-0BSD",
|
|
"SPDX-license-identifier-CC0-1.0",
|
|
"SPDX-license-identifier-Unlicense",
|
|
"legacy_unencumbered",
|
|
],
|
|
license_text: [
|
|
"LICENSE",
|
|
],
|
|
}
|
|
|
|
all_srcs = [
|
|
"lib/args.c",
|
|
"lib/commas.c",
|
|
"lib/dirtree.c",
|
|
"lib/env.c",
|
|
"lib/help.c",
|
|
"lib/lib.c",
|
|
"lib/linestack.c",
|
|
"lib/llist.c",
|
|
"lib/net.c",
|
|
"lib/portability.c",
|
|
"lib/tty.c",
|
|
"lib/xwrap.c",
|
|
"main.c",
|
|
"toys/lsb/gzip.c",
|
|
"toys/lsb/hostname.c",
|
|
"toys/lsb/md5sum.c",
|
|
"toys/lsb/mktemp.c",
|
|
"toys/lsb/seq.c",
|
|
"toys/net/microcom.c",
|
|
"toys/other/dos2unix.c",
|
|
"toys/other/readlink.c",
|
|
"toys/other/setsid.c",
|
|
"toys/other/stat.c",
|
|
"toys/other/timeout.c",
|
|
"toys/other/truncate.c",
|
|
"toys/other/which.c",
|
|
"toys/other/xxd.c",
|
|
"toys/other/yes.c",
|
|
"toys/pending/dd.c",
|
|
"toys/pending/diff.c",
|
|
"toys/pending/expr.c",
|
|
"toys/pending/getopt.c",
|
|
"toys/pending/tr.c",
|
|
"toys/posix/basename.c",
|
|
"toys/posix/cat.c",
|
|
"toys/posix/chmod.c",
|
|
"toys/posix/cmp.c",
|
|
"toys/posix/comm.c",
|
|
"toys/posix/cp.c",
|
|
"toys/posix/cpio.c",
|
|
"toys/posix/cut.c",
|
|
"toys/posix/date.c",
|
|
"toys/posix/dirname.c",
|
|
"toys/posix/du.c",
|
|
"toys/posix/echo.c",
|
|
"toys/posix/env.c",
|
|
"toys/posix/find.c",
|
|
"toys/posix/getconf.c",
|
|
"toys/posix/grep.c",
|
|
"toys/posix/head.c",
|
|
"toys/posix/id.c",
|
|
"toys/posix/ln.c",
|
|
"toys/posix/ls.c",
|
|
"toys/posix/mkdir.c",
|
|
"toys/posix/nl.c",
|
|
"toys/posix/od.c",
|
|
"toys/posix/paste.c",
|
|
"toys/posix/patch.c",
|
|
"toys/posix/printf.c",
|
|
"toys/posix/pwd.c",
|
|
"toys/posix/rm.c",
|
|
"toys/posix/rmdir.c",
|
|
"toys/posix/sed.c",
|
|
"toys/posix/sleep.c",
|
|
"toys/posix/sort.c",
|
|
"toys/posix/tail.c",
|
|
"toys/posix/tar.c",
|
|
"toys/posix/tee.c",
|
|
"toys/posix/test.c",
|
|
"toys/posix/touch.c",
|
|
"toys/posix/true.c",
|
|
"toys/posix/uname.c",
|
|
"toys/posix/uniq.c",
|
|
"toys/posix/wc.c",
|
|
"toys/posix/xargs.c",
|
|
]
|
|
|
|
linux_srcs = [
|
|
"toys/posix/ps.c",
|
|
"toys/other/taskset.c",
|
|
]
|
|
|
|
device_srcs = [
|
|
"toys/android/getenforce.c",
|
|
"toys/android/load_policy.c",
|
|
"toys/android/log.c",
|
|
"toys/android/restorecon.c",
|
|
"toys/android/runcon.c",
|
|
"toys/android/sendevent.c",
|
|
"toys/android/setenforce.c",
|
|
"toys/lsb/dmesg.c",
|
|
"toys/lsb/killall.c",
|
|
"toys/lsb/mknod.c",
|
|
"toys/lsb/mount.c",
|
|
"toys/lsb/pidof.c",
|
|
"toys/lsb/sync.c",
|
|
"toys/lsb/umount.c",
|
|
"toys/net/ifconfig.c",
|
|
"toys/net/netcat.c",
|
|
"toys/net/netstat.c",
|
|
"toys/net/ping.c",
|
|
"toys/net/rfkill.c",
|
|
"toys/net/tunctl.c",
|
|
"toys/other/acpi.c",
|
|
"toys/other/base64.c",
|
|
"toys/other/blkdiscard.c",
|
|
"toys/other/blkid.c",
|
|
"toys/other/blockdev.c",
|
|
"toys/other/chcon.c",
|
|
"toys/other/chroot.c",
|
|
"toys/other/chrt.c",
|
|
"toys/other/clear.c",
|
|
"toys/other/devmem.c",
|
|
"toys/other/fallocate.c",
|
|
"toys/other/flock.c",
|
|
"toys/other/fmt.c",
|
|
"toys/other/free.c",
|
|
"toys/other/freeramdisk.c",
|
|
"toys/other/fsfreeze.c",
|
|
"toys/other/fsync.c",
|
|
"toys/other/help.c",
|
|
"toys/other/hwclock.c",
|
|
"toys/other/i2ctools.c",
|
|
"toys/other/inotifyd.c",
|
|
"toys/other/insmod.c",
|
|
"toys/other/ionice.c",
|
|
"toys/other/losetup.c",
|
|
"toys/other/lsattr.c",
|
|
"toys/other/lsmod.c",
|
|
"toys/other/lspci.c",
|
|
"toys/other/lsusb.c",
|
|
"toys/other/makedevs.c",
|
|
"toys/other/mkswap.c",
|
|
"toys/other/modinfo.c",
|
|
"toys/other/mountpoint.c",
|
|
"toys/other/nbd_client.c",
|
|
"toys/other/nsenter.c",
|
|
"toys/other/partprobe.c",
|
|
"toys/other/pivot_root.c",
|
|
"toys/other/pmap.c",
|
|
"toys/other/printenv.c",
|
|
"toys/other/pwdx.c",
|
|
"toys/other/rev.c",
|
|
"toys/other/rmmod.c",
|
|
"toys/other/rtcwake.c",
|
|
"toys/other/setfattr.c",
|
|
"toys/other/swapoff.c",
|
|
"toys/other/swapon.c",
|
|
"toys/other/sysctl.c",
|
|
"toys/other/tac.c",
|
|
"toys/other/uptime.c",
|
|
"toys/other/usleep.c",
|
|
"toys/other/uuidgen.c",
|
|
"toys/other/vconfig.c",
|
|
"toys/other/vmstat.c",
|
|
"toys/other/watch.c",
|
|
"toys/pending/getfattr.c",
|
|
"toys/pending/lsof.c",
|
|
"toys/pending/modprobe.c",
|
|
"toys/pending/more.c",
|
|
"toys/pending/readelf.c",
|
|
"toys/pending/stty.c",
|
|
"toys/pending/traceroute.c",
|
|
"toys/pending/vi.c",
|
|
"toys/posix/cal.c",
|
|
"toys/posix/chgrp.c",
|
|
"toys/posix/cksum.c",
|
|
"toys/posix/df.c",
|
|
"toys/posix/expand.c",
|
|
"toys/posix/false.c",
|
|
"toys/posix/file.c",
|
|
"toys/posix/iconv.c",
|
|
"toys/posix/kill.c",
|
|
"toys/posix/mkfifo.c",
|
|
"toys/posix/nice.c",
|
|
"toys/posix/nohup.c",
|
|
"toys/posix/renice.c",
|
|
"toys/posix/split.c",
|
|
"toys/posix/strings.c",
|
|
"toys/posix/time.c",
|
|
"toys/posix/tty.c",
|
|
"toys/posix/ulimit.c",
|
|
"toys/posix/unlink.c",
|
|
"toys/posix/uudecode.c",
|
|
"toys/posix/uuencode.c",
|
|
]
|
|
|
|
toybox_symlinks = [
|
|
"[",
|
|
"acpi",
|
|
"base64",
|
|
"basename",
|
|
"blockdev",
|
|
"cal",
|
|
"cat",
|
|
"chattr",
|
|
"chcon",
|
|
"chgrp",
|
|
"chmod",
|
|
"chown",
|
|
"chroot",
|
|
"chrt",
|
|
"cksum",
|
|
"clear",
|
|
"comm",
|
|
"cmp",
|
|
"cp",
|
|
"cpio",
|
|
"cut",
|
|
"date",
|
|
"dd",
|
|
"devmem",
|
|
"df",
|
|
"diff",
|
|
"dirname",
|
|
"dmesg",
|
|
"dos2unix",
|
|
"du",
|
|
"echo",
|
|
"egrep",
|
|
"env",
|
|
"expand",
|
|
"expr",
|
|
"fallocate",
|
|
"false",
|
|
"fgrep",
|
|
"file",
|
|
"find",
|
|
"flock",
|
|
"fmt",
|
|
"free",
|
|
"fsync",
|
|
"getconf",
|
|
"getenforce",
|
|
"grep",
|
|
"groups",
|
|
"gunzip",
|
|
"gzip",
|
|
"head",
|
|
"hostname",
|
|
"hwclock",
|
|
"i2cdetect",
|
|
"i2cdump",
|
|
"i2cget",
|
|
"i2cset",
|
|
"iconv",
|
|
"id",
|
|
"ifconfig",
|
|
"inotifyd",
|
|
"insmod",
|
|
"install",
|
|
"ionice",
|
|
"iorenice",
|
|
"kill",
|
|
"killall",
|
|
"load_policy",
|
|
"ln",
|
|
"log",
|
|
"logname",
|
|
"losetup",
|
|
"ls",
|
|
"lsattr",
|
|
"lsmod",
|
|
"lsof",
|
|
"lspci",
|
|
"lsusb",
|
|
"md5sum",
|
|
"mkdir",
|
|
"mkfifo",
|
|
"mknod",
|
|
"mkswap",
|
|
"mktemp",
|
|
"microcom",
|
|
"modinfo",
|
|
"more",
|
|
"mount",
|
|
"mountpoint",
|
|
"mv",
|
|
"nc",
|
|
"netcat",
|
|
"netstat",
|
|
"nice",
|
|
"nl",
|
|
"nohup",
|
|
"nproc",
|
|
"nsenter",
|
|
"od",
|
|
"paste",
|
|
"patch",
|
|
"pgrep",
|
|
"pidof",
|
|
"pkill",
|
|
"pmap",
|
|
"printenv",
|
|
"printf",
|
|
"ps",
|
|
"pwd",
|
|
"readelf",
|
|
"readlink",
|
|
"realpath",
|
|
"renice",
|
|
"restorecon",
|
|
"rm",
|
|
"rmdir",
|
|
"rmmod",
|
|
"rtcwake",
|
|
"runcon",
|
|
"sed",
|
|
"sendevent",
|
|
"seq",
|
|
"setenforce",
|
|
"setsid",
|
|
"sha1sum",
|
|
"sha224sum",
|
|
"sha256sum",
|
|
"sha384sum",
|
|
"sha512sum",
|
|
"sleep",
|
|
"sort",
|
|
"split",
|
|
"stat",
|
|
"strings",
|
|
"stty",
|
|
"swapoff",
|
|
"swapon",
|
|
"sync",
|
|
"sysctl",
|
|
"tac",
|
|
"tail",
|
|
"tar",
|
|
"taskset",
|
|
"tee",
|
|
"test",
|
|
"time",
|
|
"timeout",
|
|
"top",
|
|
"touch",
|
|
"tr",
|
|
"true",
|
|
"truncate",
|
|
"tty",
|
|
"ulimit",
|
|
"umount",
|
|
"uname",
|
|
"uniq",
|
|
"unix2dos",
|
|
"unlink",
|
|
"unshare",
|
|
"uptime",
|
|
"usleep",
|
|
"uudecode",
|
|
"uuencode",
|
|
"uuidgen",
|
|
"vmstat",
|
|
"watch",
|
|
"wc",
|
|
"which",
|
|
"whoami",
|
|
"xargs",
|
|
"xxd",
|
|
"yes",
|
|
"zcat",
|
|
]
|
|
|
|
cc_defaults {
|
|
name: "toybox-defaults",
|
|
srcs: all_srcs,
|
|
|
|
cflags: [
|
|
"-Os",
|
|
"-Wall",
|
|
"-Werror",
|
|
"-Wno-char-subscripts",
|
|
"-Wno-deprecated-declarations",
|
|
"-Wno-missing-field-initializers",
|
|
"-Wno-pointer-arith",
|
|
"-Wno-sign-compare",
|
|
"-Wno-string-plus-int",
|
|
"-Wno-unused-parameter",
|
|
"-Wno-unused-variable",
|
|
"-funsigned-char",
|
|
"-ffunction-sections",
|
|
"-fdata-sections",
|
|
"-fno-asynchronous-unwind-tables",
|
|
"-DTOYBOX_VENDOR=\"-android\"",
|
|
],
|
|
|
|
target: {
|
|
linux_glibc: {
|
|
local_include_dirs: ["android/linux"],
|
|
},
|
|
|
|
linux_bionic: {
|
|
local_include_dirs: ["android/linux"],
|
|
},
|
|
|
|
darwin: {
|
|
local_include_dirs: ["android/mac"],
|
|
cflags: [
|
|
// You can't have toybox cp(1) on macOS before 10.13.
|
|
"-mmacosx-version-min=10.13",
|
|
"-UMACOSX_DEPLOYMENT_TARGET",
|
|
"-DMACOSX_DEPLOYMENT_TARGET=10.13",
|
|
// macOS' getgroups(3) signature differs.
|
|
"-Wno-pointer-sign",
|
|
// diff.c defines MIN and MAX which (only on macOS) we're
|
|
// also getting from <sys/param.h>.
|
|
"-Wno-macro-redefined",
|
|
],
|
|
},
|
|
|
|
linux: {
|
|
srcs: linux_srcs,
|
|
},
|
|
|
|
android: {
|
|
local_include_dirs: ["android/device"],
|
|
srcs: device_srcs,
|
|
},
|
|
},
|
|
}
|
|
|
|
//###########################################
|
|
// toybox for /system, /vendor, and /recovery
|
|
//###########################################
|
|
|
|
cc_defaults {
|
|
name: "toybox-shared-defaults",
|
|
defaults: ["toybox-defaults"],
|
|
|
|
// This doesn't actually prevent us from dragging in libc++ at runtime
|
|
// on the device because libnetd_client.so is C++, but it improves host
|
|
// startup time.
|
|
stl: "none",
|
|
|
|
shared_libs: [
|
|
"libcrypto",
|
|
"libz",
|
|
],
|
|
|
|
target: {
|
|
android: {
|
|
shared_libs: [
|
|
"liblog",
|
|
"libprocessgroup",
|
|
"libselinux",
|
|
],
|
|
symlinks: toybox_symlinks,
|
|
},
|
|
},
|
|
}
|
|
|
|
cc_binary {
|
|
name: "toybox",
|
|
defaults: ["toybox-shared-defaults"],
|
|
host_supported: true,
|
|
recovery_available: true,
|
|
vendor_ramdisk_available: true,
|
|
}
|
|
|
|
cc_binary {
|
|
name: "toybox_vendor",
|
|
defaults: ["toybox-shared-defaults"],
|
|
vendor: true,
|
|
}
|
|
|
|
//###########################################
|
|
// Static toybox binaries for legacy devices
|
|
//###########################################
|
|
|
|
cc_binary {
|
|
name: "toybox-static",
|
|
defaults: ["toybox-defaults"],
|
|
static_executable: true,
|
|
compile_multilib: "both",
|
|
multilib: {
|
|
lib32: { suffix: "32", },
|
|
lib64: { suffix: "64", },
|
|
},
|
|
stl: "libc++_static",
|
|
static_libs: [
|
|
"libc",
|
|
"libm",
|
|
"libz",
|
|
"libbase",
|
|
"libcgrouprc",
|
|
"libcgrouprc_format",
|
|
"libcrypto_static",
|
|
"liblog",
|
|
"libprocessgroup",
|
|
"libselinux",
|
|
],
|
|
dist: {
|
|
targets: [
|
|
"sdk",
|
|
],
|
|
},
|
|
}
|
|
|
|
//###########################################
|
|
// Running the toybox tests
|
|
//###########################################
|
|
|
|
sh_test {
|
|
name: "toybox-tests",
|
|
src: "run-tests-on-android.sh",
|
|
filename: "run-tests-on-android.sh",
|
|
test_suites: ["general-tests"],
|
|
host_supported: true,
|
|
device_supported: false,
|
|
require_root:true,
|
|
data: [
|
|
"tests/**/*",
|
|
"scripts/runtest.sh",
|
|
],
|
|
}
|