GithubHelp home page GithubHelp logo

jamesodhunt / abox Goto Github PK

View Code? Open in Web Editor NEW
7.0 2.0 0.0 102 KB

Yet another busybox / toybox tool. This one's written in Intel x86-64 64-bit assembly language.

License: Apache License 2.0

GDB 0.17% Makefile 0.96% Assembly 58.16% Meson 5.57% C 14.88% Shell 20.26%
asm assembly busybox cli intel shell toybox utility x86 x86-64

abox's Introduction

abox

Yet another simple busybox / toybox clone. This one is written in Intel 64-bit assembly language (x86_64) for Linux.

Why?

Because I wanted an excuse to write some modern 64-bit Intel assembly language.

Commands

Currently, the following commands are implemented in some form:

$ abox -l | xargs
basename cat clear echo env false head ln pwd rm seq sleep sync touch true yes

Note:

There is no shell currently - I'm working on it! ;)

Dependencies

Tool Implementation Required? Rationale Notes
Intel x86_64 Assembler NASM or YASM yes ;)
C compiler GCC or Clang yes For linking
Build system meson and ninja yes
Make GNU Make no Simplifies building
C unit test framework check no (*) aka libcheck
CLI tests BATS no (*) CLI testing
moreutils package errno command yes Used by abox-util.sh to generate definitions

(*) - The defaults assume these tools are present.

Install dependencies on Fedora like system

$ sudo dnf -y install @development-tools
$ sudo dnf -y install bats check make meson moreutils nasm ninja-build yasm

Install dependencies on Debian / Ubuntu like system

Notes:

  • The version of meson provided by Ubuntu is too old, so you need to install a more recent version using pip.

  • If you want to run the BATS tests, you will need to be running Ubuntu 22.10 or newer to install bats version 1.5.0+. Alternatively, you can install it manually.

$ sudo apt -y install bats build-essential check errno make nasm ninja-build python3-pip yasm
$ python3 -m pip install meson

Usage

Show help information

$ abox
$ abox help
$ abox -h
$ abox --help

Show available commands

$ abox -l
$ abox --list

Run a command

$ abox echo 'Hello from abox!'

Build

Development build

$ make && make test

Release build

$ make RELEASE=1 && make test

Install

FIXME: / TODO:

  • Installing the binary.
  • Creating the sym-links.

abox's People

Contributors

jamesodhunt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

abox's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.