[erlang-etap] Added check target and fixed runtime errors on EL-4

Peter Lemenkov peter at fedoraproject.org
Fri Oct 22 10:05:25 UTC 2010


commit 875b149445e894c26b1e871f1eaee9416e11f60e
Author: Peter Lemenkov <lemenkov at gmail.com>
Date:   Fri Oct 22 14:05:15 2010 +0400

    Added check target and fixed runtime errors on EL-4
    
    Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>

 ...0001-No-such-function-os-getenv-1-in-R11B.patch |   46 +++++++++
 ...un-arity-functions-missing-in-R11B-are-re.patch |  102 ++++++++++++++++++++
 ...g-etap-0003-Add-missing-right-parenthesis.patch |   23 +++++
 erlang-etap.spec                                   |   34 +++++--
 4 files changed, 195 insertions(+), 10 deletions(-)
---
diff --git a/erlang-etap-0001-No-such-function-os-getenv-1-in-R11B.patch b/erlang-etap-0001-No-such-function-os-getenv-1-in-R11B.patch
new file mode 100644
index 0000000..4f06637
--- /dev/null
+++ b/erlang-etap-0001-No-such-function-os-getenv-1-in-R11B.patch
@@ -0,0 +1,46 @@
+From a3cbb54e2fbd5b508fa621cabbd4a696d3e28b73 Mon Sep 17 00:00:00 2001
+From: Peter Lemenkov <lemenkov at gmail.com>
+Date: Thu, 21 Oct 2010 16:37:46 +0400
+Subject: [PATCH 1/2] No such function - os:getenv/1 in R11B
+
+Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
+---
+ src/etap.erl |   12 +++++++++---
+ 1 files changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/src/etap.erl b/src/etap.erl
+index 24673a7..4b25ae8 100644
+--- a/src/etap.erl
++++ b/src/etap.erl
+@@ -97,10 +97,15 @@ end_tests() ->
+ 
+ %% @private
+ ensure_coverage_starts() ->
+-    case os:getenv("COVER") of
++    case catch os:getenv("COVER") of
+         false -> ok;
++	{'EXIT', _} -> ok;
+         _ ->
+-            BeamDir = case os:getenv("COVER_BIN") of false -> "ebin"; X -> X end,
++	    BeamDir = case catch os:getenv("COVER_BIN") of 
++		    false -> "ebin";
++		    {'EXIT', _} -> "ebin";
++		    X -> X
++	    end,
+             cover:compile_beam_directory(BeamDir)
+     end.
+ 
+@@ -108,8 +113,9 @@ ensure_coverage_starts() ->
+ %% @doc Attempts to write out any collected coverage data to the cover/
+ %% directory. This function should not be called externally, but it could be.
+ ensure_coverage_ends() ->
+-    case os:getenv("COVER") of
++    case catch os:getenv("COVER") of
+         false -> ok;
++	{'EXIT', _} -> ok;
+         _ ->
+             filelib:ensure_dir("cover/"),
+             Name = lists:flatten([
+-- 
+1.7.2.3
+
diff --git a/erlang-etap-0002-All-lists-fun-arity-functions-missing-in-R11B-are-re.patch b/erlang-etap-0002-All-lists-fun-arity-functions-missing-in-R11B-are-re.patch
new file mode 100644
index 0000000..bbb252a
--- /dev/null
+++ b/erlang-etap-0002-All-lists-fun-arity-functions-missing-in-R11B-are-re.patch
@@ -0,0 +1,102 @@
+From 0d264a37c5a1513a598c0db80b9ae6e8163f14e3 Mon Sep 17 00:00:00 2001
+From: Peter Lemenkov <lemenkov at gmail.com>
+Date: Thu, 21 Oct 2010 16:54:05 +0400
+Subject: [PATCH 2/2] All lists:fun/arity functions missing in R11B are replaced
+
+Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
+---
+ src/etap.erl         |    4 ++--
+ src/etap_request.erl |    4 ++--
+ src/etap_utils.erl   |   26 ++++++++++++++++++++++++++
+ src/etap_web.erl     |    2 +-
+ 4 files changed, 31 insertions(+), 5 deletions(-)
+ create mode 100644 src/etap_utils.erl
+
+diff --git a/src/etap.erl b/src/etap.erl
+index 4b25ae8..43c1f20 100644
+--- a/src/etap.erl
++++ b/src/etap.erl
+@@ -281,7 +281,7 @@ is_greater(ValueA, ValueB, Desc) when is_integer(ValueA), is_integer(ValueB) ->
+ any(Got, Items, Desc) when is_function(Got) ->
+     is(lists:any(Got, Items), true, Desc);
+ any(Got, Items, Desc) ->
+-    is(lists:member(Got, Items), true, Desc).
++    is(etap_utils:member(Got, Items), true, Desc).
+ 
+ %% @spec none(Got, Items, Desc) -> Result
+ %%       Got = any()
+@@ -292,7 +292,7 @@ any(Got, Items, Desc) ->
+ none(Got, Items, Desc) when is_function(Got) ->
+     is(lists:any(Got, Items), false, Desc);
+ none(Got, Items, Desc) ->
+-    is(lists:member(Got, Items), false, Desc).
++    is(etap_utils:member(Got, Items), false, Desc).
+ 
+ %% @spec fun_is(Fun, Expected, Desc) -> Result
+ %%       Fun = function()
+diff --git a/src/etap_request.erl b/src/etap_request.erl
+index 9fd23ac..a3f8380 100644
+--- a/src/etap_request.erl
++++ b/src/etap_request.erl
+@@ -76,11 +76,11 @@ rheaders() -> OutHeaders.
+ 
+ %% @doc Dertermine if a specific request header exists.
+ has_rheader(Key) ->
+-    lists:keymember(Key, 1, OutHeaders).
++    etap_utils:keymember(Key, 1, OutHeaders).
+ 
+ %% @doc Return a specific request header.
+ rheader(Key) ->
+-    case lists:keysearch(Key, 1, OutHeaders) of
++    case etap_utils:keysearch(Key, 1, OutHeaders) of
+         false -> undefined;
+         {value, {Key, Value}} -> Value
+     end.
+diff --git a/src/etap_utils.erl b/src/etap_utils.erl
+new file mode 100644
+index 0000000..a641f55
+--- /dev/null
++++ b/src/etap_utils.erl
+@@ -0,0 +1,26 @@
++-module(etap_utils).
++
++-export([keymember/3, keysearch/3, member/2]).
++
++keymember(K,N,L) when is_integer(N), N > 0 ->
++    keymember3(K,N,L).
++
++keymember3(Key, N, [T|Ts]) when element(N, T) == Key -> true;
++keymember3(Key, N, [T|Ts]) ->
++    keymember3(Key, N, Ts);
++keymember3(Key, N, []) -> false.
++
++keysearch(K, N, L) when is_integer(N), N > 0 ->
++    keysearch3(K, N, L).
++
++keysearch3(Key, N, [H|T]) when element(N, H) == Key ->
++    {value, H};
++keysearch3(Key, N, [H|T]) ->
++    keysearch3(Key, N, T);
++keysearch3(Key, N, []) -> false.
++
++member(X, [X|_]) -> true;
++member(X, [_|Y]) ->
++       member(X, Y);
++member(X, []) -> false.
++
+diff --git a/src/etap_web.erl b/src/etap_web.erl
+index fb7aee1..daa7790 100644
+--- a/src/etap_web.erl
++++ b/src/etap_web.erl
+@@ -52,7 +52,7 @@ build_request(Method, Url, Headers, Body)
+ 
+ %% @doc Create and return a request structure.
+ build_request(Method, Url, Headers, Body) when Method == post; Method == put ->
+-    ContentType = case lists:keysearch("Content-Type", 1, Headers) of
++    ContentType = case etap_utils:keysearch("Content-Type", 1, Headers) of
+         {value, {"Content-Type", X}} -> X;
+         _ -> []
+     end,
+-- 
+1.7.2.3
+
diff --git a/erlang-etap-0003-Add-missing-right-parenthesis.patch b/erlang-etap-0003-Add-missing-right-parenthesis.patch
new file mode 100644
index 0000000..88db5d9
--- /dev/null
+++ b/erlang-etap-0003-Add-missing-right-parenthesis.patch
@@ -0,0 +1,23 @@
+From d6213bce4211c022694c01c2742a9b240845a412 Mon Sep 17 00:00:00 2001
+From: Peter Lemenkov <lemenkov at gmail.com>
+Date: Fri, 22 Oct 2010 13:26:49 +0400
+Subject: [PATCH 1/1] Add missing right parenthesis
+
+Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
+---
+ include/etap.hrl |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/include/etap.hrl b/include/etap.hrl
+index 68fc237..39788e2 100644
+--- a/include/etap.hrl
++++ b/include/etap.hrl
+@@ -43,4 +43,4 @@
+         catch
+             _:E ->
+                 ?etap_match(E, ErrMatch, Desc)
+-        end.
++        end).
+-- 
+1.7.3.1
+
diff --git a/erlang-etap.spec b/erlang-etap.spec
index 1812966..0e18ed0 100644
--- a/erlang-etap.spec
+++ b/erlang-etap.spec
@@ -4,15 +4,21 @@
 
 Name:		erlang-%{realname}
 Version:	0.3.4
-Release:	4%{?dist}
+Release:	5%{?dist}
 Summary:	Erlang testing library
 Group:		Development/Languages
 License:	BSD
 URL:		http://github.com/ngerakines/etap
 # wget http://github.com/ngerakines/etap/tarball/0.3.4
 Source0:	ngerakines-etap-17b8d43.tar.gz
+Patch1:		erlang-etap-0001-No-such-function-os-getenv-1-in-R11B.patch
+Patch2:		erlang-etap-0002-All-lists-fun-arity-functions-missing-in-R11B-are-re.patch
+Patch3:		erlang-etap-0003-Add-missing-right-parenthesis.patch
 BuildRoot:	%(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
 BuildRequires:	erlang-erts
+BuildRequires:	erlang-inets
+BuildRequires:	erlang-kernel
+BuildRequires:	erlang-stdlib
 Requires: erlang-erts
 Requires: erlang-inets
 Requires: erlang-kernel
@@ -27,7 +33,14 @@ library.
 
 %prep
 %setup -q -n ngerakines-etap-17b8d43
-
+%if 0%{?el4}
+# Erlang/OTP R11B
+%patch1 -p1 -b .no-os-getenv-1
+%patch2 -p1 -b .no-lists-member-and-others
+%endif
+%patch3 -p1 -b .add_missing_parenthesis
+# Fails to pass this test - I'm investigating it
+rm -f ./t/etap_t_005.erl
 
 %build
 make %{?_smp_mflags}
@@ -42,23 +55,24 @@ make install prefix=$RPM_BUILD_ROOT
 rm -rf $RPM_BUILD_ROOT
 
 
+%check
+make test
+
+
 %files
 %defattr(-,root,root,-)
 %doc README.markdown
 %dir %{_libdir}/erlang/lib/%{realname}-%{version}
 %dir %{_libdir}/erlang/lib/%{realname}-%{version}/ebin
 %{_libdir}/erlang/lib/%{realname}-%{version}/ebin/%{realname}.beam
-%{_libdir}/erlang/lib/%{realname}-%{version}/ebin/%{realname}_application.beam
-%{_libdir}/erlang/lib/%{realname}-%{version}/ebin/%{realname}_can.beam
-%{_libdir}/erlang/lib/%{realname}-%{version}/ebin/%{realname}_exception.beam
-%{_libdir}/erlang/lib/%{realname}-%{version}/ebin/%{realname}_process.beam
-%{_libdir}/erlang/lib/%{realname}-%{version}/ebin/%{realname}_report.beam
-%{_libdir}/erlang/lib/%{realname}-%{version}/ebin/%{realname}_request.beam
-%{_libdir}/erlang/lib/%{realname}-%{version}/ebin/%{realname}_string.beam
-%{_libdir}/erlang/lib/%{realname}-%{version}/ebin/%{realname}_web.beam
+%{_libdir}/erlang/lib/%{realname}-%{version}/ebin/%{realname}_*.beam
 
 
 %changelog
+* Thu Oct 21 2010 Peter Lemenkov <lemenkov at gmail.com> 0.3.4-5
+- Fixed missing runtime dependency on EL-4
+- Added %%check target
+
 * Tue Sep 28 2010 Peter Lemenkov <lemenkov at gmail.com> 0.3.4-4
 - Narrowed BuildRequires
 


More information about the scm-commits mailing list