Commit graph

649 commits

Author SHA1 Message Date
Tuncer Ayaz
9c1a877bbe Remove gratuitous blank line 2012-04-17 19:15:47 +02:00
Ulf Wiger
c3c64c1d70 Fix file:script support 2012-04-17 00:14:33 +02:00
Tuncer Ayaz
7c418ed2b4 Add support for target-specific port options
{port_specs, [{".*", "priv/foo.so", ["c_src/foo.c"], [{env, []}]}]}.
2012-04-16 23:17:24 +02:00
Ulf Wiger
b3e9e76f57 Use file:script if a .config.script file present 2012-04-16 22:44:48 +02:00
Tuncer Ayaz
fc83f4b961 Apply Tidier suggestion 2012-04-16 22:09:20 +02:00
Tuncer Ayaz
aeb3081111 Update getopt.erl 2012-04-16 18:02:48 +02:00
Tuncer Ayaz
0e7defaf64 Fix typo in comment (thanks Michael Santos) 2012-04-16 17:42:48 +02:00
Tuncer Ayaz
7864b81e2d Update getopt.erl 2012-04-09 14:36:05 +02:00
Tuncer Ayaz
ae178b851b Fix #209 (Reported-by: Bjorn Bylander)
Use correct ERL_LIBS separator on Windows.
2012-04-04 17:44:36 +02:00
Tuncer Ayaz
4a9dae76a4 Fix #197 by printing 'Entering/Leaving directory' 2012-04-03 20:54:34 +02:00
Amit Kapoor
63f1b1d9d5 Use lists:member/2 to check xref results 2012-04-02 19:14:37 +02:00
Amit Kapoor
0191806f92 Add support for custom xref queries
The custom queries are configured in rebar.config via the tuple
{xref_queries, [{query(), query_result()},...]}.  The implementation
passes the query() string to xref:q and compares the return value with
query_result(). It will result in an error if they do not match.

The following configuration, for example, is the same as running the
xref check undefined_function_calls. It additionally filters
ejabberd_logger:*_msg/4 from the result as these functions are generated
on execution by ejabberd and not available at compile time.

