sbase - suckless unix tools =========================== sbase is a collection of unix tools that are inherently portable across UNIX and UNIX-like systems. The following programs are currently implemented: +---------+-----------+--------+ |UTILITY |POSIX |FEATURES| | |CONFORMANCE|MISSING | +---------+-----------+--------+ |basename | | | +---------+-----------+--------+ |cal | | | +---------+-----------+--------+ |cat | | | +---------+-----------+--------+ |chgrp | | | +---------+-----------+--------+ |chmod | | | +---------+-----------+--------+ |chown | | | +---------+-----------+--------+ |chroot | | | +---------+-----------+--------+ |cksum | | | +---------+-----------+--------+ |cmp | | | +---------+-----------+--------+ |col | | | +---------+-----------+--------+ |cols | | | +---------+-----------+--------+ |comm | | | +---------+-----------+--------+ |cp | | | +---------+-----------+--------+ |csplit | | | +---------+-----------+--------+ |cut | | | +---------+-----------+--------+ |date | | | +---------+-----------+--------+ |dirname | | | +---------+-----------+--------+ |du | | | +---------+-----------+--------+ |echo | | | +---------+-----------+--------+ |env | | | +---------+-----------+--------+ |expand | | | +---------+-----------+--------+ |expr | | | +---------+-----------+--------+ |false | | | +---------+-----------+--------+ |fold | | | +---------+-----------+--------+ |grep | | | +---------+-----------+--------+ |head | | | +---------+-----------+--------+ |hostname | | | +---------+-----------+--------+ |kill | | | +---------+-----------+--------+ |link | | | +---------+-----------+--------+ |ln | | | +---------+-----------+--------+ |logname | | | +---------+-----------+--------+ |ls | | | +---------+-----------+--------+ |md5sum | | | +---------+-----------+--------+ |mkdir | | | +---------+-----------+--------+ |mkfifo | | | +---------+-----------+--------+ |mktemp | | | +---------+-----------+--------+ |mv | | | +---------+-----------+--------+ |nice | | | +---------+-----------+--------+ |nl | | | +---------+-----------+--------+ |nohup | | | +---------+-----------+--------+ |paste | | | +---------+-----------+--------+ |printenv | | | +---------+-----------+--------+ |printf | | | +---------+-----------+--------+ |pwd | | | +---------+-----------+--------+ |readlink | | | +---------+-----------+--------+ |renice | | | +---------+-----------+--------+ |rm | | | +---------+-----------+--------+ |rmdir | | | +---------+-----------+--------+ |sleep | | | +---------+-----------+--------+ |setsid | | | +---------+-----------+--------+ |sort | | | +---------+-----------+--------+ |split | | | +---------+-----------+--------+ |sponge | | | +---------+-----------+--------+ |strings | | | +---------+-----------+--------+ |sync | | | +---------+-----------+--------+ |tail | | | +---------+-----------+--------+ |tar | | | +---------+-----------+--------+ |tee | | | +---------+-----------+--------+ |test | | | +---------+-----------+--------+ |touch | | | +---------+-----------+--------+ |tr | | | +---------+-----------+--------+ |true | | | +---------+-----------+--------+ |tty | | | +---------+-----------+--------+ |uudecode | | | +---------+-----------+--------+ |uuencode | | | +---------+-----------+--------+ |uname | | | +---------+-----------+--------+ |unexpand | | | +---------+-----------+--------+ |uniq | | | +---------+-----------+--------+ |unlink | | | +---------+-----------+--------+ |seq | | | +---------+-----------+--------+ |sha1sum | | | +---------+-----------+--------+ |sha256sum| | | +---------+-----------+--------+ |sha512sum| | | +---------+-----------+--------+ |wc | | | +---------+-----------+--------+ |xargs | | | +---------+-----------+--------+ |yes | | | +---------+-----------+--------+ The complement of sbase is ubase[1] which is Linux-specific and provides all the non-portable tools. Together they are intended to form a base system similar to busybox but much smaller and suckless. Building -------- You need GNU make to build sbase. To build sbase, simply type make. You may have to fiddle with config.mk depending on your system. You can also build sbase-box, which generates a single binary containing all the required tools. You can then symlink the individual tools to sbase-box. Ideally you will want to statically link sbase. If you are on Linux we recommend using musl-libc[2]. Portability ----------- sbase has been compiled on a variety of different operating systems, including Linux, *BSD, OSX, Haiku, Solaris, SCO OpenServer and others. sbase also compiles and runs on minix3 with slight modifications. They do not provide mmap()/munmap() so you need to use minix_mmap() and minix_munmap() respectively. Various combinations of operating systems and architectures have also been built. You can build sbase with gcc, clang, tcc, nwcc and pcc. [1] http://git.suckless.org/ubase/ [2] http://www.musl-libc.org/