Rebar ver. 2.1.0-pre

Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
This commit is contained in:
Peter Lemenkov 2013-03-02 13:56:21 +04:00
parent 027efcc773
commit ccc495bdd8
16 changed files with 401 additions and 482 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
/basho-rebar-RELEASE-1-327-g90058c7.tar.gz
/basho-rebar-RELEASE-1-821-g635d1a9.tar.gz
/basho-rebar-2.0.0-0-g1c98f6c.tar.gz
/basho-rebar-2.1.0-pre-0-gebb474b.tar.gz

View File

@ -1,19 +1,19 @@
%global realname rebar
%global upstream basho
%global debug_package %{nil}
%global git_tag 1c98f6c
%global git_tag ebb474b
%global patchnumber 0
Name: erlang-%{realname}
Version: 2.0.0
Release: 4%{?dist}
Version: 2.1.0
Release: 0.1%{?dist}
Summary: Erlang Build Tools
Group: Development/Tools
License: MIT
URL: https://github.com/basho/rebar
# wget --content-disposition https://github.com/basho/rebar/tarball/635d1a9
Source0: %{upstream}-%{realname}-%{version}-%{patchnumber}-g%{git_tag}.tar.gz
URL: https://github.com/rebar/rebar
# wget --content-disposition https://github.com/basho/rebar/tarball/ebb474b
Source0: %{upstream}-%{realname}-%{version}-pre-%{patchnumber}-g%{git_tag}.tar.gz
Source1: rebar.escript
# Fedora/EPEL-specific
Patch1: rebar-0001-No-need-to-create-bundle-and-don-t-try-to-load-anyth.patch
@ -21,56 +21,47 @@ Patch1: rebar-0001-No-need-to-create-bundle-and-don-t-try-to-load-anyth.patch
Patch2: rebar-0002-Remove-bundled-mustache.patch
# Fedora/EPEL-specific
Patch3: rebar-0003-Remove-bundled-getopt.patch
# Will be proposed for inclusion
Patch4: rebar-0004-Allow-discarding-building-ports.patch
# R12B - EPEL5-specific
Patch5: rebar-0005-No-erlang-min-2-and-erlang-max-2-in-R12B.patch
# R12B - EPEL5-specific
Patch6: rebar-0006-No-such-function-lists-keyfind-3-in-R12B5-use-lists-.patch
# R12B - EPEL5-specific
Patch7: rebar-0007-No-such-type-dict-in-R12B.patch
# R12B - EPEL5-specific
Patch8: rebar-0008-No-such-directive-opaque-in-R12B.patch
# R12B - EPEL5-specific
Patch9: rebar-0009-No-such-type-boolean-in-R12B.patch
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
# Fedora/EPEL-specific
Patch5: rebar-0005-Check-system-wide-libdir-in-case-of-source-based-dep.patch
# Fedora/EPEL-specific
Patch6: rebar-0006-Remove-any-traces-of-long-time-obsolete-escript-fold.patch
# Fedora/EPEL-specific - unfortunately we don't have abnfc compiler available yet
Patch7: rebar-0007-Remove-abnfc-compiler-support-n-a-in-Fedora-EPEL.patch
# Fedora/EPEL-specific - cosmetic
Patch8: rebar-0008-Adjust-app-version.patch
BuildRequires: erlang-erts
BuildRequires: erlang-getopt
BuildRequires: erlang-erl_interface
%if 0%{?el6}%{?fedora}
# No reltool at all in R12B
BuildRequires: erlang-reltool
%endif
# wip
#Requires: erlang-abnfc
Requires: erlang-asn1
Requires: erlang-compiler
Requires: erlang-crypto
# FIXME wip
#Requires: erlang-abnfc%{?_isa}
Requires: erlang-asn1%{?_isa}
Requires: erlang-compiler%{?_isa}
Requires: erlang-crypto%{?_isa}
# FIXME does it still needed?
Requires: erlang-dialyzer
Requires: erlang-edoc
%if 0%{?el6}%{?fedora}
# No erlydtl in EPEL5 so far
Requires: erlang-erlydtl
%endif
Requires: erlang-erts
Requires: erlang-dialyzer%{?_isa}
Requires: erlang-edoc%{?_isa}
Requires: erlang-erlydtl%{?_isa}
Requires: erlang-erts%{?_isa}
# Requires for port compiling - no direct references in Rebar's src/*.erl files
Requires: erlang-erl_interface
Requires: erlang-eunit
Requires: erlang-getopt
Requires: erlang-kernel
Requires: erlang-lfe
Requires: erlang-mustache
Requires: erlang-neotoma
Requires: erlang-protobuffs
%if 0%{?el6}%{?fedora}
# No reltool at all in R12B
Requires: erlang-reltool
%endif
Requires: erlang-sasl
Requires: erlang-snmp
Requires: erlang-stdlib
Requires: erlang-syntax_tools
Requires: erlang-tools
Requires: erlang-erl_interface%{?_isa}
# Autochecker picks up a missing dependency in R16 - eunit_test:function_wrapper/2.
# This function was remove in R16 and rebar contains a workaround for that so don't worry.
Requires: erlang-eunit%{?_isa}
Requires: erlang-getopt%{?_isa}
Requires: erlang-kernel%{?_isa}
Requires: erlang-lfe%{?_isa}
Requires: erlang-mustache%{?_isa}
Requires: erlang-neotoma%{?_isa}
Requires: erlang-protobuffs%{?_isa}
Requires: erlang-reltool%{?_isa}
Requires: erlang-sasl%{?_isa}
Requires: erlang-snmp%{?_isa}
Requires: erlang-stdlib%{?_isa}
Requires: erlang-syntax_tools%{?_isa}
Requires: erlang-tools%{?_isa}
Provides: %{realname} = %{version}-%{release}
@ -84,27 +75,10 @@ Erlang Build Tools.
%patch2 -p1 -b .remove_bundled_mustache
%patch3 -p1 -b .remove_bundled_getopt
%patch4 -p1 -b .allow_discarding_ports
%if 0%{?el5}
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%endif
# FIXME enable back when erlang-abnfc will be available
rm -f src/rebar_abnfc_compiler.erl
sed -i -e "/rebar_abnfc_compiler/d" ebin/rebar.app
%if 0%{?el5}
# Remove erlydtl support
rm -f src/rebar_erlydtl_compiler.erl
sed -i -e "/rebar_erlydtl_compiler/d" ebin/rebar.app
# Remove reltool support - no reltool at all in the R12B
rm -f src/rebar_reltool.erl
sed -i -e "/rebar_reltool/d" ebin/rebar.app
# Remove templater support - not required just for building anyway
rm -f src/rebar_templater.erl
sed -i -e "/rebar_templater/d" ebin/rebar.app
%endif
%patch5 -p1 -b .use_locally_installed
%patch6 -p1 -b .remove_escript_foldl_3
%patch7 -p1 -b .no_abnfc
%patch8 -p1 -b .adjust_ver
%build
@ -112,28 +86,26 @@ sed -i -e "/rebar_templater/d" ebin/rebar.app
%install
rm -rf $RPM_BUILD_ROOT
install -D -p -m 0755 %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}/rebar
mkdir -p $RPM_BUILD_ROOT%{_libdir}/erlang/lib/%{realname}-%{version}/ebin
mkdir -p $RPM_BUILD_ROOT%{_libdir}/erlang/lib/%{realname}-%{version}/include
install -m 644 ebin/%{realname}.app $RPM_BUILD_ROOT%{_libdir}/erlang/lib/%{realname}-%{version}/ebin
install -m 644 ebin/*.beam $RPM_BUILD_ROOT%{_libdir}/erlang/lib/%{realname}-%{version}/ebin
install -m 644 include/*.hrl $RPM_BUILD_ROOT%{_libdir}/erlang/lib/%{realname}-%{version}/include
cp -a priv $RPM_BUILD_ROOT%{_libdir}/erlang/lib/%{realname}-%{version}/
%clean
rm -rf $RPM_BUILD_ROOT
install -D -p -m 0755 %{SOURCE1} %{buildroot}%{_bindir}/rebar
mkdir -p %{buildroot}%{_libdir}/erlang/lib/%{realname}-%{version}/ebin
mkdir -p %{buildroot}%{_libdir}/erlang/lib/%{realname}-%{version}/include
install -m 644 ebin/%{realname}.app %{buildroot}%{_libdir}/erlang/lib/%{realname}-%{version}/ebin
install -m 644 ebin/*.beam %{buildroot}%{_libdir}/erlang/lib/%{realname}-%{version}/ebin
install -m 644 include/*.hrl %{buildroot}%{_libdir}/erlang/lib/%{realname}-%{version}/include
cp -a priv %{buildroot}%{_libdir}/erlang/lib/%{realname}-%{version}/
%files
%defattr(-,root,root,-)
%doc THANKS rebar.config.sample
%doc LICENSE NOTES.org README.md THANKS rebar.config.sample
%{_bindir}/rebar
%{_libdir}/erlang/lib/%{realname}-%{version}
%changelog
* Sat Mar 02 2013 Peter Lemenkov <lemenkov@gmail.com> - 2.1.0-0.1
- Ver. 2.1.0-pre
- Remove R12B-related patches (EL5-related)
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.0.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild

View File

@ -1,49 +1,29 @@
From 05b31a23c8d70a3867173823478defe029b89c5d Mon Sep 17 00:00:00 2001
From 878bc0156c540ce55f97c3a97afafe8537560f7a Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Tue, 28 Sep 2010 23:04:36 +0400
Subject: [PATCH 1/9] No need to create bundle and don't try to load anything
Subject: [PATCH 1/8] No need to create bundle and don't try to load anything
from escript
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
Conflicts:
bootstrap
src/rebar_templater.erl
---
bootstrap | 40 ----------------------------------------
src/rebar_templater.erl | 30 ++----------------------------
2 files changed, 2 insertions(+), 68 deletions(-)
bootstrap | 16 +---------------
src/rebar_templater.erl | 31 +++++--------------------------
2 files changed, 6 insertions(+), 41 deletions(-)
diff --git a/bootstrap b/bootstrap
index c8a40de..be0523a 100755
index 70d8da1..e777d19 100755
--- a/bootstrap
+++ b/bootstrap
@@ -56,46 +56,6 @@ main(Args) ->
%% Run rebar to do proper .app validation and such
rebar:main(["compile"] ++ Args),
@@ -55,21 +55,7 @@ main(Args) ->
true = code:add_path("ebin"),
- %% Read the contents of the files in ebin and templates; note that we
- %% place all the beam files at the top level of the code archive so
- %% that code loading works properly.
- Files = load_files("*", "ebin") ++ load_files("priv/templates/*", "."),
-
- case zip:create("mem", Files, [memory]) of
- {ok, {"mem", ZipBin}} ->
- %% Archive was successfully created. Prefix that binary with our
- %% header and write to "rebar" file.
- %% Without -noshell -noinput escript consumes all input that would
- %% otherwise go to the shell for the next command.
- Script = <<"#!/usr/bin/env escript\n%%! -noshell -noinput\n",
- ZipBin/binary>>,
- case file:write_file("rebar", Script) of
- ok ->
- ok;
- {error, WriteError} ->
- io:format("Failed to write rebar script: ~p\n",
- [WriteError]),
- halt(1)
- end;
- {error, ZipError} ->
- io:format("Failed to construct rebar script archive: ~p\n",
- [ZipError]),
- halt(1)
- end,
%% Run rebar compile to do proper .app validation etc.
- %% and rebar escriptize to create the rebar script
- rebar:main(["compile", "escriptize"] ++ Args),
-
- %% Finally, update executable perms for our script on *nix,
- %% or write out script files on win32.
@ -57,79 +37,69 @@ index c8a40de..be0523a 100755
- _ ->
- ok
- end,
-
+ rebar:main(["compile"] ++ Args),
%% Add a helpful message
io:format("Congratulations! You now have a self-contained script called"
" \"rebar\" in\n"
diff --git a/src/rebar_templater.erl b/src/rebar_templater.erl
index f608512..450eb4d 100644
index 0e1eef1..7cc36f7 100644
--- a/src/rebar_templater.erl
+++ b/src/rebar_templater.erl
@@ -54,11 +54,6 @@
create(Config, File).
@@ -167,27 +167,11 @@ create1(Config, TemplateId) ->
execute_template(Files, FinalTemplate, Type, Template, Context, Force, []).
'list-templates'(_Config, _File) ->
- %% Load a list of all the files in the escript -- cache it in the pdict
- %% since we'll potentially need to walk it several times over the course
- %% of a run.
- cache_escript_files(),
find_templates(Config) ->
- %% Load a list of all the files in the escript -- cache them since
- %% we'll potentially need to walk it several times over the course of
- %% a run.
- Files = cache_escript_files(Config),
-
%% Build a list of available templates
AvailTemplates = find_disk_templates() ++ find_escript_templates(),
?CONSOLE("Available templates:\n", []),
@@ -70,11 +65,6 @@
create(_Config, _) ->
- %% Load a list of all the files in the escript -- cache it in the pdict
- %% since we'll potentially need to walk it several times over the course
- %% of a run.
- cache_escript_files(),
AvailTemplates = find_disk_templates(Config)
- ++ find_escript_templates(Files),
-
%% Build a list of available templates
AvailTemplates = find_disk_templates() ++ find_escript_templates(),
?DEBUG("Available templates: ~p\n", [AvailTemplates]),
@@ -174,18 +164,6 @@ render(Bin, Context) ->
%% Internal functions
%% ===================================================================
- {AvailTemplates, Files}.
+ ++ find_escript_templates(),
-%%
-%% Scan the current escript for available files and cache in pdict.
-%% Scan the current escript for available files
-%%
-cache_escript_files() ->
-cache_escript_files(Config) ->
- {ok, Files} = rebar_utils:escript_foldl(
- fun(Name, _, GetBin, Acc) ->
- [{Name, GetBin()} | Acc]
- end,
- [], rebar_config:get_global(escript, undefined)),
- erlang:put(escript_files, Files).
-
-
template_id() ->
case rebar_config:get_global(template, undefined) of
undefined ->
@@ -195,8 +173,7 @@ template_id() ->
- [], rebar_config:get_xconf(Config, escript)),
- Files.
+ {AvailTemplates, []}.
template_id(Config) ->
case rebar_config:get_global(Config, template, undefined) of
@@ -197,10 +181,8 @@ template_id(Config) ->
TemplateId
end.
find_escript_templates() ->
- [{escript, Name} || {Name, _Bin} <- erlang:get(escript_files),
- re:run(Name, ?TEMPLATE_RE, [{capture, none}]) == match].
+ [{escript, Name} || Name <- rebar_utils:find_files(code:priv_dir(rebar) ++ "/templates", ?TEMPLATE_RE)].
-find_escript_templates(Files) ->
- [{escript, Name}
- || {Name, _Bin} <- Files,
- re:run(Name, ?TEMPLATE_RE, [{capture, none}]) == match].
+find_escript_templates() ->
+ [{file, Name} || Name <- rebar_utils:find_files(code:priv_dir(rebar) ++ "/templates", ?TEMPLATE_RE)].
find_disk_templates() ->
OtherTemplates = find_other_templates(),
@@ -227,10 +204,7 @@ select_template([{Type, Avail} | Rest], Template) ->
find_disk_templates(Config) ->
OtherTemplates = find_other_templates(Config),
@@ -231,10 +213,7 @@ select_template([{Type, Avail} | Rest], Template) ->
%%
%% Read the contents of a file from the appropriate source
%%
-load_file(escript, Name) ->
- {Name, Bin} = lists:keyfind(Name, 1, erlang:get(escript_files)),
-load_file(Files, escript, Name) ->
- {Name, Bin} = lists:keyfind(Name, 1, Files),
- Bin;
-load_file(file, Name) ->
+load_file(_, Name) ->
-load_file(_Files, file, Name) ->
+load_file(_Files, _, Name) ->
{ok, Bin} = file:read_file(Name),
Bin.
--
1.8.0.1
1.8.1.4

View File

@ -1,20 +1,20 @@
From 73c2af44588a4bc15d2ab6b8aefb28f0a47775b2 Mon Sep 17 00:00:00 2001
From d384b7a4a72e9b566b89b517b3e7953c9f41c529 Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Sat, 20 Nov 2010 16:36:45 +0300
Subject: [PATCH 2/9] Remove bundled mustache
Subject: [PATCH 2/8] Remove bundled mustache
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
---
ebin/rebar.app | 3 +-
src/mustache.erl | 234 -------------------------------------------------------
2 files changed, 1 insertion(+), 236 deletions(-)
src/mustache.erl | 228 -------------------------------------------------------
2 files changed, 1 insertion(+), 230 deletions(-)
delete mode 100644 src/mustache.erl
diff --git a/ebin/rebar.app b/ebin/rebar.app
index 5689b35..cb4ab64 100644
index 8df929f..9e000fa 100644
--- a/ebin/rebar.app
+++ b/ebin/rebar.app
@@ -35,8 +35,7 @@
@@ -37,8 +37,7 @@
rebar_upgrade,
rebar_utils,
rebar_xref,
@ -26,10 +26,10 @@ index 5689b35..cb4ab64 100644
stdlib,
diff --git a/src/mustache.erl b/src/mustache.erl
deleted file mode 100644
index ac501a0..0000000
index f6963cd..0000000
--- a/src/mustache.erl
+++ /dev/null
@@ -1,234 +0,0 @@
@@ -1,228 +0,0 @@
-%% The MIT License
-%%
-%% Copyright (c) 2009 Tom Preston-Werner <tom@mojombo.com>
@ -63,10 +63,6 @@ index ac501a0..0000000
- section_re = undefined,
- tag_re = undefined}).
-
--ifdef(TEST).
--include_lib("eunit/include/eunit.hrl").
--endif.
-
-compile(Body) when is_list(Body) ->
- State = #mstate{},
- CompiledTemplate = pre_compile(Body, State),
@ -145,9 +141,9 @@ index ac501a0..0000000
- Result = compiler(Content, State),
- "fun() -> " ++
- "case mustache:get(" ++ Name ++ ", Ctx, " ++ atom_to_list(Mod) ++ ") of " ++
- "true -> " ++
- "\"true\" -> " ++
- Result ++ "; " ++
- "false -> " ++
- "\"false\" -> " ++
- "[]; " ++
- "List when is_list(List) -> " ++
- "[fun(Ctx) -> " ++ Result ++ " end(dict:merge(CFun, SubCtx, Ctx)) || SubCtx <- List]; " ++
@ -186,9 +182,21 @@ index ac501a0..0000000
-compile_tag("!", _Content, _State) ->
- "[]".
-
-template_dir(Mod) ->
- DefaultDirPath = filename:dirname(code:which(Mod)),
- case application:get_env(mustache, templates_dir) of
- {ok, DirPath} when is_list(DirPath) ->
- case filelib:ensure_dir(DirPath) of
- ok -> DirPath;
- _ -> DefaultDirPath
- end;
- _ ->
- DefaultDirPath
- end.
-template_path(Mod) ->
- ModPath = code:which(Mod),
- re:replace(ModPath, "\.beam$", ".mustache", [{return, list}]).
- DirPath = template_dir(Mod),
- Basename = atom_to_list(Mod),
- filename:join(DirPath, Basename ++ ".mustache").
-
-get(Key, Ctx) when is_list(Key) ->
- {ok, Mod} = dict:find('__mod__', Ctx),
@ -250,20 +258,6 @@ index ac501a0..0000000
-start([T]) ->
- Out = render(list_to_atom(T)),
- io:format(Out ++ "~n", []).
-
--ifdef(TEST).
-
-simple_test() ->
- Ctx = dict:from_list([{name, "world"}]),
- Result = render("Hello {{name}}!", Ctx),
- ?assertEqual("Hello world!", Result).
-
-integer_values_too_test() ->
- Ctx = dict:from_list([{name, "Chris"}, {value, 10000}]),
- Result = render("Hello {{name}}~nYou have just won ${{value}}!", Ctx),
- ?assertEqual("Hello Chris~nYou have just won $10000!", Result).
-
--endif.
--
1.8.0.1
1.8.1.4

View File

@ -1,7 +1,7 @@
From f8b747a9fc7126bec35c1e4bc81257baa838e289 Mon Sep 17 00:00:00 2001
From a58888207ee87f8db746cb91896c9d804f5af5fe Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Sat, 20 Nov 2010 16:40:15 +0300
Subject: [PATCH 3/9] Remove bundled getopt
Subject: [PATCH 3/8] Remove bundled getopt
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
---
@ -11,10 +11,10 @@ Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
delete mode 100644 src/getopt.erl
diff --git a/ebin/rebar.app b/ebin/rebar.app
index cb4ab64..cf69b8a 100644
index 9e000fa..cba8bf8 100644
--- a/ebin/rebar.app
+++ b/ebin/rebar.app
@@ -34,8 +34,7 @@
@@ -36,8 +36,7 @@
rebar_templater,
rebar_upgrade,
rebar_utils,
@ -652,5 +652,5 @@ index 175b7a5..0000000
- T
- end.
--
1.8.0.1
1.8.1.4

View File

@ -1,27 +1,33 @@
From b65a6fee95d3e97fc7047493ff4bd907971043d9 Mon Sep 17 00:00:00 2001
From 6864f0550b09b95f2a56eee45691c77d28e1b056 Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Tue, 5 Jun 2012 15:10:12 +0400
Subject: [PATCH 4/9] Allow discarding building ports
Subject: [PATCH 4/8] Allow discarding building ports
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
Conflicts:
src/rebar_port_compiler.erl
---
src/rebar_port_compiler.erl | 3 +++
1 file changed, 3 insertions(+)
src/rebar_port_compiler.erl | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/rebar_port_compiler.erl b/src/rebar_port_compiler.erl
index cdd9be6..e56089b 100644
index 71b27a5..d9837ed 100644
--- a/src/rebar_port_compiler.erl
+++ b/src/rebar_port_compiler.erl
@@ -110,6 +110,9 @@ compile(Config, AppFile) ->
ok; % old specs empty
{new, [], []} ->
ok; % port_specs empty
+ {_, _, [{_,_,_,[],[],_}]} ->
+ % Special case to discard port processing at all
+ ok; % port_specs empty
_ -> % have old/new specs
@@ -253,6 +253,12 @@ get_specs(Config, AppFile) ->
%% No spec provided. Construct a spec
%% from old-school so_name and sources
[port_spec_from_legacy(Config, AppFile)];
+ [{null,[]}] ->
+ [];
+ [null] ->
+ [];
+ [skip] ->
+ [];
PortSpecs ->
Filtered = filter_port_specs(PortSpecs),
OsType = os:type(),
--
1.8.0.1
1.8.1.4

View File

@ -0,0 +1,32 @@
From 9e20065f7bcf0533b8aec4a3c2108353c4f4078a Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Sat, 2 Mar 2013 10:39:15 +0400
Subject: [PATCH 5/8] Check system-wide libdir in case of source-based
dependency
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
---
src/rebar_deps.erl | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/rebar_deps.erl b/src/rebar_deps.erl
index 074e929..9cc82f7 100644
--- a/src/rebar_deps.erl
+++ b/src/rebar_deps.erl
@@ -305,7 +305,12 @@ find_dep(Config, Dep, _Source) ->
%% _Source is defined. Regardless of what it is, we must find it
%% locally satisfied or fetch it from the original source
%% into the project's deps
- find_dep_in_dir(Config, Dep, get_deps_dir(Config, Dep#dep.app)).
+ case find_dep_in_dir(Config, Dep, get_deps_dir(Config, Dep#dep.app)) of
+ {_Config1, {avail, _Dir}} = Avail ->
+ Avail;
+ {Config1, {missing, _}} ->
+ find_dep_in_dir(Config1, Dep, get_lib_dir(Dep#dep.app))
+ end.
find_dep_in_dir(Config, _Dep, {false, Dir}) ->
{Config, {missing, Dir}};
--
1.8.1.4

View File

@ -1,43 +0,0 @@
From 61ee2778f3931fdc95437208bdbb04b5477dabd9 Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Tue, 22 May 2012 14:03:31 +0400
Subject: [PATCH 5/9] No erlang:min/2 and erlang:max/2 in R12B
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
---
src/rebar_config.erl | 2 +-
src/rebar_log.erl | 5 ++++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/rebar_config.erl b/src/rebar_config.erl
index 7f7d03c..41fa7be 100644
--- a/src/rebar_config.erl
+++ b/src/rebar_config.erl
@@ -110,7 +110,7 @@ set(Config, Key, Value) ->
set_global(jobs=Key, Value) when is_list(Value) ->
set_global(Key, list_to_integer(Value));
set_global(jobs=Key, Value) when is_integer(Value) ->
- application:set_env(rebar_global, Key, erlang:max(1, Value));
+ application:set_env(rebar_global, Key, case (1 > Value) of true -> 1; _ -> Value end);
set_global(Key, Value) ->
application:set_env(rebar_global, Key, Value).
diff --git a/src/rebar_log.erl b/src/rebar_log.erl
index b7529a9..29cd4ee 100644
--- a/src/rebar_log.erl
+++ b/src/rebar_log.erl
@@ -69,7 +69,10 @@ default_level() -> error_level().
%% ===================================================================
valid_level(Level) ->
- erlang:max(error_level(), erlang:min(Level, debug_level())).
+ DL0= debug_level(),
+ EL = error_level(),
+ DL = case (Level < DL0) of true -> Level; _ -> DL0 end,
+ case (EL > DL) of true -> EL; _ -> DL end.
error_level() -> 0.
debug_level() -> 3.
--
1.8.0.1

View File

@ -1,137 +0,0 @@
From 9a2ccd60d6336d2faefd86d54606f5e824c6976b Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Tue, 22 May 2012 14:11:11 +0400
Subject: [PATCH 6/9] No such function lists:keyfind/3 in R12B5 - use
lists:keysearch/3 instead
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
---
src/rebar_rel_utils.erl | 18 +++++++++---------
src/rebar_reltool.erl | 10 +++++-----
src/rebar_templater.erl | 4 ++--
src/rebar_xref.erl | 4 ++--
4 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/src/rebar_rel_utils.erl b/src/rebar_rel_utils.erl
index e502743..21ff2dc 100644
--- a/src/rebar_rel_utils.erl
+++ b/src/rebar_rel_utils.erl
@@ -137,8 +137,8 @@ load_config(ReltoolFile) ->
%% Without this present, we can't run reltool.
%%
get_sys_tuple(ReltoolConfig) ->
- case lists:keyfind(sys, 1, ReltoolConfig) of
- {sys, _} = SysTuple ->
+ case lists:keysearch(sys, 1, ReltoolConfig) of
+ {value, {sys, _}} = SysTuple ->
SysTuple;
false ->
?ABORT("Failed to find {sys, [...]} tuple in reltool.config.", [])
@@ -151,13 +151,13 @@ get_sys_tuple(ReltoolConfig) ->
get_target_dir(ReltoolConfig) ->
case rebar_config:get_global(target_dir, undefined) of
undefined ->
- case lists:keyfind(target_dir, 1, ReltoolConfig) of
- {target_dir, TargetDir} ->
+ case lists:keysearch(target_dir, 1, ReltoolConfig) of
+ {value, {target_dir, TargetDir}} ->
filename:absname(TargetDir);
false ->
{sys, SysInfo} = get_sys_tuple(ReltoolConfig),
- case lists:keyfind(rel, 1, SysInfo) of
- {rel, Name, _Vsn, _Apps} ->
+ case lists:keysearch(rel, 1, SysInfo) of
+ {value, {rel, Name, _Vsn, _Apps}} ->
filename:absname(Name);
false ->
filename:absname("target")
@@ -180,7 +180,7 @@ get_target_parent_dir(ReltoolConfig) ->
%%
get_root_dir(ReltoolConfig) ->
{sys, SysInfo} = get_sys_tuple(ReltoolConfig),
- SysRootDirTuple = lists:keyfind(root_dir, 1, SysInfo),
+ {value, SysRootDirTuple} = lists:keysearch(root_dir, 1, SysInfo),
CmdRootDir = rebar_config:get_global(root_dir, undefined),
case {SysRootDirTuple, CmdRootDir} of
%% root_dir in sys typle and no root_dir on cmd-line
@@ -218,8 +218,8 @@ make_proplist([], Acc) ->
Acc.
expand_version(ReltoolConfig, Dir) ->
- case lists:keyfind(sys, 1, ReltoolConfig) of
- {sys, Sys} ->
+ case lists:keysearch(sys, 1, ReltoolConfig) of
+ {value, {sys, Sys}} ->
ExpandedSys = {sys, [expand_rel_version(Term, Dir) || Term <- Sys]},
lists:keyreplace(sys, 1, ReltoolConfig, ExpandedSys);
_ ->
diff --git a/src/rebar_reltool.erl b/src/rebar_reltool.erl
index c114811..eb34385 100644
--- a/src/rebar_reltool.erl
+++ b/src/rebar_reltool.erl
@@ -116,8 +116,8 @@ process_overlay(ReltoolConfig) ->
OverlayVars1),
%% Finally, overlay the files specified by the overlay section
- case lists:keyfind(overlay, 1, ReltoolConfig) of
- {overlay, Overlay} when is_list(Overlay) ->
+ case lists:keysearch(overlay, 1, ReltoolConfig) of
+ {value, {overlay, Overlay}} when is_list(Overlay) ->
execute_overlay(Overlay, OverlayVars, rebar_utils:get_cwd(),
TargetDir);
false ->
@@ -156,10 +156,10 @@ load_vars_file(File) ->
validate_rel_apps(ReltoolServer, {sys, ReltoolConfig}) ->
- case lists:keyfind(rel, 1, ReltoolConfig) of
+ case lists:keysearch(rel, 1, ReltoolConfig) of
false ->
ok;
- {rel, _Name, _Vsn, Apps} ->
+ {value, {rel, _Name, _Vsn, Apps}} ->
%% Identify all the apps that do NOT exist, based on
%% what's available from the reltool server
Missing = lists:sort(
@@ -172,7 +172,7 @@ validate_rel_apps(ReltoolServer, {sys, ReltoolConfig}) ->
?ABORT("Apps in {rel, ...} section not found by "
"reltool: ~p\n", [Missing])
end;
- Rel ->
+ {value, Rel} ->
%% Invalid release format!
?ABORT("Invalid {rel, ...} section in reltools.config: ~p\n", [Rel])
end.
diff --git a/src/rebar_templater.erl b/src/rebar_templater.erl
index 450eb4d..6ec3277 100644
--- a/src/rebar_templater.erl
+++ b/src/rebar_templater.erl
@@ -80,8 +80,8 @@ create(_Config, _) ->
%% Load the template definition as is and get the list of variables the
%% template requires.
TemplateTerms = consult(load_file(Type, Template)),
- case lists:keyfind(variables, 1, TemplateTerms) of
- {variables, Vars} ->
+ case lists:keysearch(variables, 1, TemplateTerms) of
+ {value, {variables, Vars}} ->
case parse_vars(Vars, dict:new()) of
{error, Entry} ->
Context0 = undefined,
diff --git a/src/rebar_xref.erl b/src/rebar_xref.erl
index 94103eb..17fb2a1 100644
--- a/src/rebar_xref.erl
+++ b/src/rebar_xref.erl
@@ -159,8 +159,8 @@ filter_away_ignored(UnusedExports) ->
kf(Key, List) ->
- case lists:keyfind(Key, 1, List) of
- {Key, Value} ->
+ case lists:keysearch(Key, 1, List) of
+ {value, {Key, Value}} ->
Value;
false ->
[]
--
1.8.0.1

View File

@ -0,0 +1,31 @@
From 1d6e1d3b4fad6fd9f922377612e948d1e8548328 Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Sat, 2 Mar 2013 13:35:36 +0400
Subject: [PATCH 6/8] Remove any traces of long-time obsolete escript:foldl/3
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
---
src/rebar_utils.erl | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl
index bb58460..c86c210 100644
--- a/src/rebar_utils.erl
+++ b/src/rebar_utils.erl
@@ -155,12 +155,7 @@ abort(String, Args) ->
%% undocumented exported fun and has been removed in R14.
escript_foldl(Fun, Acc, File) ->
{module, zip} = code:ensure_loaded(zip),
- case erlang:function_exported(zip, foldl, 3) of
- true ->
- emulate_escript_foldl(Fun, Acc, File);
- false ->
- escript:foldl(Fun, Acc, File)
- end.
+ emulate_escript_foldl(Fun, Acc, File).
find_executable(Name) ->
case os:find_executable(Name) of
--
1.8.1.4

View File

@ -1,26 +0,0 @@
From 2bb73de1e7e86b9a92cc872927f68cdc8775731f Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Tue, 22 May 2012 14:44:44 +0400
Subject: [PATCH 7/9] No such type dict() in R12B
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
---
src/rebar_config.erl | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/rebar_config.erl b/src/rebar_config.erl
index 41fa7be..6cc9c53 100644
--- a/src/rebar_config.erl
+++ b/src/rebar_config.erl
@@ -38,7 +38,7 @@
-record(config, { dir :: file:filename(),
opts = [] :: list(),
- envs = new_env() :: dict() }).
+ envs = new_env() :: term() }).
%% Types that can be used from other modules -- alphabetically ordered.
-export_type([config/0]).
--
1.8.0.1

View File

@ -0,0 +1,149 @@
From 07d92a8802cfdffc1688b33647d8d56108dd3b2e Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Sat, 2 Mar 2013 13:52:04 +0400
Subject: [PATCH 7/8] Remove abnfc compiler support (n/a in Fedora/EPEL)
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
---
ebin/rebar.app | 2 -
src/rebar_abnfc_compiler.erl | 108 -------------------------------------------
2 files changed, 110 deletions(-)
delete mode 100644 src/rebar_abnfc_compiler.erl
diff --git a/ebin/rebar.app b/ebin/rebar.app
index cba8bf8..e84e905 100644
--- a/ebin/rebar.app
+++ b/ebin/rebar.app
@@ -5,7 +5,6 @@
[{description, "Rebar: Erlang Build Tool"},
{vsn, "2.1.0-pre"},
{modules, [ rebar,
- rebar_abnfc_compiler,
rebar_app_utils,
rebar_appups,
rebar_asn1_compiler,
@@ -61,7 +60,6 @@
%% Dir specific processing modules
{modules, [
{app_dir, [
- rebar_abnfc_compiler,
rebar_protobuffs_compiler,
rebar_neotoma_compiler,
rebar_asn1_compiler,
diff --git a/src/rebar_abnfc_compiler.erl b/src/rebar_abnfc_compiler.erl
deleted file mode 100644
index 0e6749a..0000000
--- a/src/rebar_abnfc_compiler.erl
+++ /dev/null
@@ -1,108 +0,0 @@
-%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*-
-%% ex: ts=4 sw=4 et
-%% -------------------------------------------------------------------
-%%
-%% rebar: Erlang Build Tools
-%%
-%% Copyright (c) 2010 Anthony Ramine (nox@dev-extend.eu),
-%%
-%% Permission is hereby granted, free of charge, to any person obtaining a copy
-%% of this software and associated documentation files (the "Software"), to deal
-%% in the Software without restriction, including without limitation the rights
-%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-%% copies of the Software, and to permit persons to whom the Software is
-%% furnished to do so, subject to the following conditions:
-%%
-%% The above copyright notice and this permission notice shall be included in
-%% all copies or substantial portions of the Software.
-%%
-%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-%% THE SOFTWARE.
-%% -------------------------------------------------------------------
-
-%% The rebar_abnfc_compiler module is a plugin for rebar that compiles
-%% ABNF grammars into parsers. By default, it compiles all src/*.abnf
-%% to src/*.erl.
-%%
-%% Configuration options should be placed in rebar.config under
-%% 'abnfc_opts'. Available options include:
-%%
-%% doc_root: where to find the ABNF grammars to compile
-%% "src" by default
-%%
-%% out_dir: where to put the generated files.
-%% "src" by default
-%%
-%% source_ext: the file extension the ABNF grammars have.
-%% ".abnf" by default
-%%
-%% module_ext: characters to append to the parser's module name
-%% "" by default
--module(rebar_abnfc_compiler).
-
--export([compile/2]).
-
--include("rebar.hrl").
-
-%% ===================================================================
-%% Public API
-%% ===================================================================
-
-compile(Config, _AppFile) ->
- DtlOpts = abnfc_opts(Config),
- rebar_base_compiler:run(Config, [],
- option(doc_root, DtlOpts),
- option(source_ext, DtlOpts),
- option(out_dir, DtlOpts),
- option(module_ext, DtlOpts) ++ ".erl",
- fun compile_abnfc/3).
-
-
-%% ===================================================================
-%% Internal functions
-%% ===================================================================
-
-abnfc_opts(Config) ->
- rebar_config:get(Config, abnfc_opts, []).
-
-option(Opt, DtlOpts) ->
- proplists:get_value(Opt, DtlOpts, default(Opt)).
-
-default(doc_root) -> "src";
-default(out_dir) -> "src";
-default(source_ext) -> ".abnf";
-default(module_ext) -> "".
-
-abnfc_is_present() ->
- code:which(abnfc) =/= non_existing.
-
-compile_abnfc(Source, _Target, Config) ->
- case abnfc_is_present() of
- false ->
- ?ERROR("~n===============================================~n"
- " You need to install abnfc to compile ABNF grammars~n"
- " Download the latest tarball release from github~n"
- " https://github.com/nygge/abnfc~n"
- " and install it into your erlang library dir~n"
- "===============================================~n~n", []),
- ?FAIL;
- true ->
- AbnfcOpts = abnfc_opts(Config),
- SourceExt = option(source_ext, AbnfcOpts),
- Opts = [noobj,
- {o, option(out_dir, AbnfcOpts)},
- {mod, filename:basename(Source, SourceExt) ++
- option(module_ext, AbnfcOpts)}],
- case abnfc:file(Source, Opts) of
- ok -> ok;
- Error ->
- ?ERROR("Compiling grammar ~s failed:~n ~p~n",
- [Source, Error]),
- ?FAIL
- end
- end.
--
1.8.1.4

View File

@ -0,0 +1,26 @@
From 030eed84bf2d6461df036fc7231eaaf78de9489f Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Sat, 2 Mar 2013 13:52:35 +0400
Subject: [PATCH 8/8] Adjust app version
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
---
ebin/rebar.app | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ebin/rebar.app b/ebin/rebar.app
index e84e905..3f0aabe 100644
--- a/ebin/rebar.app
+++ b/ebin/rebar.app
@@ -3,7 +3,7 @@
{application, rebar,
[{description, "Rebar: Erlang Build Tool"},
- {vsn, "2.1.0-pre"},
+ {vsn, "2.1.0"},
{modules, [ rebar,
rebar_app_utils,
rebar_appups,
--
1.8.1.4

View File

@ -1,30 +0,0 @@
From 35557ef77faceeb44e48aefe59dee6f40746bf84 Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Tue, 22 May 2012 14:55:39 +0400
Subject: [PATCH 8/9] No such directive -opaque in R12B
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
---
src/rebar_config.erl | 6 ------
1 file changed, 6 deletions(-)
diff --git a/src/rebar_config.erl b/src/rebar_config.erl
index 6cc9c53..50aba5b 100644
--- a/src/rebar_config.erl
+++ b/src/rebar_config.erl
@@ -40,12 +40,6 @@
opts = [] :: list(),
envs = new_env() :: term() }).
-%% Types that can be used from other modules -- alphabetically ordered.
--export_type([config/0]).
-
-%% data types
--opaque config() :: #config{}.
-
%% ===================================================================
%% Public API
%% ===================================================================
--
1.8.0.1

View File

@ -1,26 +0,0 @@
From e4a9974bb323f82fd39cbbe4e3eef2f42bfbc593 Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Tue, 22 May 2012 15:06:36 +0400
Subject: [PATCH 9/9] No such type boolean in R12B
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
---
src/rebar_erlc_compiler.erl | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/rebar_erlc_compiler.erl b/src/rebar_erlc_compiler.erl
index 6535324..4c77af1 100644
--- a/src/rebar_erlc_compiler.erl
+++ b/src/rebar_erlc_compiler.erl
@@ -233,7 +233,7 @@ inspect_epp(Epp, Source, Module, Includes) ->
end.
-spec needs_compile(Source::file:filename(), Target::file:filename(),
- Hrls::[string()]) -> boolean().
+ Hrls::[string()]) -> bool().
needs_compile(Source, Target, Hrls) ->
TargetLastMod = filelib:last_modified(Target),
lists:any(fun(I) -> TargetLastMod < filelib:last_modified(I) end,
--
1.8.0.1

View File

@ -1 +1 @@
c7fd0775e25c5ab55c2ddef859f56816 basho-rebar-2.0.0-0-g1c98f6c.tar.gz
43a094165eb54b474e6b6aa95f1b3f8b basho-rebar-2.1.0-pre-0-gebb474b.tar.gz