{xref_queries, [{"(XC - UC) || (XU - X - B -
                 (\"ejabberd_logger\":\".*_msg\"/\"4\"))",[]}]}.

This patch also modifies the build process of this package by running a
custom query instead of doing a diff against a static xref_warning file.
2012-04-02 19:14:37 +02:00
Tuncer Ayaz
7bd8cbd8d9 Make error message more descriptive 2012-03-31 19:21:41 +02:00
Adam Schepis
03a026f38f Add support for alternate dependency urls
This change adds the ability to use alternate urls for downloading
dependencies. To make use of alternate urls run:
rebar get-deps alt_urls=true
2012-03-31 19:21:25 +02:00
Ali Yakout
e0d9ca0773 asn1_compiler: only move hrl file if it exists 2012-03-30 16:58:07 +02:00
Tuncer Ayaz
3f14c1c092 Skip erlang:halt/1 workaround if >=R15B01 2012-03-27 14:19:54 +02:00
Tuncer Ayaz
b6fadef5d3 Fix whitespace errors 2012-03-18 18:51:08 +01:00
Loïc Hoguin
2c37270f52 Fix badarg crashes on missing dependency errors 2012-03-18 18:46:04 +01:00
Tuncer Ayaz
9d5557b16f Deprecate port_envs in favor of port_env 2012-03-09 20:21:26 +01:00
Юрин Вячеслав
0424d75d78 Make rebar understand wildcard in subdir
If you have dir with many erlang app, then you can simple write
{sub_dirs, ["some_dir/*"]}. Rebar will make operation on subdirs of
dir "some_dir".
2012-03-09 19:38:34 +01:00
Tuncer Ayaz
4e0c9506f5 Fix src_dirs option to not hard-code "src" 2012-02-24 18:06:52 +01:00
Jesse Gumm
33546cc402 Fix copying dir to non-existing dir in Win32 2012-02-20 19:23:35 +01:00
Jesse Gumm
4f6f41cabb Fix typos in rebar_templater 2012-02-17 12:41:34 +01:00
Tuncer Ayaz
da122b3e57 Add rebar_utils:delayed_halt/1 2012-02-16 19:17:58 +01:00
Phil Toland
8b486055e4 Fix compiling DTL templates with latest erlydtl
The latest version of erlydtl requires that custom tag modules be in
the path when templates are compiled. Without this change rebar silently
exits when using the custom_tags_modules option.
2012-02-16 11:40:57 +01:00
Jeremy Raymond
7e84634b8f Fix for destruction of config app vars on reset 2012-02-15 21:11:57 +01:00
Tuncer Ayaz
1a613d6123 Remove debug log 2012-02-12 18:43:40 +01:00
Tuncer Ayaz
b48cc0c7eb Fix regression in port_compiler needs_link check 2012-02-10 23:02:53 +01:00
Shunichi Shinohara
ebb2345071 Treat callback attributes same as behaviour_info
Automatically include modules with callback attributes in
erl_first_files.
2012-02-10 10:26:16 +01:00
Tuncer Ayaz
1c1a32b8ba Use lists:flatmap/2 2012-02-07 20:11:50 +01:00
Yurin Slava
5a640a92fd Remove unused include_lib directive 2012-02-04 11:28:12 +01:00
Tuncer Ayaz
b7fb2aeec6 Fix loading of local plugins in sub directories 2012-02-03 17:37:41 +01:00
Tuncer Ayaz
6898eff2c7 Rework port compiler support
* consolidate options
 * add support for building executables
2012-02-03 16:26:14 +01:00
Tuncer Ayaz
ba538094ba Extend rebar_utils:deprecated 2012-02-03 10:17:58 +01:00
Tuncer Ayaz
a176db6937 Fix Dialyzer (race condition) warning 2012-02-02 22:54:40 +01:00
Yurii Rashkovskii
fe1652e137 Cache vsn info to avoid expensive vcs cmd calls 2012-02-02 21:54:15 +01:00
Tuncer Ayaz
b6f3a76694 Imported new mustache.erl 2012-01-31 21:12:59 +01:00
Tuncer Ayaz
440fa6bd31 Only print sh/2 options on debug log level 2012-01-29 17:55:30 +01:00
Tuncer Ayaz
194f3caa3f Fix -D and -v handling with new getopt.erl 2012-01-29 17:48:55 +01:00
Tuncer Ayaz
c4e40714ee Import fixed upstream getopt.erl 2012-01-29 17:45:03 +01:00
Tuncer Ayaz
2a5320fbd6 Document verbosity level 2012-01-17 17:04:07 +01:00
Tuncer Ayaz
2cae2950c4 Fix whitespace errors 2012-01-17 17:04:07 +01:00
Tuncer Ayaz
e6caab00d5 Use ?ERROR where appropriate 2012-01-17 17:04:07 +01:00
Tuncer Ayaz
015e58201c Support different log levels 2012-01-17 17:04:07 +01:00
Tuncer Ayaz
263b49f970 Import new upstream getopt.erl 2012-01-17 17:04:07 +01:00
Tuncer Ayaz
ee44d8554a Fix whitespace errors 2012-01-17 17:04:07 +01:00
Francis Joanis
b498e86ef7 Delete existing erl files in ?EUNIT_DIR
Before copying the .erl files to the .eunit directory ensure that they
are deleted if they already exist. This prevents EACCES errors to happen
when trying to re-copy .erl files that are read-only.
2012-01-17 16:54:27 +01:00
Tuncer Ayaz
41d6abc64d Fix whitespace errors 2012-01-13 19:56:10 +01:00
Tuncer Ayaz
5b15c851d8 Check for .app.src first 2012-01-13 19:39:28 +01:00
Tuncer Ayaz
eab5ae5298 Fix code clarity in dir type check 2012-01-13 19:00:44 +01:00
Tuncer Ayaz
0689928527 Warn if we ignore a skip_dir's sub_dirs 2012-01-13 18:25:02 +01:00
Tuncer Ayaz
cab1671ea0 Add missing newline for logging code path update 2012-01-13 18:18:51 +01:00
Tuncer Ayaz
45555eb6ae Ignore sub_dirs in skip_dirs 2012-01-10 11:24:09 +01:00
Tuncer Ayaz
87669b6b7f Clean up rebar_utils 2012-01-10 11:15:55 +01:00
Tuncer Ayaz
4d2d3c3af3 Remove port_first_files support 2012-01-09 13:05:23 +01:00
Tuncer Ayaz
2be2f2bfe7 Fix whitespace errors 2012-01-09 12:43:09 +01:00
Tuncer Ayaz
4e471e6986 Fix Dialyzer warning 2012-01-09 12:42:53 +01:00
Matt Campbell
c15d99d8bb On windows, avoid symlink during upgrade
a) make_symlink throws "not supported" on OS < Vista (e.g. 2003)
b) tarball creation stores windows symlinks as absolute paths
   instead of relative, causing service to fail to start after upgrade
   is made permanent.
