[thrift] highly concurrent Erlang goodness
Summary:
* shim to use object-oriented code as gen_servers
* high(er) performance Erlang-style server and transport
* sane packaging based on otp-base, i.e. Makefiles and real structure
Test Plan: tutorial server offers the same (subset of) functionality as previous version
Revert Plan: ok
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665164 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/erl/tools/utilities/clean_release b/lib/erl/tools/utilities/clean_release
new file mode 100755
index 0000000..9202690
--- /dev/null
+++ b/lib/erl/tools/utilities/clean_release
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+if [ $# -eq 1 ]; then
+ RELEASE_NAME=$1
+else
+ RELEASE_NAME=$(basename $(dirname $(dirname $(dirname $(which $0)))))
+fi
+
+LOCAL=$(dirname $(which $0))
+
+echo $LOCAL
+echo $RELEASE_NAME
+cd $LOCAL
+
+echo "
+-module(clean_release).
+-export([clean_release/1]).
+
+clean_release([ReleaseName]) ->
+ RelFile = atom_to_list(ReleaseName) ++ \".rel\",
+ case file:consult(RelFile) of
+ {ok, [{release, {RelName, RelVsn}, ErtsSpec, ReleaseSpecs}]} -> do_rest(RelFile, ReleaseSpecs);
+ {error, Reason} -> io:format(\"ERROR - Could not find file ~s~n\", [RelFile]), exit(Reason)
+ end,
+ os:cmd(\"cd ../;rm -rf \" ++ string:strip(os:cmd(\"basename `pwd`\"))).
+
+do_rest(RelFile, ReleaseSpecs) ->
+ io:format(\"Finding Orphans in ~p among current release specs ~p~n\", [RelFile, ReleaseSpecs]),
+ {ok, FileNameList} = file:list_dir(\"../\"),
+ Dirs = [FileName || FileName <- FileNameList, filelib:is_dir(\"../\" ++ FileName)] --
+ [string:strip(os:cmd(\"basename `pwd`\"), right, $\n)],
+ BigListOfReleaseSpecs = lists:foldl(fun(Dir, Acc) ->
+ OtherRelFile = \"../\" ++ Dir ++ \"/\" ++ RelFile,
+ io:format(\"Checking external release file ~p~n\", [OtherRelFile]),
+ case file:consult(OtherRelFile) of
+ {ok, [{release, {RelName, RelVsn}, ErtsSpec, ReleaseSpecs_}]} ->
+ Acc ++ ReleaseSpecs_;
+ _ ->
+ Acc
+ end end, [], Dirs),
+ Orphans = ReleaseSpecs -- BigListOfReleaseSpecs,
+ io:format(\"Removing orphan release specs ~p from ../../lib ~n\", [Orphans]),
+ lists:foreach(fun(Orphan) ->
+ os:cmd(\"rm -rf ../../lib/\" ++ atom_to_list(element(1, Orphan)) ++ \"-\" ++ element(2, Orphan))
+ end, Orphans).
+" > clean_release.erl
+
+erlc clean_release.erl
+
+CMD="erl -s clean_release clean_release $RELEASE_NAME -s erlang halt -noshell"
+$CMD