2011-01-13 15:04:56 +00:00
|
|
|
rebar
|
|
|
|
=====
|
|
|
|
|
2011-01-13 15:07:16 +00:00
|
|
|
rebar is an Erlang build tool that makes it easy to compile and
|
2011-01-13 15:04:56 +00:00
|
|
|
test Erlang applications, port drivers and releases.
|
|
|
|
|
2012-06-27 16:18:23 +00:00
|
|
|
[![Build Status](https://secure.travis-ci.org/basho/rebar.png?branch=master)](http://travis-ci.org/basho/rebar)
|
|
|
|
|
2011-01-13 15:07:16 +00:00
|
|
|
rebar is a self-contained Erlang script, so it's easy to distribute or even
|
|
|
|
embed directly in a project. Where possible, rebar uses standard Erlang/OTP
|
|
|
|
conventions for project structures, thus minimizing the amount of build
|
|
|
|
configuration work. rebar also provides dependency management, enabling
|
|
|
|
application writers to easily re-use common libraries from a variety of
|
2011-01-13 15:04:56 +00:00
|
|
|
locations (git, hg, etc).
|
|
|
|
|
|
|
|
Building
|
|
|
|
--------
|
|
|
|
|
2012-01-01 15:29:02 +00:00
|
|
|
Information on building and installing [Erlang/OTP](http://www.erlang.org)
|
|
|
|
can be found [here](https://github.com/erlang/otp/wiki/Installation)
|
|
|
|
([more info](https://github.com/erlang/otp/blob/master/INSTALL.md)).
|
2011-01-13 15:04:56 +00:00
|
|
|
|
|
|
|
### Dependencies
|
|
|
|
|
|
|
|
To build rebar you will need a working installation of Erlang R13B03 (or
|
|
|
|
later).
|
|
|
|
|
|
|
|
Should you want to clone the rebar repository, you will also require git.
|
|
|
|
|
|
|
|
#### Downloading
|
|
|
|
|
2012-06-04 14:22:11 +00:00
|
|
|
You can download a pre-built binary version of rebar from:
|
2011-01-13 15:04:56 +00:00
|
|
|
|
2012-06-04 14:22:11 +00:00
|
|
|
https://github.com/basho/rebar/wiki/rebar
|
2011-01-13 15:04:56 +00:00
|
|
|
|
|
|
|
#### Building rebar
|
|
|
|
|
2011-05-21 10:52:53 +00:00
|
|
|
```sh
|
2012-06-04 14:22:11 +00:00
|
|
|
$ git clone git://github.com/basho/rebar.git
|
2011-05-21 10:52:53 +00:00
|
|
|
$ cd rebar
|
|
|
|
$ ./bootstrap
|
|
|
|
Recompile: src/getopt
|
|
|
|
...
|
|
|
|
Recompile: src/rebar_utils
|
|
|
|
==> rebar (compile)
|
|
|
|
Congratulations! You now have a self-contained script called "rebar" in
|
|
|
|
your current working directory. Place this script anywhere in your path
|
|
|
|
and you can use rebar to build OTP-compliant apps.
|
|
|
|
```
|
2011-01-13 15:04:56 +00:00
|
|
|
|
|
|
|
|
|
|
|
Contributing to rebar
|
|
|
|
=====================
|
|
|
|
|
2011-05-21 07:59:20 +00:00
|
|
|
Pull requests and branching
|
|
|
|
---------------------------
|
|
|
|
|
|
|
|
Use one topic branch per pull request.
|
|
|
|
|
|
|
|
Do not commit to master in your fork.
|
|
|
|
|
|
|
|
Provide a clean branch without any merge commits from upstream.
|
|
|
|
|
2011-05-21 10:42:39 +00:00
|
|
|
Usually you should squash any intermediate commits into the original single commit.
|
2011-05-21 07:59:20 +00:00
|
|
|
|
|
|
|
Code style
|
|
|
|
----------
|
2011-01-15 09:20:35 +00:00
|
|
|
|
2011-01-17 11:03:30 +00:00
|
|
|
Do not introduce trailing whitespace.
|
|
|
|
|
2011-05-21 07:59:20 +00:00
|
|
|
Do not mix spaces and tabs.
|
|
|
|
|
2011-01-17 11:03:30 +00:00
|
|
|
Do not introduce lines longer than 80 characters.
|
2011-01-15 09:20:35 +00:00
|
|
|
|
2011-05-21 07:59:20 +00:00
|
|
|
[erlang-mode (emacs)](http://www.erlang.org/doc/man/erlang.el.html) indentation is preferred.
|
2012-07-01 20:56:07 +00:00
|
|
|
vi-only users are encouraged to
|
|
|
|
give [Vim emulation](http://emacswiki.org/emacs/Evil) ([more info](https://gitorious.org/evil/pages/Home)) a try.
|
2011-05-21 07:59:20 +00:00
|
|
|
|
2011-01-13 15:04:56 +00:00
|
|
|
Writing Commit Messages
|
|
|
|
-----------------------
|
|
|
|
|
2011-01-14 17:31:41 +00:00
|
|
|
Structure your commit message like this:
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
One line summary (less than 50 characters)
|
|
|
|
|
2011-01-13 15:04:56 +00:00
|
|
|
Longer description (wrap at 72 characters)
|
2011-01-14 17:31:41 +00:00
|
|
|
</pre>
|
2011-01-13 15:04:56 +00:00
|
|
|
|
|
|
|
### Summary
|
|
|
|
|
|
|
|
* Less than 50 characters
|
|
|
|
* What was changed
|
|
|
|
* Imperative present tense (fix, add, change)
|
2011-05-21 10:52:53 +00:00
|
|
|
* `Fix bug 123`
|
|
|
|
* `Add 'foobar' command`
|
|
|
|
* `Change default timeout to 123`
|
2011-01-13 15:04:56 +00:00
|
|
|
* No period
|
|
|
|
|
|
|
|
### Description
|
|
|
|
|
|
|
|
* Wrap at 72 characters
|
|
|
|
* Why, explain intention and implementation approach
|
|
|
|
* Present tense
|
|
|
|
|
|
|
|
### Atomicity
|
|
|
|
|
|
|
|
* Break up logical changes
|
|
|
|
* Make whitespace changes separately
|
2011-01-13 15:26:14 +00:00
|
|
|
|
2012-07-01 20:56:07 +00:00
|
|
|
Run checks
|
|
|
|
----------
|
2011-01-13 15:26:14 +00:00
|
|
|
|
2012-07-01 20:56:07 +00:00
|
|
|
Before you submit a patch, run ``make check`` to execute
|
|
|
|
the test suite and check for
|
2012-01-01 15:29:02 +00:00
|
|
|
[xref](http://www.erlang.org/doc/man/xref.html) and
|
|
|
|
[Dialyzer](http://www.erlang.org/doc/man/dialyzer.html)
|
2012-07-02 11:45:13 +00:00
|
|
|
warnings. You may have to run ``make clean`` first.
|
2012-01-01 15:29:02 +00:00
|
|
|
|
|
|
|
[Dialyzer](http://www.erlang.org/doc/man/dialyzer.html) warnings are compared
|
2012-07-01 20:56:07 +00:00
|
|
|
against a set of safe-to-ignore warnings found in
|
|
|
|
[dialyzer_reference](https://raw.github.com/basho/rebar/master/dialyzer_reference).
|
2012-06-30 18:46:13 +00:00
|
|
|
[xref](http://www.erlang.org/doc/man/xref.html) is run with
|
|
|
|
[custom queries](https://raw.github.com/basho/rebar/master/rebar.config)
|
|
|
|
to suppress safe-to-ignore warnings.
|
2011-01-13 17:38:50 +00:00
|
|
|
|
2011-01-13 15:26:14 +00:00
|
|
|
It is **strongly recommended** to check the code with
|
2012-07-01 20:56:07 +00:00
|
|
|
[Tidier](http://tidier.softlab.ntua.gr:20000/tidier/getstarted).
|
|
|
|
Select all transformation
|
|
|
|
options and enable **automatic** transformation. If Tidier suggests a transformation,
|
|
|
|
apply the changes **manually** to the source code. Do not use the code from
|
|
|
|
the
|
|
|
|
tarball (*out.tgz*) as it will have white-space changes applied by Erlang's pretty-printer.
|
2012-07-24 18:15:07 +00:00
|
|
|
|
|
|
|
Community and Resources
|
|
|
|
-----------------------
|
|
|
|
|
2012-07-24 18:39:08 +00:00
|
|
|
In case of problems that cannot be solved through documentation or examples, you may
|
|
|
|
want to try to contact members of the community for help. The community is also where
|
|
|
|
you want to go for questions about how to extend rebar, fill in bug reports, and so on.
|
2012-07-24 18:15:07 +00:00
|
|
|
|
2012-07-24 18:39:08 +00:00
|
|
|
The main place to go for questions is the [rebar mailing list](http://lists.basho.com/pipermail/rebar_lists.basho.com/). If you need quick feedback,
|
|
|
|
you can try the #rebar channel on [irc.freenode.net](http://freenode.net). Be sure to check the [wiki](https://github.com/basho/rebar/wiki) first,
|
|
|
|
just to be sure you're not asking about things with well known answers.
|
2012-07-24 18:15:07 +00:00
|
|
|
|
|
|
|
For bug reports, roadmaps, and issues, visit the [github issues page](https://github.com/basho/rebar/issues).
|
|
|
|
|
|
|
|
General rebar community resources and links:
|
|
|
|
|
|
|
|
- [Rebar Mailing List](http://lists.basho.com/pipermail/rebar_lists.basho.com/)
|
|
|
|
- #rebar on [irc.freenode.net](http://freenode.net/)
|
|
|
|
- [wiki](https://github.com/basho/rebar/wiki)
|
|
|
|
- [issues](https://github.com/basho/rebar/issues)
|