[erlang-amf] Fixed missing expots and missing BIFs on R12B

Peter Lemenkov peter at fedoraproject.org
Sun Oct 31 13:49:22 UTC 2010


commit 436eae78142390f62747b54608ccd7f5bbbe620c
Author: Peter Lemenkov <lemenkov at gmail.com>
Date:   Sun Oct 31 16:49:13 2010 +0300

    Fixed missing expots and missing BIFs on R12B
    
    Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>

 ...amf-0001-Add-missing-amf3-decode-3-export.patch |   29 +++++++
 ...-amf-0002-Missing-BIFs-in-Erlang-OTP-R12B.patch |   79 ++++++++++++++++++++
 erlang-amf.spec                                    |   14 +++-
 3 files changed, 121 insertions(+), 1 deletions(-)
---
diff --git a/erlang-amf-0001-Add-missing-amf3-decode-3-export.patch b/erlang-amf-0001-Add-missing-amf3-decode-3-export.patch
new file mode 100644
index 0000000..da40588
--- /dev/null
+++ b/erlang-amf-0001-Add-missing-amf3-decode-3-export.patch
@@ -0,0 +1,29 @@
+From 85c99f33c28eafe9bb3d0ce001e35bba74ca02c6 Mon Sep 17 00:00:00 2001
+From: Peter Lemenkov <lemenkov at gmail.com>
+Date: Sun, 31 Oct 2010 16:13:46 +0300
+Subject: [PATCH 1/2] Add missing amf3:decode/3 export
+
+The said function is used in file amf_AbstractMessage.erl, so let's
+export it.
+
+Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
+---
+ src/amf3.erl |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/amf3.erl b/src/amf3.erl
+index 4471130..ad0d1cb 100644
+--- a/src/amf3.erl
++++ b/src/amf3.erl
+@@ -5,7 +5,7 @@
+ -module(amf3).
+ -author('ruslan at babayev.com').
+ 
+--export([encode/1, decode/1]).
++-export([encode/1, decode/1, decode/4]).
+ 
+ -define(UNDEFINED, 16#00).
+ -define(NULL,      16#01).
+-- 
+1.7.2.3
+
diff --git a/erlang-amf-0002-Missing-BIFs-in-Erlang-OTP-R12B.patch b/erlang-amf-0002-Missing-BIFs-in-Erlang-OTP-R12B.patch
new file mode 100644
index 0000000..3257869
--- /dev/null
+++ b/erlang-amf-0002-Missing-BIFs-in-Erlang-OTP-R12B.patch
@@ -0,0 +1,79 @@
+From 12397fed94bf07b5e35a75654a7fff5b6350c61b Mon Sep 17 00:00:00 2001
+From: Peter Lemenkov <lemenkov at gmail.com>
+Date: Sun, 31 Oct 2010 16:41:26 +0300
+Subject: [PATCH 2/2] Missing BIFs in Erlang/OTP R12B
+
+Erlang/OTP R12B has two necessary BIFs absent - atom_to_binary and
+binary_to_atom. I constructed them from available BIFs.
+
+Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
+---
+ src/amf0.erl |    8 ++++----
+ src/amf3.erl |    4 ++--
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/amf0.erl b/src/amf0.erl
+index c7bd644..ed0d7fe 100644
+--- a/src/amf0.erl
++++ b/src/amf0.erl
+@@ -58,7 +58,7 @@ decode(<<?OBJECT, Data/binary>>, Objects) ->
+     Key = gb_trees:size(Objects),
+     Objects1 = gb_trees:insert(Key, {ref, Key}, Objects),
+     {Members0, Objects2, Rest} = decode_members(Data, [], Objects1),
+-    Members1 = [{binary_to_atom(Name, utf8), Val} || {Name, Val} <- Members0],
++    Members1 = [{list_to_atom(binary_to_list(Name)), Val} || {Name, Val} <- Members0],
+     Object = {object, Members1},
+     Objects3 = gb_trees:update(Key, Object, Objects2),
+     {Object, Rest, Objects3};
+@@ -92,7 +92,7 @@ decode(<<?TYPEDOBJECT, L:16, Class:L/binary, Data/binary>>, Objects) ->
+     Key = gb_trees:size(Objects),
+     Objects1 = gb_trees:insert(Key, {ref, Key}, Objects),
+     {Members0, Objects2, Rest} = decode_members(Data, [], Objects1),
+-    Members1 = [{binary_to_atom(Name, utf8), Val} || {Name, Val} <- Members0],
++    Members1 = [{list_to_atom(binary_to_list(Name)), Val} || {Name, Val} <- Members0],
+     Object = {object, Class, Members1},
+     Objects3 = gb_trees:update(Key, Object, Objects2),
+     {Object, Rest, Objects3};
+@@ -161,7 +161,7 @@ encode({object, Members} = Object, Objects) ->
+ 	inline ->
+ 	    Key = gb_trees:size(Objects),
+ 	    Objects1 = gb_trees:insert(Key, Object, Objects),
+-	    Members1 = [{atom_to_binary(N, utf8), V} || {N, V} <- Members],
++	    Members1 = [{list_to_binary(atom_to_list(N)), V} || {N, V} <- Members],
+ 	    {Bin, Objects2} = encode_members(Members1, <<>>, Objects1),
+ 	    {<<?OBJECT, Bin/binary>>, Objects2}
+     end;
+@@ -172,7 +172,7 @@ encode({object, Class, Members} = Object, Objects) ->
+ 	inline ->
+ 	    Key = gb_trees:size(Objects),
+ 	    Objects1 = gb_trees:insert(Key, Object, Objects),
+-	    Members1 = [{atom_to_binary(N, utf8), V} || {N, V} <- Members],
++	    Members1 = [{list_to_binary(atom_to_list(N)), V} || {N, V} <- Members],
+ 	    {Bin, Objects2} = encode_members(Members1, <<>>, Objects1),
+ 	    Bin1 = <<?TYPEDOBJECT, (size(Class)):16, Class/binary,Bin/binary>>,
+ 	    {Bin1, Objects2}
+diff --git a/src/amf3.erl b/src/amf3.erl
+index ad0d1cb..27aad2a 100644
+--- a/src/amf3.erl
++++ b/src/amf3.erl
+@@ -236,7 +236,7 @@ decode_strings_as_atoms(0, Rest, Strings, Acc) ->
+     {lists:reverse(Acc), Rest, Strings};
+ decode_strings_as_atoms(N, Data, Strings, Acc) ->
+     {String, Rest, Strings1} = decode_string(Data, Strings),
+-    Atom = binary_to_atom(String, utf8),
++    Atom = list_to_atom(binary_to_list(String)),
+     decode_strings_as_atoms(N - 1, Rest, Strings1, [Atom | Acc]).
+ 
+ %% @doc Decodes an Object.
+@@ -540,7 +540,7 @@ encode_atoms_as_strings(Atoms, Strings) ->
+ encode_atoms_as_strings([], Acc, Strings) ->
+     {Acc, Strings};
+ encode_atoms_as_strings([Atom | Rest], Acc, Strings) ->
+-    {Bin, Strings1} = encode_string(atom_to_binary(Atom, utf8), Strings),
++    {Bin, Strings1} = encode_string(list_to_binary(atom_to_list(Atom)), Strings),
+     encode_atoms_as_strings(Rest, <<Acc/binary, Bin/binary>>, Strings1).
+ 
+ %% @doc Inserts String into the reference table unless String is empty.
+-- 
+1.7.2.3
+
diff --git a/erlang-amf.spec b/erlang-amf.spec
index 87a2af5..50deac7 100644
--- a/erlang-amf.spec
+++ b/erlang-amf.spec
@@ -3,7 +3,7 @@
 
 Name:		erlang-%{realname}
 Version:	0
-Release:	0.2.20100908git27329144%{?dist}
+Release:	0.3.20100908git27329144%{?dist}
 Summary:	Erlang Action Message Format Library
 
 Group:		Development/Libraries
@@ -11,6 +11,8 @@ License:	BSD
 URL:		http://github.com/mujaheed/erlang-amf
 # wget http://github.com/mujaheed/erlang-amf/tarball/27329144
 Source0:	mujaheed-erlang-amf-2732914.tar.gz
+Patch1:		erlang-amf-0001-Add-missing-amf3-decode-3-export.patch
+Patch2:		erlang-amf-0002-Missing-BIFs-in-Erlang-OTP-R12B.patch
 BuildRoot:	%(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
 BuildRequires:	erlang-edoc
 BuildRequires:	erlang-erts
@@ -26,6 +28,12 @@ Erlang Action Message Format Library.
 
 %prep
 %setup -q -n mujaheed-erlang-amf-2732914
+%patch1 -p1 -b .add_exports
+%if 0%{?el5}
+# Erlang/OTP R12B5
+%patch2 -p1 -b .add_missing_bifs
+%endif
+
 
 
 %build
@@ -64,6 +72,10 @@ make %{?_smp_mflags} test
 
 
 %changelog
+* Sun Oct 31 2010 Peter Lemenkov <lemenkov at gmail.com> - 0-0.3.20100908git27329144
+- Fixed missing BIFs in Erlang/OTP R12B
+- Exported one more function
+
 * Wed Sep 22 2010 Peter Lemenkov <lemenkov at gmail.com> - 0-0.2.20100908git27329144
 - Narrow BuildRequires
 


More information about the scm-commits mailing list