Fixed build in EL5 and added erl_interface as a dependency

Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
This commit is contained in:
Peter Lemenkov 2012-05-22 15:17:38 +04:00
parent 32804a4c55
commit dbaf4f9156
9 changed files with 314 additions and 8 deletions

View File

@ -7,7 +7,7 @@
Name: erlang-%{realname}
Version: 2
Release: 7.20120514git%{git_tag}%{?dist}
Release: 8.20120514git%{git_tag}%{?dist}
Summary: Erlang Build Tools
Group: Development/Tools
License: MIT
@ -18,11 +18,24 @@ Source1: rebar.escript
Patch1: rebar-0001-No-need-to-create-bundle.patch
Patch2: rebar-0002-Remove-bundled-mustache.patch
Patch3: rebar-0003-Remove-bundled-getopt.patch
# R12B - EPEL5-specific
Patch4: rebar-0004-No-erlang-min-2-and-erlang-max-2-in-R12B.patch
# R12B - EPEL5-specific
Patch5: rebar-0005-No-such-function-lists-keyfind-3-in-R12B5-use-lists-.patch
# R12B - EPEL5-specific
Patch6: rebar-0006-No-such-type-dict-in-R12B.patch
# R12B - EPEL5-specific
Patch7: rebar-0007-No-such-directive-opaque-in-R12B.patch
# R12B - EPEL5-specific
Patch8: rebar-0008-No-such-type-boolean-in-R12B.patch
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildRequires: erlang-erts >= R13B-03
BuildRequires: erlang-erts
BuildRequires: erlang-getopt
%if 0%{!?el5}
# Missing dependency - FIXME this is a bug in erlang in EPEL5
BuildRequires: erlang-erl_interface
BuildRequires: erlang-reltool
%endif
# wip
#Requires: erlang-abnfc
Requires: erlang-asn1
@ -34,6 +47,10 @@ Requires: erlang-edoc
Requires: erlang-erlydtl
%endif
Requires: erlang-erts
%if 0%{!?el5}
# Missing dependency - FIXME this is a bug in erlang in EPEL5
Requires: erlang-erl_interface
%endif
Requires: erlang-eunit
Requires: erlang-getopt
Requires: erlang-kernel
@ -41,7 +58,10 @@ Requires: erlang-lfe
Requires: erlang-mustache
Requires: erlang-neotoma
Requires: erlang-protobuffs
%if 0%{!?el5}
# No reltool at all in the R12B
Requires: erlang-reltool
%endif
Requires: erlang-snmp
Requires: erlang-stdlib
Requires: erlang-syntax_tools
@ -58,12 +78,26 @@ Erlang Build Tools.
%patch1 -p1 -b .no_bundle
%patch2 -p1 -b .remove_bundled_mustache
%patch3 -p1 -b .remove_bundled_getopt
%if 0%{?el5}
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -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
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
@ -94,6 +128,10 @@ rm -rf $RPM_BUILD_ROOT
%changelog
* Mon May 21 2012 Peter Lemenkov <lemenkov@gmail.com> - 2-8.20120514git635d1a9
- Explicitly list erlang-erl_interface as a dependency
- Fixed EPEL5 dependencies
* Sun May 20 2012 Peter Lemenkov <lemenkov@gmail.com> - 2-7.20120514git635d1a9
- Enable building on EL5 (remove erlydtl-related stuff on el5)
- Remove abnfc-related stff until we package it

View File

@ -1,7 +1,7 @@
From 6d7b6dca598f26fa5b46561b851e6b8286a50662 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/3] No need to create bundle
Subject: [PATCH 1/8] No need to create bundle
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
---
@ -60,5 +60,5 @@ index e86ad8e..c4992a7 100755
io:format("Congratulations! You now have a self-contained script called"
" \"rebar\" in\n"
--
1.7.10.1
1.7.10.2

View File

@ -1,7 +1,7 @@
From 844182030976e868e7cd6aa67e891d55db749a65 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/3] Remove bundled mustache
Subject: [PATCH 2/8] Remove bundled mustache
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
---
@ -265,5 +265,5 @@ index ac501a0..0000000
-
--endif.
--
1.7.10.1
1.7.10.2

View File

@ -1,7 +1,7 @@
From 0915eb1978ebca6d0f89421203d5be6d6b4fdd86 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/3] Remove bundled getopt
Subject: [PATCH 3/8] Remove bundled getopt
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
---
@ -652,5 +652,5 @@ index 175b7a5..0000000
- T
- end.
--
1.7.10.1
1.7.10.2

View File

@ -0,0 +1,43 @@
From e5fcb003c75c57ace23e1dcc873511ef550a0cab Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Tue, 22 May 2012 14:03:31 +0400
Subject: [PATCH 4/8] 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.7.10.2

View File

@ -0,0 +1,146 @@
From e0c8d80a666c83f304b22f8a8cb0838ea645744a Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Tue, 22 May 2012 14:11:11 +0400
Subject: [PATCH 5/8] 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 | 6 +++---
src/rebar_xref.erl | 4 ++--
4 files changed, 19 insertions(+), 19 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 42c7f15..5ff4044 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 f608512..6b9946f 100644
--- a/src/rebar_templater.erl
+++ b/src/rebar_templater.erl
@@ -90,8 +90,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,
@@ -228,7 +228,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)),
+ {value, {Name, Bin}} = lists:keysearch(Name, 1, erlang:get(escript_files)),
Bin;
load_file(file, Name) ->
{ok, Bin} = file:read_file(Name),
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.7.10.2

View File

@ -0,0 +1,26 @@
From 1f4d9503c3ed5c81a1a3182e36cfa48fed71e13d Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Tue, 22 May 2012 14:44:44 +0400
Subject: [PATCH 6/8] 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.7.10.2

View File

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

View File

@ -0,0 +1,26 @@
From 8a138f286a7b85e6a7d3f006bbdc0f521486d546 Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Tue, 22 May 2012 15:06:36 +0400
Subject: [PATCH 8/8] 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.7.10.2