2012-01-09 12:33:39 +01:00
Magnus Klaar
4db90bafef Deprecate ct suite= option for suites= option 2012-01-06 20:40:46 +01:00
Tuncer Ayaz
1daa15293a Reverse order in rebar_utils:get_deprecated_global/3 2012-01-06 19:50:20 +01:00
Tuncer Ayaz
27e5a0ae5b Cleanup and simplify deprecated option handling 2012-01-01 15:10:35 +01:00
Tomas Abrahamsson
c8f56c7cb2 Don't kill any inet_gethost_native after eunit
Avoid error reports like this one:

  prompt$ rebar eunit
  ==> dummy (eunit)
    Test passed.

  =ERROR REPORT==== 29-Dec-2011::23:22:11 ===
  ** Generic server inet_gethost_native_sup terminating
  ** Last message in was {'EXIT',<0.62.0>,killed}
  ** When Server state == {state,inet_gethost_native,undefined,<0.62.0>,
                                 {local,inet_gethost_native_sup}}
  ** Reason for termination ==
  ** killed

Previously, it could happen if an eunit test did something that
required a name lookup, like in this example:

  -module(dummy_tests).
  -include_lib("eunit/include/eunit.hrl").

  x_test() ->
      {ok, _Hostent} = inet:gethostbyname(localhost).

The inet_gethost_native is a process, started on demand, under a
supervisor_bridge under the kernel_sup, but it is not a gen_server
process or the like, so it has nothing in '$ancestors' in its process
dictionary to indicate it is part of kernel.
2011-12-29 23:38:03 +01:00
Ali Sabil
f47d61bc13 Add {vsn, _} support for reltool.config 2011-12-28 13:18:40 +01:00
Tuncer Ayaz
1de48e4902 Move vcs_vsn/2 to rebar_utils 2011-12-28 13:09:46 +01:00
Tim Watson
286a2a88a4 Add support for customising common test directory
This patch allows users to specify the directory in which common_test
source files can be found. Most common_test suites are integration,
rather than unit tests and keeping the sources apart from test sources
for other frameworks such as eunit and PropEr is a useful feature.
2011-12-28 12:41:36 +01:00
Tuncer Ayaz
e4c85d4548 Remove trailing whitespace in rebar_reltool 2011-12-19 19:17:42 +01:00
Tuncer Ayaz
7c327c1195 Fix rebar_core crash (reported-by: Jeremy Raymond) 2011-12-18 13:29:58 +01:00
Tuncer Ayaz
58101588a1 Fix help text formatting 2011-12-16 21:04:18 +01:00
Tuncer Ayaz
8c89a388bf Universally support apps=/skip_apps= 2011-12-12 21:20:34 +01:00
Tuncer Ayaz
a5e39c2c54 Move is_skipped_app/0 to rebar_app_utils 2011-12-12 17:53:56 +01:00
Tuncer Ayaz
b1d84514f0 Add rebar_utils:deprecated/4 and remove define 2011-12-12 17:52:04 +01:00
Tuncer Ayaz
e33d3a568f rebar_xref: move code to proper place 2011-12-12 17:09:03 +01:00
Torbjorn Tornkvist
b4f136d752 Make 'rebar xref' honour the skip_app directive
It is now possible to call rebar as:

  rebar xref skip_app=Mod1,Mod2,...

This makes it easy to skip running xref on (e.g)
imported dependencies in your application.

The function rebar_utils:is_skipped_app/0 is added so
that other rebar commands may use it.
2011-12-12 17:06:23 +01:00
Jesse Gumm
9f31ceae00 Fail if erl_interface not found
Previously if erl_interface could not be found {error, not_found} was
incorrectly used as a path. With this change we fail early with a
descriptive error message.
2011-12-08 20:12:16 +01:00
Tuncer Ayaz
8de2c84d89 Add support for arch-specific hooks
{pre_hooks,  [{"linux", compile, "c_src/build_linux.sh"}]}.
{post_hooks, [{"linux", compile, "c_src/build_linux.sh clean"}]}.
2011-12-05 14:17:18 +01:00
Tim Watson
0e3e94c253 Add support for first_files to port compiler
This patch adds support for first_files to the port_compiler, via the
new `port_first_files` rebar config element.
2011-11-30 19:39:23 +01:00
Tuncer Ayaz
a6fdac99a4 Fix and refactor reltool root_dir lookup 2011-11-26 12:01:13 +01:00
Tuncer Ayaz
ab79534507 Limit line length 2011-11-26 11:36:26 +01:00
smithwinston
1eaf88d1d0 Add root_dir option to reltool.config
When generating a node using rebar generate, rebar always used
code:root_dir() to find the Erlang installation to clone into the node
tree.  However, for anyone wishing to build a cross-compiled node, there
was no way to override this.  This patch adds a new option to
reltool.config file to allow an alternate root_dir to be specified, for
example:

