Skip to content

A build system, similar to internal industry tooling named after South American countries

License

Notifications You must be signed in to change notification settings

antonsynd/chiri

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chiri (チリ)

Chiri (Japanese for the country "Chile") is a meta-build system, that is designed as a scaffold over existing build systems. It is modeled very loosely after Brazil which is used internally at Amazon.

This is mostly a personal pet project and personal workflow tool. I don't plan to expand its feature set to dependency modeling.

Design

Chiri is a CLI that is invoked via a package-agnostic interface (e.g. build, test, release, install) to invoke the underlying build system for that package (e.g. CMake). A Chiri-compatible package contains two things:

  • build_tools/bin: A directory housing an executable script that invokes the underlying build system. By convention, it is written in Python but does not need to be.
  • chiri_config.json5: A JSON5 config pointing to the executable script mentioned above as an entry point, as well as other config variables.

Dependencies

  • Python 3.8
  • pyjson5

How to install

The CLI must be bootstrapped as a first install.

cd chiri
./bootstrap.sh

Installation is located by default at ~/.chiri. The path to the Chiri CLI must be added to your PATH (ZShell as an example below):

echo 'export PATH="${PATH}:~/.chiri/bin"' >> ~/.zshrc

Afterwards, it can be installed via the CLI itself.

cd chiri
chiri pkg release

How to invoke a package's build CLI

The Chiri CLI's command package (or pkg) reads the working directory's Chiri config and invokes its executable build entry point.

This uses mamba as an example:

cd mamba
chiri pkg build
chiri pkg test