_ _
| | | |
| |__ __ _ _ __| |__ _ __ __ _
| '_ \ / _` | '__| '_ \| '__/ _` |
| |_) | (_| | | | |_) | | | (_| |
|_.__/ \__,_|_| |_.__/|_| \__,_|
a simple package manager for OCaml
barbra is a simple command line tool, which knows how to fetch, build
and install you project's dependencies.
Note: barbra was inspired by rebar
-- a similar project, written by Erlang community.
barbra uses a single file -- brb.conf, which lists all external
tools and libraries your project depends upon. So step one is
to create brb.conf. Here's an example of a simple brb.conf
file:
Version "0.2"
Dep lwt remote "http://ocsigen.org/download/lwt-2.3.2.tar.gz"
Flag "--disable-extra"
Flag "--disable-preemptive"
Build "make build"
- The first non-empty line should always be version spec, which
tells
barbrathat this config is up to date withVersion "0.2"syntax. - All config keywords are case insensitive, so we could as well use
versiOn "0.2"for the first line. - Each dependency starts with a
Depblock, which takes three arguments:- package name: lwt (in the example above)
- source type: remote, full table of suppored source types is given below
- source location: a quoted URI of the package you want installed
- You can also specify extra
configureflags, custom build or installation commands. - Dependencies will be built in the order, defined by their
Requiressection; all dependencies, not defined inbrb.confexplicitly, will be resolved as recipes (see bellow).
Once you're done with brb.conf, run brb build from the top
directory of you project -- this will fetch all listed dependencies,
build them and then build your project in an isolated barbra
environment with installed dependencies:
$ brb build
I: Fetching http://ocsigen.org/download/lwt-2.3.2.tar.gz to ...| Type | Description |
|-----------------+-------------------------------------------------------------|
| remote | Package will be fetched with curl or wget and then |
| | unpacked with an appropriate archiver. |
| | |
|-----------------+-------------------------------------------------------------|
| local | Package will be unpacked from local file system (*location* |
| | is absolute path to the archive). |
|-----------------+-------------------------------------------------------------|
| local-dir | Package will be copied from local file system, from the |
| | directory, specified in *location*. |
|-----------------+-------------------------------------------------------------|
| bzr, cvs, darcs | Packaged will be cloned or checked out from the repository |
| git, hg, svn | by its *location*; which might as well point to he local |
| | repository. |
|-----------------+-------------------------------------------------------------|
| recipe | Package will be fetched a recipe repository, identified by |
| | *location* (ex: "default"). |
Starting from version "0.2", barbra has support for recipes
(somewhat similar to el-get
and homebrew).
-
A recipe is just a single
Depblock in a separate file, for example:$ ls $HOME/.brb/recipes textile $ cat $HOME/.brb/recipes/textile Dep textile darcs "http://komar.bitcheese.net/darcs/textile-ocaml" Build "make all"
-
A recipe repository is a directory with one or more recipes; it can be added to search path with
Repositorystatement:# v -- "default" repository is allways present. Repository "$HOME/.brb/recipes" "default" # v -- this is a custom repository. Repository "/path/to/repository" "custom-repository" -
To use a recipe, write a
Depblock with recipe type; note, that all subfields, likeBuild,InstallorFlagwill be merged with recipe defaults.Dep textile recipe "default" Build "make all"
barbra is currently under active development and this 'README' is
the only documentation up to date; however, you can try:
- reading example
brb.conf
or the output of
brb --help, - asking for help on the IRC channel
#ocamlon Freenode (nickname:superbobry) or, if you speak Russian, on[email protected].