rebar is an Erlang build tool that makes it easy to compile and test Erlang/OTP applications
rebar is now a single human-readable escript (Erlang script), so it's easy to distribute or even embed directly in a project. 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 reuse common libraries from a variety of locations (git, hg, etc).
This repository is a fork of the historical rebar2 repository
(https://github.com/rebar/rebar using the tag 2.1.0-pre
).
This repository exists to provide a more dependable rebar2 release
that can work with any Erlang/OTP release while avoiding complexity.
The reasons rebar2 is still being used instead of
rebar3 are:
- rebar3 has many dependencies that are not static, so it represents a very large amount of source code with security risks (due to forcing the use of remote dependencies)
- rebar3 is focused on usage with dependencies as remote packages, not filesystem dependencies
- rebar3 was not created with autoconf/automake use considered (including the concept of keeping srcdir separate from builddir)
- rebar3 was never meant to remain compatible with rebar2 use
This fork of rebar2 has removed historical functionality that was known to be unused, unreliable or misleading to focus on the compilation and testing of Erlang/OTP source code. The differences with the historical rebar2 are listed below:
rebar_port_compiler.erl
source code was removed (use a separate build tool for C/C++, OCaml, Rust, etc.)rebar_escripter.erl
source code was removed (to avoid the creation of opaque binary blobs bound to a small range of Erlang/OTP releases and the related execution failures)rebar_qc.erl
source code was removed (using PropEr in CT use is simpler)rebar_xref.erl
source code was removed (dialyzer use catches more problems)rebar_shell.erl
source code was removed (use a shell separate from rebar execution)rebar_reltool.erl
source code was removed (use therelease
escript in reltool_util for this functionality)rebar_appups.erl
andrebar_upgrade.erl
source code was removedrebar_asn1_compiler.erl
source code was removedrebar_abnfc_compiler.erl
source code was removedrebar_lfe_compiler.erl
source code was removed (uselfec
instead)rebar_neotoma_compiler.erl
source code was removedrebar_protobuffs_compiler.erl
source code was removedrebar_templater.erl
andrebar_erlydtl_compiler.erl
source code was removedrebar.config
plugins
module functionality was removed$HOME/.rebar/config
is not loaded--long
command-line arguments are not accepted to avoid--long=value
or--long value
ambiguity-f (--force)
,-D
,-p (--profile)
,-k (--keep-going)
command-line arguments were removed
You will need a working installation of Erlang/OTP R13B03 (or later). Information on building and installing Erlang/OTP can be found here.
Do not introduce trailing whitespace.
Do not mix spaces and tabs.
Do not introduce lines longer than 80 characters.
Structure your commit message like this:
One line summary (less than 50 characters) Longer description (wrap at 72 characters)
Less Than 50 Characters Subject
- What was changed
- Imperative present tense (fix, add, change)
Fix bug 123
Add 'foobar' command
Change default timeout to 123
- Why, explain intention and implementation approach
- No period
- Break up logical changes that are unrelated
- Make whitespace changes separately