Skip to content
dagss edited this page Apr 1, 2012 · 13 revisions

Build Artifact Cache

bac is a command-line tool written in Python that is responsible for managing the build artifact cache directory. The most important aspect of BAC is what it does not do, but leave as the responsibility of the caller.

BAC is a tool which is only used by package management systems (or a package developer during debugging).

The BAC store

The BAC store is a directory structure on disk that looks roughly like this:

$bacstore/sources/python-2.7.1.tar.gz  # cached downloaded tarball
$bacstore/sources/numpy.git           # raw git repository
$bacstore/sources/...
$bacstore/sources/links/hKUWhBuneltGSN4s0N-LMOpG27Q -> ../python-2.7.1.tar.gz # lookup by hash

$bacstore/builds/python-hvfkN-qlp-zhXR3cuerq6jd2Z7g/bin/python # already produces builds
$bacstore/builds/...

$backstore/tmp/numpy-6dcfXufJLW3J6S-9rRe4vUlBj5g/.... # build in progress or failed

The BAC command-line program

::
bac fetch /path/to/bacstore http://python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2

Downloads a tarball to the store, and prints the hash for it to standard output. Then that tarball can be looked up by that hash in the future.

bac build /path/to/bacstore mybuild.json

Attempts to do a specific build, as specified by the mybuild.json build specification file. The build specification file is described below.

bac debug /path/to/bacstore mybuild.json

Like build, but only goes through setting up the environment for the build, then echoes the commands that it would have executed had a build been requested, then drops into a shell.

More commands that should be the responsibility of BAC:

  • Garbage collection

Clone this wiki locally