Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Argentino Roca Unix Utilities
=============================

Nationalist and complete set of Unix Utilities

ARUU is a unified fork of sbase and ubase, it is an effort trying to
complete SBASE & UBASE., new utils partially based on toybox have
been added, specifically, the utils under cmd/net are partially based
on their toybox applet equivalent.

The codebase has diverged a lot since the project started. And we have
a myriad of utilities which were written specifically for ARUU.
We also have greatly simplified ports of components from other systems
and projects, such as FreeBSD sh, minix yap (pager (thanks shrub)),
onetrueawk, etc.

OVERVIEW
========

aruu builds two things:

  1. individual tool binaries (default 'make all')
  2. aruu-box: a multi-call binary containing every tool ('make box')

The multi-call binary is built by ninqu's box group (BOX_OBJ, BOX_DISPATCH,
and BOX in ninqu.rules). Each enabled tool gets objcopied so only its
renamed main stays global, scripts/genbox.sh turns the resulting object
paths into a C dispatch table, and everything links into one binary.
Invoke tools by symlinking aruu-box to the tool name, or by running:

    aruu-box <command> [args...]

To install symlinks into a directory:

    aruu-box -i /usr/local/bin

REQUIREMENTS
============

  cc       POSIX.1-2008-compliant C compiler (pcc, etc)
  make     POSIX make (aruu make, pdpmake, gmake, bmake)
  ar       archive tool
  ranlib   archive indexer
  objcopy  for 'make box' only

Optional:

  yacc     only needed if rebuilding bc from bc.y

HOW THE BUILD WORKS
====================

make builds cmd/dev/ninqu/ninqu, then forwards whatever target you
gave it (make all, make box, make clean, ...) straight to that binary.

ninqu reads ninqu.rules, which pulls in scripts/mk/config.set. That
file is generated by scripts/genconfig.sh, which reads build.cfg,
resolves every preset and per-tool override, and writes config.set
(read by ninqu), config.kv (shell-sourced by genbox.sh), and
scripts/mk/features.h (the resolved FEATURE_* set, pulled into every
compile with -include).

To change what gets built, or see what a preset turns on or off,
edit or read build.cfg. That is the one file genconfig.sh expands
from, everything downstream of it is generated and safe to delete.

BUILDING
========

Build all individual tools:

    make

Build the multi-call binary:

    make box

Both targets can be combined:

    make all box

Configuration is in build.cfg. You can override compile flags via make
or with ninqu's -D flag (see HOW THE BUILD WORKS above).

INSTALL
=======

    make install           installs individual tools to $(PREFIX)/bin
    aruu-box -i /usr/bin   installs symlinks for the box binary

SOURCE LAYOUT
=============

    Makefile          builds cmd/dev/ninqu/ninqu, forwards to it
    ninqu.rules       all real build knowledge, read by ninqu
    build.cfg         presets and per-tool overrides
    scripts/
      genconfig.sh    build.cfg -> config.set/config.kv/features.h
      genbox.sh       writes aruu-box's dispatch table
      getconf.sh      generates cmd/posix/getconf.h at build time
      mkbox           legacy, superseded by ninqu's box group
    shared/
      *.h             project headers (util.h, arg.h, utf.h, ...)
      libutil/        utility library (eprintf, ealloc, recurse, ...)
      libutf/         UTF-8/rune library
    cmd/
      posix/          POSIX.1-2008 tools (sh, make, grep, sed, pax, ...)
      linux/          Linux-specific tools (mount, dmesg, insmod, ...)
      net/            networking tools (wget, ip, ping, nc, ...)
      pseudo/         widely-used non-POSIX tools (tar, stat, seq, ...)
      xsi/            XSI-extension tools (mknod, su, passwd)
      extra/          third-party-flavored extras (yap, b3sum, fdisk, ...)
      dev/            small toolchain tooling (ninqu, in the future: as, cc, ld, ar)

      See PRESET_UTILS in build.cfg to understand, en/dis/able the build of a set

TOOLS
=====