{root_dir, "/tmp/otp_R14B03_armv7l"}

This assumes that the contents of /tmp/otp_R14B03_armv7l has been
generated using the instructions found in the xcomp directory in your
$ERL_TOP structure.  NOTE: you may have to add additional filters to
exclude files not present in the xcomp version, such as the .smp files
if you have disabled that.
2011-11-26 10:38:27 +01:00
Bob Ippolito
a54dd53673 Treat HEAD as a branch to fix regressions caused by 3ef7db5 2011-11-16 21:46:18 +01:00
Tuncer Ayaz
147d5e3b56 Remove gratuitous space in debug log 2011-11-09 22:56:54 +01:00
Tuncer Ayaz
e62ea1994c Remove gratuitous prefix in error log 2011-11-08 16:04:27 +01:00
Tuncer Ayaz
d2cf35ad02 Remove obsolete comments (thanks Tim Watson) 2011-11-04 18:53:36 +01:00
Klas Johansson
896e8505b2 Stop applications before killing extra processes
This means that applications get a chance to shut down themselves,
before rebar will start killing their processes.  This avoids ERROR
REPORTS from application supervisors.
2011-11-02 20:08:24 +01:00
Jan Kloetzke
b10224be62 Fix rebar_utils:expand_env_variable/3
The function may fail with a badarg exception because the first regex
returns an iolist() which is allowed to be a improper list. In this case
'++' cannot append to the iolist. The correct way to append something to
an iolist() is

  [iolist(), "tail"]

because iolist's are allowed to be arbitrarily deep lists.
2011-11-01 22:00:15 +01:00
Tuncer Ayaz
9197e70bd7 Fix formatting 2011-10-26 23:23:46 +02:00
Tuncer Ayaz
c373f29292 Fix comments and formatting 2011-10-26 23:16:36 +02:00
Dave Smith
17616d1078 Overhaul environment expansion for better performance
The introduction of setup_env as a global concept caused the rebar_port_compiler
implementation to start getting called a LOT. The expansion of environment variables
that happens in the port compiler was O(n^n), which means you could see upwards of
80k invocations of lists:foldl on a single app "./rebar clean". This commit reworks
the expansion to be O(n^2), and reduces the running time for the same operation by
60%+. On a large project like Riak, the end result is that a build went from 200
seconds to 73.
2011-10-26 23:16:36 +02:00
Dave Smith
1c1620a244 When profiling, save analysis results to disk 2011-10-25 23:58:53 -06:00
Dave Smith
45fc18f990 Add support for -p flag to profile rebar run 2011-10-25 13:33:40 -06:00
Tuncer Ayaz
28b9cebf0a Add -D support to rebar_port_compiler 2011-10-23 01:12:54 +02:00
Tuncer Ayaz
8eeca123e5 Cleanup and fix -D for erl_opts 2011-10-23 01:12:54 +02:00
Tuncer Ayaz
a0dcc624d9 Add -D option 2011-10-22 21:03:22 +02:00
Tuncer Ayaz
74ca540939 Use same variable names as file:make_link/2 2011-10-21 17:59:29 +02:00
Przemysław Dąbek
eb23571b8b Add possibility to make symbolic links
Simple feature, useful to make link to something without copying it.
2011-10-20 20:29:16 +02:00
Fabian Linzberger
176ec0e71e Work around functions not found in source
For parameterized modules, the beam code will have a compiler
generated new/1 and instance/1 function.

If while checking the beam, xref detects one of those is unused, the
rebars xref wrapper will try to find the location of the definition of
that function in the source code for the module (to give a more
specific warning to the user). Since the function was generated by the
compiler it does not actually exist in the source, and rebar crashes
at that stage. This patch works around that issue.
2011-10-20 16:37:41 +02:00
Steven Gravell
3c7a5804e9 Add overlay command to run overlays only
required for building on a different machine to what your live
config is kept on. This way you can build on one machine,
distribute to new machine, then run overlays against a live
config to prevent accidently running code against a live
config in a development or ci environment.
2011-10-20 16:33:19 +02:00
Joseph Wayne Norton
4a5114b79f Setup code path prior to calling edoc
Setup code path prior to calling edoc so that edown, asciiedoc,
and the like can work properly when generating their own
documentation.
2011-10-20 16:32:05 +02:00
Tim Watson
86325b616d Allow plugins to participate in pre and post processing
This patch modifies rebar_core to allow plugins to participate in the
pre and post processing steps, giving plugin authors more flexibility
and control.
2011-10-20 16:31:08 +02:00
Jan Klötzke
0ce5cbab06 rebar_file_utils: simplify commands on Windows 2011-10-20 16:27:35 +02:00