Fred Hebert [Fri, 19 Jun 2015 16:14:28 +0000 (12:14 -0400)]
bump to 2.6.0
Fred Hebert [Fri, 19 Jun 2015 16:05:55 +0000 (12:05 -0400)]
Merge pull request #513 from rebar/jem-pr-release-tool
Add pr2relnotes tool to generate release notes
Jared Morrow [Fri, 19 Jun 2015 15:53:17 +0000 (09:53 -0600)]
Add pr2relnotes tool to generate release notes
Fred Hebert [Fri, 19 Jun 2015 14:39:47 +0000 (10:39 -0400)]
Merge pull request #512 from tuncer/fix-rememo-handle_call
rmemo: properly handle unsupported call
Tuncer Ayaz [Fri, 19 Jun 2015 14:38:36 +0000 (16:38 +0200)]
rmemo: properly handle unsupported call
Fred Hebert [Fri, 19 Jun 2015 14:30:28 +0000 (10:30 -0400)]
Merge pull request #511 from tuncer/memo
Add and use memoization server
Tuncer Ayaz [Fri, 12 Jun 2015 10:56:20 +0000 (12:56 +0200)]
rebar_utils: rename internal function
Tuncer Ayaz [Thu, 11 Jun 2015 20:05:33 +0000 (22:05 +0200)]
rmemo: document rebar-specific modifications
Tuncer Ayaz [Thu, 11 Jun 2015 18:38:43 +0000 (20:38 +0200)]
rmemo: support R13 for rebar only
ets read_concurrency has been available since R14, but rebar supports
R13B03 (and newer). As a workaround we check that erts/ebin/erts.app
exists as another pre-R14 characteristic to determine whether we can
assume read_concurrency is supported.
Tuncer Ayaz [Thu, 11 Jun 2015 18:10:27 +0000 (20:10 +0200)]
Start using memoization server
1. memoize otp release vsn string function call
2. memoize expensive filename:absname/1 call which happens
to be called quite frequently
Tuncer Ayaz [Thu, 11 Jun 2015 18:03:14 +0000 (20:03 +0200)]
Add memoization server
Copy memo.erl from https://github.com/tuncer/memo and rename to
rmemo.erl for use in rebar. We rename it to avoid collisions.
Fred Hebert [Mon, 8 Jun 2015 14:27:47 +0000 (10:27 -0400)]
Merge pull request #510 from tuncer/fix-make-deps
Fix 'make deps'
Tuncer Ayaz [Mon, 8 Jun 2015 14:22:00 +0000 (16:22 +0200)]
Fix 'make deps'
We have to partially revert
f3f8f29920ace62. The reason for not running
"make -C deps/retest" is to avoid a dependency on rebar in $PATH.
While at it, change one ./rebar to $(REBAR).
Fred Hebert [Mon, 8 Jun 2015 13:54:04 +0000 (09:54 -0400)]
Merge pull request #509 from tuncer/dep-open-crash
erlc: do not crash if dep file cannot be found
Tuncer Ayaz [Wed, 3 Jun 2015 19:42:11 +0000 (21:42 +0200)]
erlc: do not crash if dep file cannot be found
Fred Hebert [Sun, 7 Jun 2015 19:19:37 +0000 (15:19 -0400)]
Merge pull request #508 from tuncer/missing-newline
rebar_core: add missing newline in log msg
Tuncer Ayaz [Sun, 7 Jun 2015 18:48:22 +0000 (20:48 +0200)]
rebar_core: add missing newline in log msg
Fred Hebert [Sun, 7 Jun 2015 15:10:26 +0000 (11:10 -0400)]
Merge pull request #504 from fishcakez/plt_name
Drop `shared` PLTs support and change PLT name to <OTP-VSN>.plt
James Fish [Thu, 4 Jun 2015 10:03:44 +0000 (11:03 +0100)]
Drop support for `shared` plt
Fred Hebert [Wed, 3 Jun 2015 18:04:48 +0000 (14:04 -0400)]
Merge pull request #505 from tuncer/pdict-comment
rebar_utils: explain pdict use
Tuncer Ayaz [Wed, 3 Jun 2015 17:58:32 +0000 (19:58 +0200)]
rebar_utils: explain pdict use
Fred Hebert [Tue, 2 Jun 2015 16:35:11 +0000 (12:35 -0400)]
Merge pull request #502 from choptastic/fix_otp_version2
Don't crash if missing OTP_VERSION file (fix #350)
Jesse Gumm [Tue, 2 Jun 2015 02:03:59 +0000 (21:03 -0500)]
Don't crash if missing OTP_VERSION file (fix #350)
Tristan Sloughter [Sat, 30 May 2015 20:30:02 +0000 (15:30 -0500)]
Merge pull request #500 from tuncer/fix-makefile
Makefile: clean only .rebar/erlcinfo
Tuncer Ayaz [Sat, 30 May 2015 20:23:04 +0000 (22:23 +0200)]
Makefile: clean only .rebar/erlcinfo
Do not delete PLT file in .rebar/.
Fred Hebert [Fri, 29 May 2015 11:55:45 +0000 (07:55 -0400)]
Merge pull request #460 from tuncer/dialyzer
Add Dialyzer plugin
Fred Hebert [Fri, 29 May 2015 11:20:23 +0000 (07:20 -0400)]
Merge pull request #499 from aronisstav/otp_version_fix
Try one more location for the OTP_VERSION file
Stavros Aronis [Fri, 29 May 2015 08:57:27 +0000 (10:57 +0200)]
Try one more location for the OTP_VERSION file
If one is building Erlang from sources without making a proper release,
there may be an OTP_VERSION file in the root directory.
Fred Hebert [Wed, 27 May 2015 12:27:15 +0000 (08:27 -0400)]
Merge branch 'RubberCthulhu-ct-groups-and-cases'
Fred Hebert [Wed, 27 May 2015 12:27:09 +0000 (08:27 -0400)]
Merge branch 'ct-groups-and-cases' of https://github.com/RubberCthulhu/rebar into RubberCthulhu-ct-groups-and-cases
Conflicts:
THANKS
Danil Onishchenko [Sun, 5 Apr 2015 12:28:36 +0000 (19:28 +0700)]
Add options 'groups' and 'cases' to 'ct' command
Add option 'groups' to 'rebar ct' command. So the command "rebar ct suites=Suite1 groups=Group1,Group2,...,GroupN" is equal to "ct_run -suite Suite1_SUITE -group Group1 Group2 ... GroupN". It allows to run specified test groups in specified test suite with Common Test tool. Besides it is absolutely necessary to specify groups for running test cases which are included in these groups, otherwise init_per_group/2 and end_per_group/1 callbacks are not called by ct_run.
Add option 'cases' to 'rebar ct' command. So the command "rebar ct suites=Suite1 cases=Case1,Case2,...,CaseN" is equal to "ct_run -suite Suite1_SUITE -case Case1 Case2 ... CaseN". It allows to run one or more test cases in specified test suite. Currently rebar has an option 'case' which allows to run only one test case. The option case is remained for backward compability. It's suggested to consider the option 'case' as deprecaed and recommended to use 'cases' instead.
Updated help messages according to new command line options.
Add warning message when used deprecated options 'case', 'group', 'suite' in command "rebar ct".
Tuncer Ayaz [Fri, 22 May 2015 07:46:56 +0000 (09:46 +0200)]
dialyzer: change plt_location to rebar3 default
To match rebar3, change plt_location's default to 'local'.
Tuncer Ayaz [Tue, 12 May 2015 13:08:21 +0000 (15:08 +0200)]
CONTRIBUTING: update Dialyzer bits
Tuncer Ayaz [Fri, 15 May 2015 09:56:31 +0000 (11:56 +0200)]
dialyzer: nest dialyzer options to match rebar3
{dialyzer,
[
%% Store PLT in ~/.rebar/plt (Default)
{plt_location, shared},
%% Store PLT locally inside the project in .rebar
{plt_location, local},
%% Store PLT in custom directory
{plt_location, "custom_dir"},
%% Extra apps to include in the PLT
{plt_extra_apps, [app1, app2]},
{warnings, [unmatched_returns, error_handling]}
]}.
Tuncer Ayaz [Thu, 9 Apr 2015 22:41:23 +0000 (00:41 +0200)]
Suppress missing calls Dialyzer warnings
James Fish [Sun, 29 Mar 2015 17:49:09 +0000 (18:49 +0100)]
dialyzer: consistent warning formatting
Tuncer Ayaz [Fri, 27 Feb 2015 22:17:24 +0000 (23:17 +0100)]
Add Dialyzer plugin
Build project-specific PLT
$ rebar build-plt
Check the PLT for consistency and rebuild it if it is not up-to-date
$ rebar check-plt
Analyze the code for discrepancies
$ rebar dialyze
Delete project-specific PLT
$ rebar delete-plt
Valid rebar.config options:
%% Store PLT in ~/.rebar/plt (Default)
{dialyzer_plt_location,shared}
%% Store PLT locally inside the project in .rebar
{dialyzer_plt_location,local}
%% Store PLT in custom directory
{dialyzer_plt_location,"custom_path"}
{dialyzer_plt_extra_apps,[app1,app2]}
{dialyzer_warnings,[unmatched_returns,error_handling]}
Tuncer Ayaz [Fri, 15 May 2015 09:56:00 +0000 (11:56 +0200)]
Fix rebar.config.sample formatting
Fred Hebert [Tue, 19 May 2015 12:52:53 +0000 (08:52 -0400)]
Merge pull request #496 from derek121/contributing-dialyzer-2
Update PLT detail for make build_plt
Derek Brown [Tue, 12 May 2015 16:00:27 +0000 (12:00 -0400)]
Update PLT detail for make build_plt
The PLT that rebar will have dialyzer use is now created with make
build_plt - this commit explains that.
Fred Hebert [Tue, 12 May 2015 14:00:59 +0000 (10:00 -0400)]
Merge pull request #273 from cybergrind/appups_fix
Use target_dir as source of new version in generate-appups
Fred Hebert [Tue, 12 May 2015 12:36:33 +0000 (08:36 -0400)]
Merge pull request #494 from derek121/dialyzer-warnings-addition
Update line number of allowed dialyzer error
Fred Hebert [Tue, 12 May 2015 12:36:18 +0000 (08:36 -0400)]
Merge pull request #336 from derek121/contributing-dialyzer
Add details on Dialyzer with "make check"
Derek Brown [Mon, 11 May 2015 21:38:34 +0000 (17:38 -0400)]
Update line number of allowed dialyzer error
Running make check after make debug gives an error due to the
following:
make: [dialyzer_warnings] Error 2 (ignored)
--- dialyzer_reference 2015-05-11 17:21:38.
000000000 -0400
+++ dialyzer_warnings 2015-05-11 17:31:42.
000000000 -0400
@@ -3 +3 @@
-rebar_utils.erl:198: Call to missing or unexported function
escript:foldl/3
+rebar_utils.erl:222: Call to missing or unexported function
escript:foldl/3
Indeed that call to escript:foldl/3 changed from line 198 to 222 via
https://github.com/rebar/rebar/commit/
a04530124ffa16c50205695d35f9274107e2fa42
This update makes the corresponding change to the line number in
dialyzer_reference.
This was noticed while working on
https://github.com/rebar/rebar/pull/336
Derek Brown [Thu, 7 Aug 2014 17:27:12 +0000 (13:27 -0400)]
Add details on Dialyzer with "make check"
If Dialyzer hasn't been used on an account before, there won't be a PLT
file and "make check" will fail. Added info on that fact.
Fred Hebert [Sat, 9 May 2015 18:03:42 +0000 (14:03 -0400)]
Merge branch 'fholzhaut push origin masterser-dia_first_files'
Fred Hebert [Sat, 9 May 2015 18:03:30 +0000 (14:03 -0400)]
Merge branch 'dia_first_files' of https://github.com/fholzhauser/rebar into fholzhauser-dia_first_files
Fred Hebert [Sat, 9 May 2015 18:01:36 +0000 (14:01 -0400)]
Merge branch 'paulo-ferraz-oliveira-fix/xref_behavior'
Fred Hebert [Sat, 9 May 2015 18:01:30 +0000 (14:01 -0400)]
Merge branch 'fix/xref_behavior' of https://github.com/paulo-ferraz-oliveira/rebar into paulo-ferraz-oliveira-fix/xref_behavior
Fred Hebert [Sat, 9 May 2015 13:09:49 +0000 (09:09 -0400)]
Merge branch 'lrascao-feature/add_gpb_proto_error_test_case'
Fred Hebert [Sat, 9 May 2015 13:09:26 +0000 (09:09 -0400)]
Comment typos
Fred Hebert [Sat, 9 May 2015 13:07:43 +0000 (09:07 -0400)]
Merge branch 'feature/add_gpb_proto_error_test_case' of https://github.com/lrascao/rebar into lrascao-feature/add_gpb_proto_error_test_case
Luis Rascao [Fri, 8 May 2015 22:56:16 +0000 (23:56 +0100)]
Fix source file console output of failed build
On a failed build, print an absolute source filename,
if applicable
Luis Rascao [Tue, 5 May 2015 21:59:17 +0000 (22:59 +0100)]
Add proto gpb error test case
A specific bad.proto file will cause the mock gpb compiler
to fail thus improving rebar's coverage of error scenarios
Fred Hebert [Fri, 8 May 2015 13:00:17 +0000 (09:00 -0400)]
Merge pull request #485 from kejv/robust-expand_include_lib_path
avoid pre-compile time errors in expand_include_lib_path
David Kubecka [Sat, 25 Apr 2015 18:59:07 +0000 (20:59 +0200)]
avoid pre-compile time errors in expand_include_lib_path
Previously when user specified broken include_lib, such as
-include_lib("my_app.hrl"), the code throwed too early
exception. We fix this simply by avoiding any possible
internal errors, possibly letting even nonsensical paths pass.
These will be checked and filtered later in expand_file_names/2.
Fred Hebert [Tue, 5 May 2015 12:00:39 +0000 (08:00 -0400)]
Merge pull request #489 from lrascao/fix/crash_on_failed_lfe_build
Fix crash on failed build console output
Luis Rascao [Tue, 5 May 2015 09:58:39 +0000 (10:58 +0100)]
Fix crash on failed build console output
Fred Hebert [Fri, 1 May 2015 20:21:09 +0000 (16:21 -0400)]
Merge pull request #487 from tuncer/whitespace-errors
erlc: fix recently introduced whitespace errors
Tuncer Ayaz [Fri, 1 May 2015 19:57:24 +0000 (21:57 +0200)]
erlc: fix recently introduced whitespace errors
Fred Hebert [Fri, 1 May 2015 01:05:02 +0000 (21:05 -0400)]
Merge pull request #477 from kejv/support-parse-transforms
Enable parse transformations in rebar config
Fred Hebert [Thu, 23 Apr 2015 13:46:33 +0000 (09:46 -0400)]
Merge pull request #484 from carlosedp/master
/me added to THANKS
CarlosEDP [Thu, 23 Apr 2015 13:38:23 +0000 (10:38 -0300)]
/me added to THANKS
Fred Hebert [Wed, 22 Apr 2015 14:21:08 +0000 (10:21 -0400)]
Merge pull request #482 from carlosedp/master
Windows runner - CD to node root
CarlosEDP [Wed, 22 Apr 2015 13:48:58 +0000 (10:48 -0300)]
Windows runner - CD to node root
David Kubecka [Sun, 29 Mar 2015 10:55:38 +0000 (12:55 +0200)]
Fix parse_transform option in rebar.config
Currently this option doesn't work very well because
given parse_transform is applied globally to all modules,
even to parse transform module itself which is not possible
because the module is not yet compiled.
So we just ensure that local parse transformations are not applied
to themselves and probably also to erl_first_files since they
are explicitly stated as to be compiled before anything else.
Fred Hebert [Thu, 16 Apr 2015 15:27:43 +0000 (11:27 -0400)]
Fix commit typo
Fred Hebert [Thu, 16 Apr 2015 15:12:28 +0000 (11:12 -0400)]
Merge pull request #478 from tuncer/fish-warning-fix
bootstrap: better warning fix (Thanks James Fish)
Tuncer Ayaz [Thu, 16 Apr 2015 14:47:26 +0000 (16:47 +0200)]
bootstrap: better warning fix (Thanks James Fish)
As a follow-up to
bad3a795, implement a better fix for the pre-18.0
warning.
erlang:now/0 was deprecated in 18.0, and as the escript has to pass
erl_lint:module/1 (even without -mode(compile)), we would see a
deprecation warning for erlang:now/1. One solution is to use
-compile({nowarn_deprecated_function, [{erlang, now, 0}]}), but that
would raise a warning in versions older than 18.0. Calling erlang:now/0
via apply/3 avoids that.
Fred Hebert [Fri, 10 Apr 2015 14:14:34 +0000 (10:14 -0400)]
Merge pull request #475 from tuncer/otp-18-time
Adapt to 18.x time api changes
Tuncer Ayaz [Wed, 8 Apr 2015 21:08:18 +0000 (23:08 +0200)]
Adapt to 18.x time api changes
Fred Hebert [Tue, 7 Apr 2015 20:33:05 +0000 (16:33 -0400)]
Merge pull request #467 from kejv/support-parse-transforms2
Refactor logic and optimizations in rebar_erlc_compiler:doterl_compile/4
David Kubecka [Sun, 29 Mar 2015 21:17:22 +0000 (23:17 +0200)]
append myself to THANKS
David Kubecka [Sun, 29 Mar 2015 08:10:18 +0000 (10:10 +0200)]
Raise version of erlcinfo
Its format was (repeatedly) changed in previous commits.
David Kubecka [Sat, 4 Apr 2015 23:34:25 +0000 (01:34 +0200)]
Fix error when processing non-existent include_lib file
Since process_attr/3 searches source code for attributes, it can
happen that it finds an attribute which is eventually not needed
by the compilation, e.g. hidden by ifdef macro - see enclosed test.
Such attribute can reference a file which is not in the path or
which even doesn't exist at all, and current code doesn't expect
such a situation. We fix things by simply ignoring such files.
David Kubecka [Tue, 31 Mar 2015 21:36:30 +0000 (23:36 +0200)]
Remove obsolete way of generating target ebin subdirectories
As per @tuncer: "That's most likely a vestige of package module support".
David Kubecka [Sat, 28 Mar 2015 22:37:37 +0000 (23:37 +0100)]
Store also max modified times in erlcinfo
These times already contain max modified info of their
dependencies. Therefore we no longer have to check in
internal_erl_compile whether the file really needs
recompiling, which simplifies the flow somewhat, because
the work with dependency graph is now localized to much
smaller space then before.
David Kubecka [Mon, 23 Mar 2015 19:42:16 +0000 (20:42 +0100)]
Use toposort of erlcinfo to decide the order of compilation
The precise algorithm is now following:
- Decide which files need to be compiled first (ErlFirstFiles).
- Split AllErlFiles which are not in ErlFirstFiles into two groups,
one consisting of files some other file depends on (DepErls)
and the rest (OtherErls).
- Final FirstErls are obtained as ErlFirstFiles (in original order)
plus toposorted DepErls. OtherErls are left as is since they can
be compiled in any (random) order.
Also create the erlcinfo graph as acyclic, since otherwise the
toposort could not work and we don't want to have cycles among
dependencies anyway.
David Kubecka [Mon, 23 Mar 2015 10:17:01 +0000 (11:17 +0100)]
Compress erlcinfo file less agressively
Optimizing for best compression could be very slow for large
projects, so optimize rather for the speed. erlcinfo file
isn't that huge anyway and moreover difference between levels
2 and 9 isn't that big in practice (although there's quite big
difference between level 2 and no compression at all).
David Kubecka [Mon, 23 Mar 2015 03:47:54 +0000 (04:47 +0100)]
Additional minor refactor in erlcinfo
- use filelib:last_modified/1 instead of date/0 and time/0 combo
in source file vertices
- simplify store_erlcinfo/2
- document init_erlcinfo/2
David Kubecka [Wed, 25 Mar 2015 08:57:42 +0000 (09:57 +0100)]
Delete existing out-edges before adding new ones in modify_erlcinfo
When the source file changes it could happen that some of its
dependecies get removed. In that case we should remove these
former dependencies from the graph, so that they don't influence
recompilation of the source file anymore.
David Kubecka [Mon, 23 Mar 2015 03:40:52 +0000 (04:40 +0100)]
Avoid extra list traversal when checking for modified source files
David Kubecka [Mon, 23 Mar 2015 03:10:11 +0000 (04:10 +0100)]
Assemble Dirs passed to update_erlcinfo in one place
Current separation of part of the logic into include_path
obscures the purpose of Dirs (see expand_file_names).
Moreover for each particular Erl its source file was included
twice in Dirs, which is now corrected.
Also InclDirs (specified in erl_opts) as part of erlcinfo
since they can affect resulting graph, which needs to be
therefore regenerated when InclDirs change. See added
test as an example.
David Kubecka [Mon, 23 Mar 2015 02:10:28 +0000 (03:10 +0100)]
Sanitize erlcinfo checking
As erlcinfo is only an internal optimization mechanism, user
should be only minimally bothered by issues with it. Especially
it shouldn't ever cause a fatal error and if it cannot be restored
properly, only a warning (not error) message should be emitted (if
any). Also it probably doesn't make sense for this warning message
to be too detailed - just state that something went wrong and
silently delete the erlcinfo file.
David Kubecka [Sun, 22 Mar 2015 22:03:36 +0000 (23:03 +0100)]
Extract common pattern from rebar_erlc_compiler:process_attr
David Kubecka [Sat, 28 Mar 2015 14:53:06 +0000 (15:53 +0100)]
Stop silently supressing errors from process_attr/2
Otherwise the code cannot be safely refactored, since
potential new erros slip unnoticed.
David Kubecka [Sun, 22 Mar 2015 19:30:41 +0000 (20:30 +0100)]
Stop passing useless Config into erlcinfo_file
Also pas only InclDirs into init_erlcinfo as this is the only
thing from Config/ErlOpts needed there.
David Kubecka [Sat, 28 Mar 2015 11:53:20 +0000 (12:53 +0100)]
Basic test for erlc (re)compiling and erlcinfo
David Kubecka [Mon, 23 Mar 2015 20:19:44 +0000 (21:19 +0100)]
Remove useless compile/3
Its case statement is noop.
David Kubecka [Sat, 28 Mar 2015 11:51:52 +0000 (12:51 +0100)]
Allow running specific retest suites
Fred Hebert [Thu, 2 Apr 2015 22:32:33 +0000 (18:32 -0400)]
Merge pull request #354 from vladdu/compiler_keep_going
compiler respects 'keep_going' flag
Vlad Dumitrescu [Mon, 1 Dec 2014 11:02:06 +0000 (12:02 +0100)]
add tests for 'compiler keep_going'
Vlad Dumitrescu [Wed, 3 Dec 2014 17:18:47 +0000 (18:18 +0100)]
compiler and xref respect 'keep_going' flag
Fred Hebert [Thu, 2 Apr 2015 14:27:11 +0000 (10:27 -0400)]
Merge pull request #471 from tuncer/formatting-fixes-2
Fix whitespace errors
Tuncer Ayaz [Thu, 2 Apr 2015 14:21:20 +0000 (16:21 +0200)]
Fix whitespace errors
Fred Hebert [Thu, 2 Apr 2015 14:14:44 +0000 (10:14 -0400)]
Merge pull request #470 from tuncer/formatting-fixes
Fix whitespace errors
Tuncer Ayaz [Thu, 2 Apr 2015 14:10:31 +0000 (16:10 +0200)]
Fix whitespace errors
Fred Hebert [Thu, 2 Apr 2015 13:43:58 +0000 (09:43 -0400)]
Merge pull request #456 from glyphrider/master
Generate json output from cover
Fred Hebert [Tue, 31 Mar 2015 17:06:14 +0000 (13:06 -0400)]
Merge pull request #469 from tuncer/fix-dialyzer-warnings
Fix dialyzer warnings
Tuncer Ayaz [Tue, 31 Mar 2015 16:03:26 +0000 (18:03 +0200)]
Fix 17.x Dialyzer warnings