posix:
	[, awk, basename, bc, cal, cat, chgrp, chmod, chown, cksum, cmp, comm,
	cp, cut, date, dd, df, diff, dirname, du, echo, ed, env, expand, expr,
	false, find, fold, getconf, grep, head, id, join, kill, link, ln,
	logger, logname, ls, make, mesg, mkdir, mkfifo, mv, nice, nl, nohup,
	od, paste, patch, pathchk, pax, printf, ps, pwd, readlink, renice, rm,
	rmdir, sed, sh, sleep, sort, split, tail, tee, test, time, touch, tr,
	true, tsort, tty, uname, unexpand, uniq, unlink, uudecode, uuencode,
	wc, who, xargs

linux:
	blkdiscard, chvt, ctrlaltdel, depmod, eject, freeramdisk, fsfreeze,
	hwclock, insmod, lsmod, lsusb, mkswap, modprobe, mount, mountpoint,
	pivot_root, readahead, rmmod, swaplabel, swapoff, swapon, switch_root,
	sysctl, tunctl, umount, unshare, vtallow

net:
	host, httpd, ifconfig, ip, netcat, ping, sdhcp, tftp, wget

pseudo:
	base64, chroot, clear, cols, cron, diff3, dmesg, fallocate, flock,
	free, getty, halt, hostname, install, killall5, last, lastlog, login,
	md5sum, mkpasswd, mktemp, nologin, pagesize, pidof, printenv, pwdx,
	respawn, rev, seq, setsid, sha1sum, sha224sum, sha256sum, sha384sum,
	sha512-224sum, sha512-256sum, sha512sum, sponge, stat, tar, truncate,
	uptime, watch, which, whoami, xinstall, yes

xsi:
	mknod, passwd, su

extra:
	b3sum, blkid, fdisk, lsblk, sync, yap

TODOs / PENDING RELEASE
=======================
init - vendor cowmonk's
troff - neatroff? create cmd/9?
man - unsure, this is not a fun task
vendor and publish my compiler toolchain (small binutils + cproc), even if incomplete - unsure

LICENSE
=======

ISC, see ./LICENSE for details. Credits:
Copyright (C) 2006, 2019 Rob Landley [rob@landley.net](mailto:rob@landley.net)
Copyright (c) 2011 Connor Lane Smith [cls@lubutu.com](mailto:cls@lubutu.com)
Copyright (c) 2011-2016 Dimitris Papastamos [sin@2f30.org](mailto:sin@2f30.org)
Copyright (c) 2011 Hiltjo Posthuma [hiltjo@codemadness.org](mailto:hiltjo@codemadness.org)
Copyright (c) 2011 Kamil Cholewiński [harry666t@gmail.com](mailto:harry666t@gmail.com)
Copyright (c) 2011 pancake [pancake@youterm.com](mailto:pancake@youterm.com)
Copyright (c) 2011 Random832 [random832@fastmail.us](mailto:random832@fastmail.us)
Copyright (c) 2011 Rob Pilling [robpilling@gmail.com](mailto:robpilling@gmail.com)
Copyright (c) 2012 Christoph Lohmann [20h@r-36.net](mailto:20h@r-36.net)
Copyright (c) 2012 David Galos [galosd83@students.rowan.edu](mailto:galosd83@students.rowan.edu)
Copyright (c) 2012 Kurt H. Maier [khm@sciops.net](mailto:khm@sciops.net)
Copyright (c) 2012 Robert Ransom [rransom.8774@gmail.com](mailto:rransom.8774@gmail.com)
Copyright (c) 2012 William Haddon [william@haddonthethird.net](mailto:william@haddonthethird.net)
Copyright (c) 2013 Anselm R Garbe [anselm@garbe.us](mailto:anselm@garbe.us)
Copyright (c) 2013 Christian Hesse [mail@eworm.de](mailto:mail@eworm.de)
Copyright (c) 2013 David Galos [galosd83@students.rowan.edu](mailto:galosd83@students.rowan.edu)
Copyright (c) 2013-2016 Dimitris Papapastamos [sin@2f30.org](mailto:sin@2f30.org)
Copyright (c) 2013 dsp [dsp@2f30.org](mailto:dsp@2f30.org)
Copyright (c) 2013 Federico G. Benavento [benavento@gmail.com](mailto:benavento@gmail.com)
Copyright (c) 2013 Jakob Kramer [jakob.kramer@gmx.de](mailto:jakob.kramer@gmx.de)
Copyright (c) 2013 Jesse Ogle [jesse.p.ogle@gmail.com](mailto:jesse.p.ogle@gmail.com)
Copyright (c) 2013 Lorenzo Cogotti [miciamail@hotmail.it](mailto:miciamail@hotmail.it)
Copyright (c) 2013 Markus Teich [markus.teich@stusta.mhn.de](mailto:markus.teich@stusta.mhn.de)
Copyright (c) 2013 Markus Wichmann [nullplan@gmx.net](mailto:nullplan@gmx.net)
Copyright (c) 2013 oblique [psyberbits@gmail.com](mailto:psyberbits@gmail.com)
Copyright (c) 2013 Roberto E. Vargas Caballero [k0ga@shike2.com](mailto:k0ga@shike2.com)
Copyright (c) 2013 s-p-k [mr.dwts@gmail.com](mailto:mr.dwts@gmail.com)
Copyright (c) 2013 Truls Becken [truls.becken@gmail.com](mailto:truls.becken@gmail.com)
Copyright (c) 2014 Adria Garriga [rhaps0dy@installgentoo.com](mailto:rhaps0dy@installgentoo.com)
Copyright (c) 2014 Ari Malinen [ari.malinen@gmail.com](mailto:ari.malinen@gmail.com)
Copyright (c) 2014 Brandon Mulcahy [brandon@jangler.info](mailto:brandon@jangler.info)
Copyright (c) 2014 Carlos J. Torres [vlaadbrain@gmail.com](mailto:vlaadbrain@gmail.com)
Copyright (c) 2014 Daniel Bainton [dpb@driftaway.org](mailto:dpb@driftaway.org)
Copyright (c) 2014 Evan Gates [evan.gates@gmail.com](mailto:evan.gates@gmail.com)
Copyright (c) 2014-2015 Greg Reagle [greg.reagle@umbc.edu](mailto:greg.reagle@umbc.edu)
Copyright (c) 2014-2016 Hiltjo Posthuma [hiltjo@codemadness.org](mailto:hiltjo@codemadness.org)
Copyright (c) 2014 Jan Tatje [jan@jnt.io](mailto:jan@jnt.io)
Copyright (c) 2014 Jeffrey Picard [jeff@jeffreypicard.com](mailto:jeff@jeffreypicard.com)
Copyright (c) 2014-2016 Laslo Hunhold [dev@frign.de](mailto:dev@frign.de)
Copyright (c) 2014 Michael Forney [mforney@mforney.org](mailto:mforney@mforney.org)
Copyright (c) 2014 Roberto E. Vargas Caballero [k0ga@shike2.com](mailto:k0ga@shike2.com)
Copyright (c) 2014 Silvan Jegen [s.jegen@gmail.com](mailto:s.jegen@gmail.com)
Copyright (c) 2014 Tuukka Kataja [stuge@xor.fi](mailto:stuge@xor.fi)
Copyright (c) 2015 Dionysis Grigoropoulos [info@erethon.com](mailto:info@erethon.com)
Copyright (c) 2015 Quentin Rameau [quinq@fifth.space](mailto:quinq@fifth.space)
Copyright (c) 2015 Risto Salminen [ripejcp@gmail.com](mailto:ripejcp@gmail.com)
Copyright (c) 2015 Tai Chi Minh Ralph Eastwood [tcmreastwood@gmail.com](mailto:tcmreastwood@gmail.com)
Copyright (c) 2015 Wolfgang Corcoran-Mathe [wcm@sigwinch.xyz](mailto:wcm@sigwinch.xyz)
Copyright (c) 2016 Eivind Uggedal [eivind@uggedal.com](mailto:eivind@uggedal.com)
Copyright (c) 2016 Mattias Andrée [m@maandree.se](mailto:m@maandree.se)
Copyright (c) 2026 xplshn [anto@xplshn.com.ar](mailto:anto@xplshn.com.ar) (https://github.com/xplshn)

Portions of this software (specifically utils under net/) are partially based on code written by Rob Landley
Our line editing library is partially based on work by Salvatore Sanfilippo (linenoise) and JC Wang (crossline)
The rest are based on SBASE/UBASE source code

=~= Argentino Roca Unix Utilities =~= https://github.com/xplshn/aruu =~=

About

Actual replacement for Busybox (177 utilities) | cmd/{posix, xsi, net, pseudo, extra, linux} | POSIX2024 sh, awk, pager(yap), ed, make implementation

Topics

Resources

Stars

Watchers

Forks

Releases

Contributors

Languages