From 62e91a7bdd5511ce381269681426aa8d02079121 Mon Sep 17 00:00:00 2001 From: wangge Date: Sat, 5 Sep 2020 09:59:17 +0800 Subject: [PATCH] first commit --- erlang-rebar.spec | 96 ++ erlang-rebar.yaml | 4 + ...-templates-from-the-filesystem-first.patch | 25 + rebar-0002-Remove-bundled-mustache.patch | 267 +++++ rebar-0003-Remove-bundled-getopt.patch | 959 ++++++++++++++++++ ...0004-Allow-discarding-building-ports.patch | 26 + ...s-of-long-time-obsolete-escript-fold.patch | 24 + rebar-0006-remove-abnfc.patch | 166 +++ ...0007-Remove-support-for-gpb-compiler.patch | 174 ++++ rebar-0008-Remove-pre-R15B02-workaround.patch | 64 ++ ...09-Use-erlang-timestamp-0-explicitly.patch | 39 + rebar-0010-Try-shell-variable-VSN-first.patch | 25 + rebar-0011-Allow-ignoring-missing-deps.patch | 30 + ...-Drop-obsolete-crypto-rand_uniform-2.patch | 32 + rebar-0013-Remove-compat-random-modules.patch | 249 +++++ rebar-2.6.4.tar.gz | Bin 0 -> 213158 bytes 16 files changed, 2180 insertions(+) create mode 100644 erlang-rebar.spec create mode 100644 erlang-rebar.yaml create mode 100644 rebar-0001-Load-templates-from-the-filesystem-first.patch create mode 100644 rebar-0002-Remove-bundled-mustache.patch create mode 100644 rebar-0003-Remove-bundled-getopt.patch create mode 100644 rebar-0004-Allow-discarding-building-ports.patch create mode 100644 rebar-0005-Remove-any-traces-of-long-time-obsolete-escript-fold.patch create mode 100644 rebar-0006-remove-abnfc.patch create mode 100644 rebar-0007-Remove-support-for-gpb-compiler.patch create mode 100644 rebar-0008-Remove-pre-R15B02-workaround.patch create mode 100644 rebar-0009-Use-erlang-timestamp-0-explicitly.patch create mode 100644 rebar-0010-Try-shell-variable-VSN-first.patch create mode 100644 rebar-0011-Allow-ignoring-missing-deps.patch create mode 100644 rebar-0012-Drop-obsolete-crypto-rand_uniform-2.patch create mode 100644 rebar-0013-Remove-compat-random-modules.patch create mode 100644 rebar-2.6.4.tar.gz diff --git a/erlang-rebar.spec b/erlang-rebar.spec new file mode 100644 index 0000000..5dd2661 --- /dev/null +++ b/erlang-rebar.spec @@ -0,0 +1,96 @@ +%global realname rebar +%global upstream rebar +%global need_bootstrap_set 0 +%{!?need_bootstrap: %global need_bootstrap %{need_bootstrap_set}} +Name: erlang-%{realname} +Version: 2.6.4 +Release: 1 +BuildArch: noarch +Summary: Erlang Build Tools +License: MIT +URL: https://github.com/%{upstream}/%{realname} +Source0: https://github.com/%{upstream}/%{realname}/archive/%{version}/%{realname}-%{version}.tar.gz +Patch1: rebar-0001-Load-templates-from-the-filesystem-first.patch +Patch2: rebar-0002-Remove-bundled-mustache.patch +Patch3: rebar-0003-Remove-bundled-getopt.patch +Patch4: rebar-0004-Allow-discarding-building-ports.patch +Patch5: rebar-0005-Remove-any-traces-of-long-time-obsolete-escript-fold.patch +Patch6: rebar-0006-remove-abnfc.patch +Patch7: rebar-0007-Remove-support-for-gpb-compiler.patch +Patch8: rebar-0008-Remove-pre-R15B02-workaround.patch +Patch9: rebar-0009-Use-erlang-timestamp-0-explicitly.patch +Patch10: rebar-0010-Try-shell-variable-VSN-first.patch +Patch11: rebar-0011-Allow-ignoring-missing-deps.patch +Patch12: rebar-0012-Drop-obsolete-crypto-rand_uniform-2.patch +Patch13: rebar-0013-Remove-compat-random-modules.patch +%if 0%{?need_bootstrap} < 1 +BuildRequires: erlang-rebar erlang-getopt +%else +BuildRequires: erlang-asn1 erlang-common_test erlang-compiler erlang-crypto +BuildRequires: erlang-dialyzer erlang-diameter erlang-edoc erlang-eflame +BuildRequires: erlang-erl_interface erlang-erlydtl erlang-erts erlang-eunit erlang-getopt +BuildRequires: erlang-kernel erlang-lfe erlang-mustache erlang-neotoma erlang-parsetools +BuildRequires: erlang-protobuffs erlang-reltool erlang-rpm-macros erlang-sasl erlang-snmp +BuildRequires: erlang-stdlib erlang-syntax_tools erlang-tools erlang-triq +%endif +Requires: erlang-common_test erlang-erl_interface erlang-parsetools +Requires: erlang-rpm-macros >= 0.2.4 +Provides: %{realname} = %{version}-%{release} +%description +Erlang Build Tools. + +%prep +%setup -q -n %{realname}-%{version} +touch ./rebar.escript +cat <>./rebar.escript +#!/usr/bin/env escript +%%%%! -noshell -noinput + +main (Args) -> + rebar:main(Args). +EOT +%patch1 -p1 -b .load_templates_from_fs +%patch2 -p1 -b .remove_bundled_mustache +%if 0%{?need_bootstrap} < 1 +%patch3 -p1 -b .remove_bundled_getopt +%endif +%patch4 -p1 -b .allow_discarding_ports +%patch5 -p1 -b .remove_escript_foldl_3 +%patch6 -p1 -b .remove_abnfc +%patch7 -p1 -b .remove_gpb +%patch8 -p1 -b .remove_pre_R15B02 +%patch9 -p1 -b .erlang_timestamp_0 +%patch10 -p1 -b .vsn_override +%patch11 -p1 -b .skip_deps_checking +%patch12 -p1 -b .erl20 +%patch13 -p1 -b .erl22_compat + +%build +%if 0%{?need_bootstrap} < 1 +%{erlang_compile} +%else +./bootstrap +./rebar compile -v +%endif + +%install +%{erlang_install} +install -D -p -m 0755 %{_builddir}/%{realname}-%{version}/rebar.escript %{buildroot}%{_bindir}/rebar +cp -a priv %{buildroot}%{_erllibdir}/%{realname}-%{version}/ + +%check +%if 0%{?need_bootstrap} < 1 +install -D -p -m 0755 %{_builddir}/%{realname}-%{version}/rebar.escript ./rebar +sed -i -e "s,-noshell -noinput,-noshell -noinput -pa .,g" ./rebar +%{rebar_eunit} +%endif + +%files +%doc README.md THANKS rebar.config.sample +%license LICENSE +%{_bindir}/rebar +%{erlang_appdir}/ + +%changelog +* Fri Sep 4 2020 Ge Wang - 2.6.4-1 +- Package init diff --git a/erlang-rebar.yaml b/erlang-rebar.yaml new file mode 100644 index 0000000..6e0356a --- /dev/null +++ b/erlang-rebar.yaml @@ -0,0 +1,4 @@ +version_contrl: github +src_repo: rebar/rebar +tag_prefix: NA +seperator: "." diff --git a/rebar-0001-Load-templates-from-the-filesystem-first.patch b/rebar-0001-Load-templates-from-the-filesystem-first.patch new file mode 100644 index 0000000..3b9dd1c --- /dev/null +++ b/rebar-0001-Load-templates-from-the-filesystem-first.patch @@ -0,0 +1,25 @@ +From: Peter Lemenkov +Date: Mon, 4 Mar 2013 19:03:03 +0400 +Subject: [PATCH] Load templates from the filesystem first. + +Signed-off-by: Peter Lemenkov + +diff --git a/src/rebar_templater.erl b/src/rebar_templater.erl +index 085ac1c..7e8554e 100644 +--- a/src/rebar_templater.erl ++++ b/src/rebar_templater.erl +@@ -241,12 +241,13 @@ find_escript_templates(Files) -> + re:run(Name, ?TEMPLATE_RE, [{capture, none}]) == match]. + + find_disk_templates(Config) -> ++ BaseTemplates = rebar_utils:find_files(code:priv_dir(rebar) ++ "/templates", ?TEMPLATE_RE), + OtherTemplates = find_other_templates(Config), + HomeTemplates = filename:join([os:getenv("HOME"), ".rebar", "templates"]), + HomeFiles = rebar_utils:find_files_by_ext(HomeTemplates, ".template"), + Recursive = rebar_config:is_recursive(Config), + LocalFiles = rebar_utils:find_files_by_ext(".", ".template", Recursive), +- [{file, F} || F <- OtherTemplates ++ HomeFiles ++ LocalFiles]. ++ [{file, F} || F <- BaseTemplates ++ OtherTemplates ++ HomeFiles ++ LocalFiles]. + + find_other_templates(Config) -> + case rebar_config:get_global(Config, template_dir, undefined) of diff --git a/rebar-0002-Remove-bundled-mustache.patch b/rebar-0002-Remove-bundled-mustache.patch new file mode 100644 index 0000000..0982231 --- /dev/null +++ b/rebar-0002-Remove-bundled-mustache.patch @@ -0,0 +1,267 @@ +From: Filip Andres +Date: Fri, 3 Jul 2015 10:46:48 +0200 +Subject: [PATCH] Remove bundled mustache + + +diff --git a/ebin/rebar.app b/ebin/rebar.app +index 9449e1e..d3f8e42 100644 +--- a/ebin/rebar.app ++++ b/ebin/rebar.app +@@ -45,7 +45,6 @@ + rebar_xref, + rebar_metacmds, + rebar_getopt, +- rebar_mustache, + rmemo, + rebar_rand_compat ]}, + {registered, []}, +diff --git a/src/rebar_mustache.erl b/src/rebar_mustache.erl +deleted file mode 100644 +index 9016c0f..0000000 +--- a/src/rebar_mustache.erl ++++ /dev/null +@@ -1,230 +0,0 @@ +-%% The MIT License +-%% +-%% Copyright (c) 2009 Tom Preston-Werner +-%% +-%% 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. +- +-%% See the README at http://github.com/mojombo/mustache.erl for additional +-%% documentation and usage examples. +- +--module(rebar_mustache). %% v0.1.0 +--author("Tom Preston-Werner"). +--export([compile/1, compile/2, render/1, render/2, render/3, get/2, get/3, escape/1, start/1]). +- +--record(mstate, {mod = undefined, +- section_re = undefined, +- tag_re = undefined}). +- +--define(MUSTACHE_STR, "rebar_mustache"). +- +-compile(Body) when is_list(Body) -> +- State = #mstate{}, +- CompiledTemplate = pre_compile(Body, State), +- % io:format("~p~n~n", [CompiledTemplate]), +- % io:format(CompiledTemplate ++ "~n", []), +- {ok, Tokens, _} = erl_scan:string(CompiledTemplate), +- {ok, [Form]} = erl_parse:parse_exprs(Tokens), +- Bindings = erl_eval:new_bindings(), +- {value, Fun, _} = erl_eval:expr(Form, Bindings), +- Fun; +-compile(Mod) -> +- TemplatePath = template_path(Mod), +- compile(Mod, TemplatePath). +- +-compile(Mod, File) -> +- code:purge(Mod), +- {module, _} = code:load_file(Mod), +- {ok, TemplateBin} = file:read_file(File), +- Template = re:replace(TemplateBin, "\"", "\\\\\"", [global, {return,list}]), +- State = #mstate{mod = Mod}, +- CompiledTemplate = pre_compile(Template, State), +- % io:format("~p~n~n", [CompiledTemplate]), +- % io:format(CompiledTemplate ++ "~n", []), +- {ok, Tokens, _} = erl_scan:string(CompiledTemplate), +- {ok, [Form]} = erl_parse:parse_exprs(Tokens), +- Bindings = erl_eval:new_bindings(), +- {value, Fun, _} = erl_eval:expr(Form, Bindings), +- Fun. +- +-render(Mod) -> +- TemplatePath = template_path(Mod), +- render(Mod, TemplatePath). +- +-render(Body, Ctx) when is_list(Body) -> +- TFun = compile(Body), +- render(undefined, TFun, Ctx); +-render(Mod, File) when is_list(File) -> +- render(Mod, File, dict:new()); +-render(Mod, CompiledTemplate) -> +- render(Mod, CompiledTemplate, dict:new()). +- +-render(Mod, File, Ctx) when is_list(File) -> +- CompiledTemplate = compile(Mod, File), +- render(Mod, CompiledTemplate, Ctx); +-render(Mod, CompiledTemplate, Ctx) -> +- Ctx2 = dict:store('__mod__', Mod, Ctx), +- lists:flatten(CompiledTemplate(Ctx2)). +- +-pre_compile(T, State) -> +- SectionRE = "\{\{\#([^\}]*)}}\s*(.+?){{\/\\1\}\}\s*", +- {ok, CompiledSectionRE} = re:compile(SectionRE, [dotall]), +- TagRE = "\{\{(#|=|!|<|>|\{)?(.+?)\\1?\}\}+", +- {ok, CompiledTagRE} = re:compile(TagRE, [dotall]), +- State2 = State#mstate{section_re = CompiledSectionRE, tag_re = CompiledTagRE}, +- "fun(Ctx) -> " ++ +- "CFun = fun(A, B) -> A end, " ++ +- compiler(T, State2) ++ " end.". +- +-compiler(T, State) -> +- Res = re:run(T, State#mstate.section_re), +- case Res of +- {match, [{M0, M1}, {N0, N1}, {C0, C1}]} -> +- Front = string:substr(T, 1, M0), +- Back = string:substr(T, M0 + M1 + 1), +- Name = string:substr(T, N0 + 1, N1), +- Content = string:substr(T, C0 + 1, C1), +- "[" ++ compile_tags(Front, State) ++ +- " | [" ++ compile_section(Name, Content, State) ++ +- " | [" ++ compiler(Back, State) ++ "]]]"; +- nomatch -> +- compile_tags(T, State) +- end. +- +-compile_section(Name, Content, State) -> +- Mod = State#mstate.mod, +- Result = compiler(Content, State), +- "fun() -> " ++ +- "case " ++ ?MUSTACHE_STR ++ ":get(" ++ Name ++ ", Ctx, " ++ atom_to_list(Mod) ++ ") of " ++ +- "\"true\" -> " ++ +- Result ++ "; " ++ +- "\"false\" -> " ++ +- "[]; " ++ +- "List when is_list(List) -> " ++ +- "[fun(Ctx) -> " ++ Result ++ " end(dict:merge(CFun, SubCtx, Ctx)) || SubCtx <- List]; " ++ +- "Else -> " ++ +- "throw({template, io_lib:format(\"Bad context for ~p: ~p\", [" ++ Name ++ ", Else])}) " ++ +- "end " ++ +- "end()". +- +-compile_tags(T, State) -> +- Res = re:run(T, State#mstate.tag_re), +- case Res of +- {match, [{M0, M1}, K, {C0, C1}]} -> +- Front = string:substr(T, 1, M0), +- Back = string:substr(T, M0 + M1 + 1), +- Content = string:substr(T, C0 + 1, C1), +- Kind = tag_kind(T, K), +- Result = compile_tag(Kind, Content, State), +- "[\"" ++ Front ++ +- "\" | [" ++ Result ++ +- " | " ++ compile_tags(Back, State) ++ "]]"; +- nomatch -> +- "[\"" ++ T ++ "\"]" +- end. +- +-tag_kind(_T, {-1, 0}) -> +- none; +-tag_kind(T, {K0, K1}) -> +- string:substr(T, K0 + 1, K1). +- +-compile_tag(none, Content, State) -> +- Mod = State#mstate.mod, +- ?MUSTACHE_STR ++ ":escape(" ++ ?MUSTACHE_STR ++ ":get(" ++ Content ++ ", Ctx, " ++ atom_to_list(Mod) ++ "))"; +-compile_tag("{", Content, State) -> +- Mod = State#mstate.mod, +- ?MUSTACHE_STR ++ ":get(" ++ Content ++ ", Ctx, " ++ atom_to_list(Mod) ++ ")"; +-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) -> +- 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), +- get(list_to_atom(Key), Ctx, Mod); +-get(Key, Ctx) -> +- {ok, Mod} = dict:find('__mod__', Ctx), +- get(Key, Ctx, Mod). +- +-get(Key, Ctx, Mod) when is_list(Key) -> +- get(list_to_atom(Key), Ctx, Mod); +-get(Key, Ctx, Mod) -> +- case dict:find(Key, Ctx) of +- {ok, Val} -> +- % io:format("From Ctx {~p, ~p}~n", [Key, Val]), +- to_s(Val); +- error -> +- case erlang:function_exported(Mod, Key, 1) of +- true -> +- Val = to_s(Mod:Key(Ctx)), +- % io:format("From Mod/1 {~p, ~p}~n", [Key, Val]), +- Val; +- false -> +- case erlang:function_exported(Mod, Key, 0) of +- true -> +- Val = to_s(Mod:Key()), +- % io:format("From Mod/0 {~p, ~p}~n", [Key, Val]), +- Val; +- false -> +- [] +- end +- end +- end. +- +-to_s(Val) when is_integer(Val) -> +- integer_to_list(Val); +-to_s(Val) when is_float(Val) -> +- io_lib:format("~.2f", [Val]); +-to_s(Val) when is_atom(Val) -> +- atom_to_list(Val); +-to_s(Val) -> +- Val. +- +-escape(HTML) -> +- escape(HTML, []). +- +-escape([], Acc) -> +- lists:reverse(Acc); +-escape(["<" | Rest], Acc) -> +- escape(Rest, lists:reverse("<", Acc)); +-escape([">" | Rest], Acc) -> +- escape(Rest, lists:reverse(">", Acc)); +-escape(["&" | Rest], Acc) -> +- escape(Rest, lists:reverse("&", Acc)); +-escape([X | Rest], Acc) -> +- escape(Rest, [X | Acc]). +- +-%%--------------------------------------------------------------------------- +- +-start([T]) -> +- Out = render(list_to_atom(T)), +- io:format(Out ++ "~n", []). +diff --git a/src/rebar_templater.erl b/src/rebar_templater.erl +index 7e8554e..2d20e86 100644 +--- a/src/rebar_templater.erl ++++ b/src/rebar_templater.erl +@@ -102,8 +102,7 @@ render(Bin, Context) -> + %% Be sure to escape any double-quotes before rendering... + ReOpts = [global, {return, list}], + Str0 = re:replace(Bin, "\\\\", "\\\\\\", ReOpts), +- Str1 = re:replace(Str0, "\"", "\\\\\"", ReOpts), +- rebar_mustache:render(Str1, Context). ++ mustache:render(Str0, Context). + + %% =================================================================== + %% Internal functions diff --git a/rebar-0003-Remove-bundled-getopt.patch b/rebar-0003-Remove-bundled-getopt.patch new file mode 100644 index 0000000..68047d1 --- /dev/null +++ b/rebar-0003-Remove-bundled-getopt.patch @@ -0,0 +1,959 @@ +From: Filip Andres +Date: Fri, 3 Jul 2015 10:56:26 +0200 +Subject: [PATCH] Remove bundled getopt + + +diff --git a/ebin/rebar.app b/ebin/rebar.app +index d3f8e42..986f12f 100644 +--- a/ebin/rebar.app ++++ b/ebin/rebar.app +@@ -44,7 +44,6 @@ + rebar_utils, + rebar_xref, + rebar_metacmds, +- rebar_getopt, + rmemo, + rebar_rand_compat ]}, + {registered, []}, +diff --git a/src/rebar.erl b/src/rebar.erl +index 2eb608d..91593c2 100644 +--- a/src/rebar.erl ++++ b/src/rebar.erl +@@ -236,7 +236,7 @@ run_aux(BaseConfig, Commands) -> + %% + help() -> + OptSpecList = option_spec_list(), +- rebar_getopt:usage(OptSpecList, "rebar", ++ getopt:usage(OptSpecList, "rebar", + "[var=value,...] ", + [{"var=value", "rebar global variables (e.g. force=1)"}, + {"command", "Command to run (e.g. compile)"}]), +@@ -301,7 +301,7 @@ help() -> + parse_args(RawArgs) -> + %% Parse getopt options + OptSpecList = option_spec_list(), +- case rebar_getopt:parse(OptSpecList, RawArgs) of ++ case getopt:parse(OptSpecList, RawArgs) of + {ok, Args} -> + Args; + {error, {Reason, Data}} -> +diff --git a/src/rebar_getopt.erl b/src/rebar_getopt.erl +deleted file mode 100644 +index 79b871d..0000000 +--- a/src/rebar_getopt.erl ++++ /dev/null +@@ -1,914 +0,0 @@ +-%%%------------------------------------------------------------------- +-%%% @author Juan Jose Comellas +-%%% @copyright (C) 2009 Juan Jose Comellas +-%%% @doc Parses command line options with a format similar to that of GNU getopt. +-%%% @end +-%%% +-%%% This source file is subject to the New BSD License. You should have received +-%%% a copy of the New BSD license with this software. If not, it can be +-%%% retrieved from: http://www.opensource.org/licenses/bsd-license.php +-%%%------------------------------------------------------------------- +--module(rebar_getopt). +--author('juanjo@comellas.org'). +- +--export([parse/2, check/2, parse_and_check/2, format_error/2, +- usage/2, usage/3, usage/4, tokenize/1]). +--export([usage_cmd_line/2]). +- +--define(LINE_LENGTH, 75). +--define(MIN_USAGE_COMMAND_LINE_OPTION_LENGTH, 25). +- +-%% Position of each field in the option specification tuple. +--define(OPT_NAME, 1). +--define(OPT_SHORT, 2). +--define(OPT_LONG, 3). +--define(OPT_ARG, 4). +--define(OPT_HELP, 5). +- +--define(IS_OPT_SPEC(Opt), (tuple_size(Opt) =:= ?OPT_HELP)). +--define(IS_WHITESPACE(Char), ((Char) =:= $\s orelse (Char) =:= $\t orelse +- (Char) =:= $\n orelse (Char) =:= $\r)). +- +-%% Atom indicating the data type that an argument can be converted to. +--type arg_type() :: 'atom' | 'binary' | 'boolean' | 'float' | 'integer' | 'string'. +-%% Data type that an argument can be converted to. +--type arg_value() :: atom() | binary() | boolean() | float() | integer() | string(). +-%% Argument specification. +--type arg_spec() :: arg_type() | {arg_type(), arg_value()} | undefined. +-%% Option type and optional default argument. +--type simple_option() :: atom(). +--type compound_option() :: {atom(), arg_value()}. +--type option() :: simple_option() | compound_option(). +-%% Command line option specification. +--type option_spec() :: { +- Name :: atom(), +- Short :: char() | undefined, +- Long :: string() | undefined, +- ArgSpec :: arg_spec(), +- Help :: string() | undefined +- }. +-%% Output streams +--type output_stream() :: 'standard_io' | 'standard_error'. +- +-%% For internal use +--type usage_line() :: {OptionText :: string(), HelpText :: string()}. +--type usage_line_with_length() :: {OptionLength :: non_neg_integer(), OptionText :: string(), HelpText :: string()}. +- +- +--export_type([arg_type/0, arg_value/0, arg_spec/0, simple_option/0, compound_option/0, option/0, option_spec/0]). +- +- +-%% @doc Parse the command line options and arguments returning a list of tuples +-%% and/or atoms using the Erlang convention for sending options to a +-%% function. Additionally perform check if all required options (the ones +-%% without default values) are present. The function is a combination of +-%% two calls: parse/2 and check/2. +--spec parse_and_check([option_spec()], string() | [string()]) -> +- {ok, {[option()], [string()]}} | {error, {Reason :: atom(), Data :: term()}}. +-parse_and_check(OptSpecList, CmdLine) when is_list(OptSpecList), is_list(CmdLine) -> +- case parse(OptSpecList, CmdLine) of +- {ok, {Opts, _}} = Result -> +- case check(OptSpecList, Opts) of +- ok -> Result; +- Error -> Error +- end; +- Error -> +- Error +- end. +- +-%% @doc Check the parsed command line arguments returning ok if all required +-%% options (i.e. that don't have defaults) are present, and returning +-%% error otherwise. +--spec check([option_spec()], [option()]) -> +- ok | {error, {Reason :: atom(), Option :: atom()}}. +-check(OptSpecList, ParsedOpts) when is_list(OptSpecList), is_list(ParsedOpts) -> +- try +- RequiredOpts = [Name || {Name, _, _, Arg, _} <- OptSpecList, +- not is_tuple(Arg) andalso Arg =/= undefined], +- lists:foreach(fun (Option) -> +- case proplists:is_defined(Option, ParsedOpts) of +- true -> +- ok; +- false -> +- throw({error, {missing_required_option, Option}}) +- end +- end, RequiredOpts) +- catch +- _:Error -> +- Error +- end. +- +- +-%% @doc Parse the command line options and arguments returning a list of tuples +-%% and/or atoms using the Erlang convention for sending options to a +-%% function. +--spec parse([option_spec()], string() | [string()]) -> +- {ok, {[option()], [string()]}} | {error, {Reason :: atom(), Data :: term()}}. +-parse(OptSpecList, CmdLine) when is_list(CmdLine) -> +- try +- Args = if +- is_integer(hd(CmdLine)) -> tokenize(CmdLine); +- true -> CmdLine +- end, +- parse(OptSpecList, [], [], 0, Args) +- catch +- throw: {error, {_Reason, _Data}} = Error -> +- Error +- end. +- +- +--spec parse([option_spec()], [option()], [string()], integer(), [string()]) -> +- {ok, {[option()], [string()]}}. +-%% Process the option terminator. +-parse(OptSpecList, OptAcc, ArgAcc, _ArgPos, ["--" | Tail]) -> +- %% Any argument present after the terminator is not considered an option. +- {ok, {lists:reverse(append_default_options(OptSpecList, OptAcc)), lists:reverse(ArgAcc, Tail)}}; +-%% Process long options. +-parse(OptSpecList, OptAcc, ArgAcc, ArgPos, ["--" ++ OptArg = OptStr | Tail]) -> +- parse_long_option(OptSpecList, OptAcc, ArgAcc, ArgPos, Tail, OptStr, OptArg); +-%% Process short options. +-parse(OptSpecList, OptAcc, ArgAcc, ArgPos, ["-" ++ ([_Char | _] = OptArg) = OptStr | Tail]) -> +- parse_short_option(OptSpecList, OptAcc, ArgAcc, ArgPos, Tail, OptStr, OptArg); +-%% Process non-option arguments. +-parse(OptSpecList, OptAcc, ArgAcc, ArgPos, [Arg | Tail]) -> +- case find_non_option_arg(OptSpecList, ArgPos) of +- {value, OptSpec} when ?IS_OPT_SPEC(OptSpec) -> +- parse(OptSpecList, add_option_with_arg(OptSpec, Arg, OptAcc), ArgAcc, ArgPos + 1, Tail); +- false -> +- parse(OptSpecList, OptAcc, [Arg | ArgAcc], ArgPos, Tail) +- end; +-parse(OptSpecList, OptAcc, ArgAcc, _ArgPos, []) -> +- %% Once we have completed gathering the options we add the ones that were +- %% not present but had default arguments in the specification. +- {ok, {lists:reverse(append_default_options(OptSpecList, OptAcc)), lists:reverse(ArgAcc)}}. +- +- +-%% @doc Format the error code returned by prior call to parse/2 or check/2. +--spec format_error([option_spec()], {error, {Reason :: atom(), Data :: term()}} | +- {Reason :: term(), Data :: term()}) -> string(). +-format_error(OptSpecList, {error, Reason}) -> +- format_error(OptSpecList, Reason); +-format_error(OptSpecList, {missing_required_option, Name}) -> +- {_Name, Short, Long, _Type, _Help} = lists:keyfind(Name, 1, OptSpecList), +- lists:flatten(["missing required option: -", [Short], " (", to_string(Long), ")"]); +-format_error(_OptSpecList, {invalid_option, OptStr}) -> +- lists:flatten(["invalid option: ", to_string(OptStr)]); +-format_error(_OptSpecList, {invalid_option_arg, {Name, Arg}}) -> +- lists:flatten(["option \'", to_string(Name) ++ "\' has invalid argument: ", to_string(Arg)]); +-format_error(_OptSpecList, {invalid_option_arg, OptStr}) -> +- lists:flatten(["invalid option argument: ", to_string(OptStr)]); +-format_error(_OptSpecList, {Reason, Data}) -> +- lists:flatten([to_string(Reason), " ", to_string(Data)]). +- +- +-%% @doc Parse a long option, add it to the option accumulator and continue +-%% parsing the rest of the arguments recursively. +-%% A long option can have the following syntax: +-%% --foo Single option 'foo', no argument +-%% --foo=bar Single option 'foo', argument "bar" +-%% --foo bar Single option 'foo', argument "bar" +--spec parse_long_option([option_spec()], [option()], [string()], integer(), [string()], string(), string()) -> +- {ok, {[option()], [string()]}}. +-parse_long_option(OptSpecList, OptAcc, ArgAcc, ArgPos, Args, OptStr, OptArg) -> +- case split_assigned_arg(OptArg) of +- {Long, Arg} -> +- %% Get option that has its argument within the same string +- %% separated by an equal ('=') character (e.g. "--port=1000"). +- parse_long_option_assigned_arg(OptSpecList, OptAcc, ArgAcc, ArgPos, Args, OptStr, Long, Arg); +- +- Long -> +- case lists:keyfind(Long, ?OPT_LONG, OptSpecList) of +- {Name, _Short, Long, undefined, _Help} -> +- parse(OptSpecList, [Name | OptAcc], ArgAcc, ArgPos, Args); +- +- {_Name, _Short, Long, _ArgSpec, _Help} = OptSpec -> +- %% The option argument string is empty, but the option requires +- %% an argument, so we look into the next string in the list. +- %% e.g ["--port", "1000"] +- parse_long_option_next_arg(OptSpecList, OptAcc, ArgAcc, ArgPos, Args, OptSpec); +- false -> +- throw({error, {invalid_option, OptStr}}) +- end +- end. +- +- +-%% @doc Parse an option where the argument is 'assigned' in the same string using +-%% the '=' character, add it to the option accumulator and continue parsing the +-%% rest of the arguments recursively. This syntax is only valid for long options. +--spec parse_long_option_assigned_arg([option_spec()], [option()], [string()], integer(), +- [string()], string(), string(), string()) -> +- {ok, {[option()], [string()]}}. +-parse_long_option_assigned_arg(OptSpecList, OptAcc, ArgAcc, ArgPos, Args, OptStr, Long, Arg) -> +- case lists:keyfind(Long, ?OPT_LONG, OptSpecList) of +- {_Name, _Short, Long, ArgSpec, _Help} = OptSpec -> +- case ArgSpec of +- undefined -> +- throw({error, {invalid_option_arg, OptStr}}); +- _ -> +- parse(OptSpecList, add_option_with_assigned_arg(OptSpec, Arg, OptAcc), ArgAcc, ArgPos, Args) +- end; +- false -> +- throw({error, {invalid_option, OptStr}}) +- end. +- +- +-%% @doc Split an option string that may contain an option with its argument +-%% separated by an equal ('=') character (e.g. "port=1000"). +--spec split_assigned_arg(string()) -> {Name :: string(), Arg :: string()} | string(). +-split_assigned_arg(OptStr) -> +- split_assigned_arg(OptStr, OptStr, []). +- +-split_assigned_arg(_OptStr, "=" ++ Tail, Acc) -> +- {lists:reverse(Acc), Tail}; +-split_assigned_arg(OptStr, [Char | Tail], Acc) -> +- split_assigned_arg(OptStr, Tail, [Char | Acc]); +-split_assigned_arg(OptStr, [], _Acc) -> +- OptStr. +- +- +-%% @doc Retrieve the argument for an option from the next string in the list of +-%% command-line parameters or set the value of the argument from the argument +-%% specification (for boolean and integer arguments), if possible. +-parse_long_option_next_arg(OptSpecList, OptAcc, ArgAcc, ArgPos, Args, {Name, _Short, _Long, ArgSpec, _Help} = OptSpec) -> +- ArgSpecType = arg_spec_type(ArgSpec), +- case Args =:= [] orelse is_implicit_arg(ArgSpecType, hd(Args)) of +- true -> +- parse(OptSpecList, add_option_with_implicit_arg(OptSpec, OptAcc), ArgAcc, ArgPos, Args); +- false -> +- [Arg | Tail] = Args, +- try +- parse(OptSpecList, [{Name, to_type(ArgSpecType, Arg)} | OptAcc], ArgAcc, ArgPos, Tail) +- catch +- error:_ -> +- throw({error, {invalid_option_arg, {Name, Arg}}}) +- end +- end. +- +- +-%% @doc Parse a short option, add it to the option accumulator and continue +-%% parsing the rest of the arguments recursively. +-%% A short option can have the following syntax: +-%% -a Single option 'a', no argument or implicit boolean argument +-%% -a foo Single option 'a', argument "foo" +-%% -afoo Single option 'a', argument "foo" +-%% -abc Multiple options: 'a'; 'b'; 'c' +-%% -bcafoo Multiple options: 'b'; 'c'; 'a' with argument "foo" +-%% -aaa Multiple repetitions of option 'a' (only valid for options with integer arguments) +--spec parse_short_option([option_spec()], [option()], [string()], integer(), [string()], string(), string()) -> +- {ok, {[option()], [string()]}}. +-parse_short_option(OptSpecList, OptAcc, ArgAcc, ArgPos, Args, OptStr, OptArg) -> +- parse_short_option(OptSpecList, OptAcc, ArgAcc, ArgPos, Args, OptStr, first, OptArg). +- +-parse_short_option(OptSpecList, OptAcc, ArgAcc, ArgPos, Args, OptStr, OptPos, [Short | Arg]) -> +- case lists:keyfind(Short, ?OPT_SHORT, OptSpecList) of +- {Name, Short, _Long, undefined, _Help} -> +- parse_short_option(OptSpecList, [Name | OptAcc], ArgAcc, ArgPos, Args, OptStr, first, Arg); +- +- {_Name, Short, _Long, ArgSpec, _Help} = OptSpec -> +- %% The option has a specification, so it requires an argument. +- case Arg of +- [] -> +- %% The option argument string is empty, but the option requires +- %% an argument, so we look into the next string in the list. +- parse_short_option_next_arg(OptSpecList, OptAcc, ArgAcc, ArgPos, Args, OptSpec, OptPos); +- +- _ -> +- case is_valid_arg(ArgSpec, Arg) of +- true -> +- parse(OptSpecList, add_option_with_arg(OptSpec, Arg, OptAcc), ArgAcc, ArgPos, Args); +- _ -> +- NewOptAcc = case OptPos of +- first -> add_option_with_implicit_arg(OptSpec, OptAcc); +- _ -> add_option_with_implicit_incrementable_arg(OptSpec, OptAcc) +- end, +- parse_short_option(OptSpecList, NewOptAcc, ArgAcc, ArgPos, Args, OptStr, next, Arg) +- end +- end; +- +- false -> +- throw({error, {invalid_option, OptStr}}) +- end; +-parse_short_option(OptSpecList, OptAcc, ArgAcc, ArgPos, Args, _OptStr, _OptPos, []) -> +- parse(OptSpecList, OptAcc, ArgAcc, ArgPos, Args). +- +- +-%% @doc Retrieve the argument for an option from the next string in the list of +-%% command-line parameters or set the value of the argument from the argument +-%% specification (for boolean and integer arguments), if possible. +-parse_short_option_next_arg(OptSpecList, OptAcc, ArgAcc, ArgPos, Args, {Name, _Short, _Long, ArgSpec, _Help} = OptSpec, OptPos) -> +- case Args =:= [] orelse is_implicit_arg(ArgSpec, hd(Args)) of +- true when OptPos =:= first -> +- parse(OptSpecList, add_option_with_implicit_arg(OptSpec, OptAcc), ArgAcc, ArgPos, Args); +- true -> +- parse(OptSpecList, add_option_with_implicit_incrementable_arg(OptSpec, OptAcc), ArgAcc, ArgPos, Args); +- false -> +- [Arg | Tail] = Args, +- try +- parse(OptSpecList, [{Name, to_type(ArgSpec, Arg)} | OptAcc], ArgAcc, ArgPos, Tail) +- catch +- error:_ -> +- throw({error, {invalid_option_arg, {Name, Arg}}}) +- end +- end. +- +- +-%% @doc Find the option for the discrete argument in position specified in the +-%% Pos argument. +--spec find_non_option_arg([option_spec()], integer()) -> {value, option_spec()} | false. +-find_non_option_arg([{_Name, undefined, undefined, _ArgSpec, _Help} = OptSpec | _Tail], 0) -> +- {value, OptSpec}; +-find_non_option_arg([{_Name, undefined, undefined, _ArgSpec, _Help} | Tail], Pos) -> +- find_non_option_arg(Tail, Pos - 1); +-find_non_option_arg([_Head | Tail], Pos) -> +- find_non_option_arg(Tail, Pos); +-find_non_option_arg([], _Pos) -> +- false. +- +- +-%% @doc Append options that were not present in the command line arguments with +-%% their default arguments. +--spec append_default_options([option_spec()], [option()]) -> [option()]. +-append_default_options([{Name, _Short, _Long, {_Type, DefaultArg}, _Help} | Tail], OptAcc) -> +- append_default_options(Tail, +- case lists:keymember(Name, 1, OptAcc) of +- false -> +- [{Name, DefaultArg} | OptAcc]; +- _ -> +- OptAcc +- end); +-%% For options with no default argument. +-append_default_options([_Head | Tail], OptAcc) -> +- append_default_options(Tail, OptAcc); +-append_default_options([], OptAcc) -> +- OptAcc. +- +- +-%% @doc Add an option with argument converting it to the data type indicated by the +-%% argument specification. +--spec add_option_with_arg(option_spec(), string(), [option()]) -> [option()]. +-add_option_with_arg({Name, _Short, _Long, ArgSpec, _Help} = OptSpec, Arg, OptAcc) -> +- case is_valid_arg(ArgSpec, Arg) of +- true -> +- try +- [{Name, to_type(ArgSpec, Arg)} | OptAcc] +- catch +- error:_ -> +- throw({error, {invalid_option_arg, {Name, Arg}}}) +- end; +- false -> +- add_option_with_implicit_arg(OptSpec, OptAcc) +- end. +- +- +-%% @doc Add an option with argument that was part of an assignment expression +-%% (e.g. "--verbose=3") converting it to the data type indicated by the +-%% argument specification. +--spec add_option_with_assigned_arg(option_spec(), string(), [option()]) -> [option()]. +-add_option_with_assigned_arg({Name, _Short, _Long, ArgSpec, _Help}, Arg, OptAcc) -> +- try +- [{Name, to_type(ArgSpec, Arg)} | OptAcc] +- catch +- error:_ -> +- throw({error, {invalid_option_arg, {Name, Arg}}}) +- end. +- +- +-%% @doc Add an option that required an argument but did not have one. Some data +-%% types (boolean, integer) allow implicit or assumed arguments. +--spec add_option_with_implicit_arg(option_spec(), [option()]) -> [option()]. +-add_option_with_implicit_arg({Name, _Short, _Long, ArgSpec, _Help}, OptAcc) -> +- case arg_spec_type(ArgSpec) of +- boolean -> +- %% Special case for boolean arguments: if there is no argument we +- %% set the value to 'true'. +- [{Name, true} | OptAcc]; +- integer -> +- %% Special case for integer arguments: if the option had not been set +- %% before we set the value to 1. This is needed to support options like +- %% "-v" to return something like {verbose, 1}. +- [{Name, 1} | OptAcc]; +- _ -> +- throw({error, {missing_option_arg, Name}}) +- end. +- +- +-%% @doc Add an option with an implicit or assumed argument. +--spec add_option_with_implicit_incrementable_arg(option_spec() | arg_spec(), [option()]) -> [option()]. +-add_option_with_implicit_incrementable_arg({Name, _Short, _Long, ArgSpec, _Help}, OptAcc) -> +- case arg_spec_type(ArgSpec) of +- boolean -> +- %% Special case for boolean arguments: if there is no argument we +- %% set the value to 'true'. +- [{Name, true} | OptAcc]; +- integer -> +- %% Special case for integer arguments: if the option had not been set +- %% before we set the value to 1; if not we increment the previous value +- %% the option had. This is needed to support options like "-vvv" to +- %% return something like {verbose, 3}. +- case OptAcc of +- [{Name, Count} | Tail] -> +- [{Name, Count + 1} | Tail]; +- _ -> +- [{Name, 1} | OptAcc] +- end; +- _ -> +- throw({error, {missing_option_arg, Name}}) +- end. +- +- +-%% @doc Retrieve the data type form an argument specification. +--spec arg_spec_type(arg_spec()) -> arg_type() | undefined. +-arg_spec_type({Type, _DefaultArg}) -> +- Type; +-arg_spec_type(Type) when is_atom(Type) -> +- Type. +- +- +-%% @doc Convert an argument string to its corresponding data type. +--spec to_type(arg_spec() | arg_type(), string()) -> arg_value(). +-to_type({Type, _DefaultArg}, Arg) -> +- to_type(Type, Arg); +-to_type(binary, Arg) -> +- list_to_binary(Arg); +-to_type(atom, Arg) -> +- list_to_atom(Arg); +-to_type(integer, Arg) -> +- list_to_integer(Arg); +-to_type(float, Arg) -> +- list_to_float(Arg); +-to_type(boolean, Arg) -> +- LowerArg = string:to_lower(Arg), +- case is_arg_true(LowerArg) of +- true -> +- true; +- _ -> +- case is_arg_false(LowerArg) of +- true -> +- false; +- false -> +- erlang:error(badarg) +- end +- end; +-to_type(_Type, Arg) -> +- Arg. +- +- +--spec is_arg_true(string()) -> boolean(). +-is_arg_true(Arg) -> +- (Arg =:= "true") orelse (Arg =:= "t") orelse +- (Arg =:= "yes") orelse (Arg =:= "y") orelse +- (Arg =:= "on") orelse (Arg =:= "enabled") orelse +- (Arg =:= "1"). +- +- +--spec is_arg_false(string()) -> boolean(). +-is_arg_false(Arg) -> +- (Arg =:= "false") orelse (Arg =:= "f") orelse +- (Arg =:= "no") orelse (Arg =:= "n") orelse +- (Arg =:= "off") orelse (Arg =:= "disabled") orelse +- (Arg =:= "0"). +- +- +--spec is_valid_arg(arg_spec(), nonempty_string()) -> boolean(). +-is_valid_arg({Type, _DefaultArg}, Arg) -> +- is_valid_arg(Type, Arg); +-is_valid_arg(boolean, Arg) -> +- is_boolean_arg(Arg); +-is_valid_arg(integer, Arg) -> +- is_non_neg_integer_arg(Arg); +-is_valid_arg(float, Arg) -> +- is_non_neg_float_arg(Arg); +-is_valid_arg(_Type, _Arg) -> +- true. +- +- +--spec is_implicit_arg(arg_spec(), nonempty_string()) -> boolean(). +-is_implicit_arg({Type, _DefaultArg}, Arg) -> +- is_implicit_arg(Type, Arg); +-is_implicit_arg(boolean, Arg) -> +- not is_boolean_arg(Arg); +-is_implicit_arg(integer, Arg) -> +- not is_integer_arg(Arg); +-is_implicit_arg(_Type, _Arg) -> +- false. +- +- +--spec is_boolean_arg(string()) -> boolean(). +-is_boolean_arg(Arg) -> +- LowerArg = string:to_lower(Arg), +- is_arg_true(LowerArg) orelse is_arg_false(LowerArg). +- +- +--spec is_integer_arg(string()) -> boolean(). +-is_integer_arg("-" ++ Tail) -> +- is_non_neg_integer_arg(Tail); +-is_integer_arg(Arg) -> +- is_non_neg_integer_arg(Arg). +- +- +--spec is_non_neg_integer_arg(string()) -> boolean(). +-is_non_neg_integer_arg([Head | Tail]) when Head >= $0, Head =< $9 -> +- is_non_neg_integer_arg(Tail); +-is_non_neg_integer_arg([_Head | _Tail]) -> +- false; +-is_non_neg_integer_arg([]) -> +- true. +- +- +--spec is_non_neg_float_arg(string()) -> boolean(). +-is_non_neg_float_arg([Head | Tail]) when (Head >= $0 andalso Head =< $9) orelse Head =:= $. -> +- is_non_neg_float_arg(Tail); +-is_non_neg_float_arg([_Head | _Tail]) -> +- false; +-is_non_neg_float_arg([]) -> +- true. +- +- +-%% @doc Show a message on standard_error indicating the command line options and +-%% arguments that are supported by the program. +--spec usage([option_spec()], string()) -> ok. +-usage(OptSpecList, ProgramName) -> +- usage(OptSpecList, ProgramName, standard_error). +- +- +-%% @doc Show a message on standard_error or standard_io indicating the command line options and +-%% arguments that are supported by the program. +--spec usage([option_spec()], string(), output_stream() | string()) -> ok. +-usage(OptSpecList, ProgramName, OutputStream) when is_atom(OutputStream) -> +- io:format(OutputStream, "~s~n~n~s~n", +- [usage_cmd_line(ProgramName, OptSpecList), usage_options(OptSpecList)]); +-%% @doc Show a message on standard_error indicating the command line options and +-%% arguments that are supported by the program. The CmdLineTail argument +-%% is a string that is added to the end of the usage command line. +-usage(OptSpecList, ProgramName, CmdLineTail) -> +- usage(OptSpecList, ProgramName, CmdLineTail, standard_error). +- +- +-%% @doc Show a message on standard_error or standard_io indicating the command line options and +-%% arguments that are supported by the program. The CmdLineTail argument +-%% is a string that is added to the end of the usage command line. +--spec usage([option_spec()], ProgramName :: string(), CmdLineTail :: string(), output_stream() | [{string(), string()}]) -> ok. +-usage(OptSpecList, ProgramName, CmdLineTail, OutputStream) when is_atom(OutputStream) -> +- io:format(OutputStream, "~s~n~n~s~n", +- [usage_cmd_line(ProgramName, OptSpecList, CmdLineTail), usage_options(OptSpecList)]); +-%% @doc Show a message on standard_error indicating the command line options and +-%% arguments that are supported by the program. The CmdLineTail and OptionsTail +-%% arguments are a string that is added to the end of the usage command line +-%% and a list of tuples that are added to the end of the options' help lines. +-usage(OptSpecList, ProgramName, CmdLineTail, OptionsTail) -> +- usage(OptSpecList, ProgramName, CmdLineTail, OptionsTail, standard_error). +- +- +-%% @doc Show a message on standard_error or standard_io indicating the command line options and +-%% arguments that are supported by the program. The CmdLineTail and OptionsTail +-%% arguments are a string that is added to the end of the usage command line +-%% and a list of tuples that are added to the end of the options' help lines. +--spec usage([option_spec()], ProgramName :: string(), CmdLineTail :: string(), +- [{OptionName :: string(), Help :: string()}], output_stream()) -> ok. +-usage(OptSpecList, ProgramName, CmdLineTail, OptionsTail, OutputStream) -> +- io:format(OutputStream, "~s~n~n~s~n", +- [usage_cmd_line(ProgramName, OptSpecList, CmdLineTail), usage_options(OptSpecList, OptionsTail)]). +- +- +--spec usage_cmd_line(ProgramName :: string(), [option_spec()]) -> iolist(). +-usage_cmd_line(ProgramName, OptSpecList) -> +- usage_cmd_line(ProgramName, OptSpecList, ""). +- +--spec usage_cmd_line(ProgramName :: string(), [option_spec()], CmdLineTail :: string()) -> iolist(). +-usage_cmd_line(ProgramName, OptSpecList, CmdLineTail) -> +- Prefix = "Usage: " ++ ProgramName, +- PrefixLength = length(Prefix), +- LineLength = line_length(), +- %% Only align the command line options after the program name when there is +- %% enough room to do so (i.e. at least 25 characters). If not, show the +- %% command line options below the program name with a 2-character indentation. +- if +- (LineLength - PrefixLength) > ?MIN_USAGE_COMMAND_LINE_OPTION_LENGTH -> +- Indentation = lists:duplicate(PrefixLength, $\s), +- [FirstOptLine | OptLines] = usage_cmd_line_options(LineLength - PrefixLength, OptSpecList, CmdLineTail), +- IndentedOptLines = [[Indentation | OptLine] || OptLine <- OptLines], +- [Prefix, FirstOptLine | IndentedOptLines]; +- true -> +- IndentedOptLines = [[" " | OptLine] || OptLine <- usage_cmd_line_options(LineLength, OptSpecList, CmdLineTail)], +- [Prefix, $\n, IndentedOptLines] +- end. +- +- +-%% @doc Return a list of the lines corresponding to the usage command line +-%% already wrapped according to the maximum MaxLineLength. +--spec usage_cmd_line_options(MaxLineLength :: non_neg_integer(), [option_spec()], CmdLineTail :: string()) -> iolist(). +-usage_cmd_line_options(MaxLineLength, OptSpecList, CmdLineTail) -> +- usage_cmd_line_options(MaxLineLength, OptSpecList ++ string:tokens(CmdLineTail, " "), [], 0, []). +- +-usage_cmd_line_options(MaxLineLength, [OptSpec | Tail], LineAcc, LineAccLength, Acc) -> +- Option = [$\s | lists:flatten(usage_cmd_line_option(OptSpec))], +- OptionLength = length(Option), +- %% We accumulate the options in LineAcc until its length is over the +- %% maximum allowed line length. When that happens, we append the line in +- %% LineAcc to the list with all the lines in the command line (Acc). +- NewLineAccLength = LineAccLength + OptionLength, +- if +- NewLineAccLength < MaxLineLength -> +- usage_cmd_line_options(MaxLineLength, Tail, [Option | LineAcc], NewLineAccLength, Acc); +- true -> +- usage_cmd_line_options(MaxLineLength, Tail, [Option], OptionLength + 1, +- [lists:reverse([$\n | LineAcc]) | Acc]) +- end; +-usage_cmd_line_options(MaxLineLength, [], [_ | _] = LineAcc, _LineAccLength, Acc) -> +- %% If there was a non-empty line in LineAcc when there are no more options +- %% to process, we add it to the list of lines to return. +- usage_cmd_line_options(MaxLineLength, [], [], 0, [lists:reverse(LineAcc) | Acc]); +-usage_cmd_line_options(_MaxLineLength, [], [], _LineAccLength, Acc) -> +- lists:reverse(Acc). +- +- +--spec usage_cmd_line_option(option_spec()) -> string(). +-usage_cmd_line_option({_Name, Short, _Long, undefined, _Help}) when Short =/= undefined -> +- %% For options with short form and no argument. +- [$[, $-, Short, $]]; +-usage_cmd_line_option({_Name, _Short, Long, undefined, _Help}) when Long =/= undefined -> +- %% For options with only long form and no argument. +- [$[, $-, $-, Long, $]]; +-usage_cmd_line_option({_Name, _Short, _Long, undefined, _Help}) -> +- []; +-usage_cmd_line_option({Name, Short, Long, ArgSpec, _Help}) when is_atom(ArgSpec) -> +- %% For options with no default argument. +- if +- %% For options with short form and argument. +- Short =/= undefined -> [$[, $-, Short, $\s, $<, atom_to_list(Name), $>, $]]; +- %% For options with only long form and argument. +- Long =/= undefined -> [$[, $-, $-, Long, $\s, $<, atom_to_list(Name), $>, $]]; +- %% For options with neither short nor long form and argument. +- true -> [$[, $<, atom_to_list(Name), $>, $]] +- end; +-usage_cmd_line_option({Name, Short, Long, ArgSpec, _Help}) when is_tuple(ArgSpec) -> +- %% For options with default argument. +- if +- %% For options with short form and default argument. +- Short =/= undefined -> [$[, $-, Short, $\s, $[, $<, atom_to_list(Name), $>, $], $]]; +- %% For options with only long form and default argument. +- Long =/= undefined -> [$[, $-, $-, Long, $\s, $[, $<, atom_to_list(Name), $>, $], $]]; +- %% For options with neither short nor long form and default argument. +- true -> [$[, $<, atom_to_list(Name), $>, $]] +- end; +-usage_cmd_line_option(Option) when is_list(Option) -> +- %% For custom options that are added to the command line. +- Option. +- +- +-%% @doc Return a list of help messages to print for each of the options and arguments. +--spec usage_options([option_spec()]) -> [string()]. +-usage_options(OptSpecList) -> +- usage_options(OptSpecList, []). +- +- +-%% @doc Return a list of usage lines to print for each of the options and arguments. +--spec usage_options([option_spec()], [{OptionName :: string(), Help :: string()}]) -> [string()]. +-usage_options(OptSpecList, CustomHelp) -> +- %% Add the usage lines corresponding to the option specifications. +- {MaxOptionLength0, UsageLines0} = add_option_spec_help_lines(OptSpecList, 0, []), +- %% Add the custom usage lines. +- {MaxOptionLength, UsageLines} = add_custom_help_lines(CustomHelp, MaxOptionLength0, UsageLines0), +- MaxLineLength = line_length(), +- lists:reverse([format_usage_line(MaxOptionLength + 1, MaxLineLength, UsageLine) || UsageLine <- UsageLines]). +- +- +--spec add_option_spec_help_lines([option_spec()], PrevMaxOptionLength :: non_neg_integer(), [usage_line_with_length()]) -> +- {MaxOptionLength :: non_neg_integer(), [usage_line_with_length()]}. +-add_option_spec_help_lines([OptSpec | Tail], PrevMaxOptionLength, Acc) -> +- OptionText = usage_option_text(OptSpec), +- HelpText = usage_help_text(OptSpec), +- {MaxOptionLength, ColsWithLength} = get_max_option_length({OptionText, HelpText}, PrevMaxOptionLength), +- add_option_spec_help_lines(Tail, MaxOptionLength, [ColsWithLength | Acc]); +-add_option_spec_help_lines([], MaxOptionLength, Acc) -> +- {MaxOptionLength, Acc}. +- +- +--spec add_custom_help_lines([usage_line()], PrevMaxOptionLength :: non_neg_integer(), [usage_line_with_length()]) -> +- {MaxOptionLength :: non_neg_integer(), [usage_line_with_length()]}. +-add_custom_help_lines([CustomCols | Tail], PrevMaxOptionLength, Acc) -> +- {MaxOptionLength, ColsWithLength} = get_max_option_length(CustomCols, PrevMaxOptionLength), +- add_custom_help_lines(Tail, MaxOptionLength, [ColsWithLength | Acc]); +-add_custom_help_lines([], MaxOptionLength, Acc) -> +- {MaxOptionLength, Acc}. +- +- +--spec usage_option_text(option_spec()) -> string(). +-usage_option_text({Name, undefined, undefined, _ArgSpec, _Help}) -> +- %% Neither short nor long form (non-option argument). +- "<" ++ atom_to_list(Name) ++ ">"; +-usage_option_text({_Name, Short, undefined, _ArgSpec, _Help}) -> +- %% Only short form. +- [$-, Short]; +-usage_option_text({_Name, undefined, Long, _ArgSpec, _Help}) -> +- %% Only long form. +- [$-, $- | Long]; +-usage_option_text({_Name, Short, Long, _ArgSpec, _Help}) -> +- %% Both short and long form. +- [$-, Short, $,, $\s, $-, $- | Long]. +- +- +--spec usage_help_text(option_spec()) -> string(). +-usage_help_text({_Name, _Short, _Long, {_ArgType, ArgValue}, [_ | _] = Help}) -> +- Help ++ " [default: " ++ default_arg_value_to_string(ArgValue) ++ "]"; +-usage_help_text({_Name, _Short, _Long, _ArgSpec, Help}) -> +- Help. +- +- +-%% @doc Calculate the maximum width of the column that shows the option's short +-%% and long form. +--spec get_max_option_length(usage_line(), PrevMaxOptionLength :: non_neg_integer()) -> +- {MaxOptionLength :: non_neg_integer(), usage_line_with_length()}. +-get_max_option_length({OptionText, HelpText}, PrevMaxOptionLength) -> +- OptionLength = length(OptionText), +- {erlang:max(OptionLength, PrevMaxOptionLength), {OptionLength, OptionText, HelpText}}. +- +- +-%% @doc Format the usage line that is shown for the options' usage. Each usage +-%% line has 2 columns. The first column shows the options in their short +-%% and long form. The second column shows the wrapped (if necessary) help +-%% text lines associated with each option. e.g.: +-%% +-%% -h, --host Database server host name or IP address; this is the +-%% hostname of the server where the database is running +-%% [default: localhost] +-%% -p, --port Database server port [default: 1000] +-%% +--spec format_usage_line(MaxOptionLength :: non_neg_integer(), MaxLineLength :: non_neg_integer(), +- usage_line_with_length()) -> iolist(). +-format_usage_line(MaxOptionLength, MaxLineLength, {OptionLength, OptionText, [_ | _] = HelpText}) +- when MaxOptionLength < (MaxLineLength div 2) -> +- %% If the width of the column where the options are shown is smaller than +- %% half the width of a console line then we show the help text line aligned +- %% next to its corresponding option, with a separation of at least 2 +- %% characters. +- [Head | Tail] = wrap_text_line(MaxLineLength - MaxOptionLength - 3, HelpText), +- FirstLineIndentation = lists:duplicate(MaxOptionLength - OptionLength + 1, $\s), +- Indentation = [$\n | lists:duplicate(MaxOptionLength + 3, $\s)], +- [" ", OptionText, FirstLineIndentation, Head, +- [[Indentation, Line] || Line <- Tail], $\n]; +-format_usage_line(_MaxOptionLength, MaxLineLength, {_OptionLength, OptionText, [_ | _] = HelpText}) -> +- %% If the width of the first column is bigger than the width of a console +- %% line, we show the help text on the next line with an indentation of 6 +- %% characters. +- HelpLines = wrap_text_line(MaxLineLength - 6, HelpText), +- [" ", OptionText, [["\n ", Line] || Line <- HelpLines], $\n]; +-format_usage_line(_MaxOptionLength, _MaxLineLength, {_OptionLength, OptionText, _HelpText}) -> +- [" ", OptionText, $\n]. +- +- +-%% @doc Wrap a text line converting it into several text lines so that the +-%% length of each one of them is never over Length characters. +--spec wrap_text_line(Length :: non_neg_integer(), Text :: string()) -> [string()]. +-wrap_text_line(Length, Text) -> +- wrap_text_line(Length, Text, [], 0, []). +- +-wrap_text_line(Length, [Char | Tail], Acc, Count, CurrentLineAcc) when Count < Length -> +- wrap_text_line(Length, Tail, Acc, Count + 1, [Char | CurrentLineAcc]); +-wrap_text_line(Length, [_ | _] = Help, Acc, Count, CurrentLineAcc) -> +- %% Look for the first whitespace character in the current (reversed) line +- %% buffer to get a wrapped line. If there is no whitespace just cut the +- %% line at the position corresponding to the maximum length. +- {NextLineAcc, WrappedLine} = case string:cspan(CurrentLineAcc, " \t") of +- WhitespacePos when WhitespacePos < Count -> +- lists:split(WhitespacePos, CurrentLineAcc); +- _ -> +- {[], CurrentLineAcc} +- end, +- wrap_text_line(Length, Help, [lists:reverse(WrappedLine) | Acc], length(NextLineAcc), NextLineAcc); +-wrap_text_line(_Length, [], Acc, _Count, [_ | _] = CurrentLineAcc) -> +- %% If there was a non-empty line when we reached the buffer, add it to the accumulator +- lists:reverse([lists:reverse(CurrentLineAcc) | Acc]); +-wrap_text_line(_Length, [], Acc, _Count, _CurrentLineAcc) -> +- lists:reverse(Acc). +- +- +-default_arg_value_to_string(Value) when is_atom(Value) -> +- atom_to_list(Value); +-default_arg_value_to_string(Value) when is_binary(Value) -> +- binary_to_list(Value); +-default_arg_value_to_string(Value) when is_integer(Value) -> +- integer_to_list(Value); +-default_arg_value_to_string(Value) when is_float(Value) -> +- lists:flatten(io_lib:format("~w", [Value])); +-default_arg_value_to_string(Value) -> +- Value. +- +- +-%% @doc Tokenize a command line string with support for single and double +-%% quoted arguments (needed for arguments that have embedded whitespace). +-%% The function also supports the expansion of environment variables in +-%% both the Unix (${VAR}; $VAR) and Windows (%VAR%) formats. It does NOT +-%% support wildcard expansion of paths. +--spec tokenize(CmdLine :: string()) -> [nonempty_string()]. +-tokenize(CmdLine) -> +- tokenize(CmdLine, [], []). +- +--spec tokenize(CmdLine :: string(), Acc :: [string()], ArgAcc :: string()) -> [string()]. +-tokenize([Sep | Tail], Acc, ArgAcc) when ?IS_WHITESPACE(Sep) -> +- NewAcc = case ArgAcc of +- [_ | _] -> +- %% Found separator: add to the list of arguments. +- [lists:reverse(ArgAcc) | Acc]; +- [] -> +- %% Found separator with no accumulated argument; discard it. +- Acc +- end, +- tokenize(Tail, NewAcc, []); +-tokenize([QuotationMark | Tail], Acc, ArgAcc) when QuotationMark =:= $"; QuotationMark =:= $' -> +- %% Quoted argument (might contain spaces, tabs, etc.) +- tokenize_quoted_arg(QuotationMark, Tail, Acc, ArgAcc); +-tokenize([Char | _Tail] = CmdLine, Acc, ArgAcc) when Char =:= $$; Char =:= $% -> +- %% Unix and Windows environment variable expansion: ${VAR}; $VAR; %VAR% +- {NewCmdLine, Var} = expand_env_var(CmdLine), +- tokenize(NewCmdLine, Acc, lists:reverse(Var, ArgAcc)); +-tokenize([$\\, Char | Tail], Acc, ArgAcc) -> +- %% Escaped char. +- tokenize(Tail, Acc, [Char | ArgAcc]); +-tokenize([Char | Tail], Acc, ArgAcc) -> +- tokenize(Tail, Acc, [Char | ArgAcc]); +-tokenize([], Acc, []) -> +- lists:reverse(Acc); +-tokenize([], Acc, ArgAcc) -> +- lists:reverse([lists:reverse(ArgAcc) | Acc]). +- +--spec tokenize_quoted_arg(QuotationMark :: char(), CmdLine :: string(), Acc :: [string()], ArgAcc :: string()) -> [string()]. +-tokenize_quoted_arg(QuotationMark, [QuotationMark | Tail], Acc, ArgAcc) -> +- %% End of quoted argument +- tokenize(Tail, Acc, ArgAcc); +-tokenize_quoted_arg(QuotationMark, [$\\, Char | Tail], Acc, ArgAcc) -> +- %% Escaped char. +- tokenize_quoted_arg(QuotationMark, Tail, Acc, [Char | ArgAcc]); +-tokenize_quoted_arg($" = QuotationMark, [Char | _Tail] = CmdLine, Acc, ArgAcc) when Char =:= $$; Char =:= $% -> +- %% Unix and Windows environment variable expansion (only for double-quoted arguments): ${VAR}; $VAR; %VAR% +- {NewCmdLine, Var} = expand_env_var(CmdLine), +- tokenize_quoted_arg(QuotationMark, NewCmdLine, Acc, lists:reverse(Var, ArgAcc)); +-tokenize_quoted_arg(QuotationMark, [Char | Tail], Acc, ArgAcc) -> +- tokenize_quoted_arg(QuotationMark, Tail, Acc, [Char | ArgAcc]); +-tokenize_quoted_arg(_QuotationMark, CmdLine, Acc, ArgAcc) -> +- tokenize(CmdLine, Acc, ArgAcc). +- +- +--spec expand_env_var(CmdLine :: nonempty_string()) -> {string(), string()}. +-expand_env_var(CmdLine) -> +- case CmdLine of +- "${" ++ Tail -> +- expand_env_var("${", $}, Tail, []); +- "$" ++ Tail -> +- expand_env_var("$", Tail, []); +- "%" ++ Tail -> +- expand_env_var("%", $%, Tail, []) +- end. +- +--spec expand_env_var(Prefix :: string(), EndMark :: char(), CmdLine :: string(), Acc :: string()) -> {string(), string()}. +-expand_env_var(Prefix, EndMark, [Char | Tail], Acc) +- when (Char >= $A andalso Char =< $Z) orelse (Char >= $a andalso Char =< $z) orelse +- (Char >= $0 andalso Char =< $9) orelse (Char =:= $_) -> +- expand_env_var(Prefix, EndMark, Tail, [Char | Acc]); +-expand_env_var(Prefix, EndMark, [EndMark | Tail], Acc) -> +- {Tail, get_env_var(Prefix, [EndMark], Acc)}; +-expand_env_var(Prefix, _EndMark, CmdLine, Acc) -> +- {CmdLine, Prefix ++ lists:reverse(Acc)}. +- +- +--spec expand_env_var(Prefix :: string(), CmdLine :: string(), Acc :: string()) -> {string(), string()}. +-expand_env_var(Prefix, [Char | Tail], Acc) +- when (Char >= $A andalso Char =< $Z) orelse (Char >= $a andalso Char =< $z) orelse +- (Char >= $0 andalso Char =< $9) orelse (Char =:= $_) -> +- expand_env_var(Prefix, Tail, [Char | Acc]); +-expand_env_var(Prefix, CmdLine, Acc) -> +- {CmdLine, get_env_var(Prefix, "", Acc)}. +- +- +--spec get_env_var(Prefix :: string(), Suffix :: string(), Acc :: string()) -> string(). +-get_env_var(Prefix, Suffix, [_ | _] = Acc) -> +- Name = lists:reverse(Acc), +- %% Only expand valid/existing variables. +- case os:getenv(Name) of +- false -> Prefix ++ Name ++ Suffix; +- Value -> Value +- end; +-get_env_var(Prefix, Suffix, []) -> +- Prefix ++ Suffix. +- +- +--spec line_length() -> 0..?LINE_LENGTH. +-line_length() -> +- case io:columns() of +- {ok, Columns} when Columns < ?LINE_LENGTH -> +- Columns - 1; +- _ -> +- ?LINE_LENGTH +- end. +- +- +--spec to_string(term()) -> string(). +-to_string(List) when is_list(List) -> +- case io_lib:printable_list(List) of +- true -> List; +- false -> io_lib:format("~p", [List]) +- end; +-to_string(Atom) when is_atom(Atom) -> +- atom_to_list(Atom); +-to_string(Value) -> +- io_lib:format("~p", [Value]). diff --git a/rebar-0004-Allow-discarding-building-ports.patch b/rebar-0004-Allow-discarding-building-ports.patch new file mode 100644 index 0000000..0819a2f --- /dev/null +++ b/rebar-0004-Allow-discarding-building-ports.patch @@ -0,0 +1,26 @@ +From: Peter Lemenkov +Date: Tue, 5 Jun 2012 15:10:12 +0400 +Subject: [PATCH] Allow discarding building ports + +Signed-off-by: Peter Lemenkov + +Conflicts: + src/rebar_port_compiler.erl + +diff --git a/src/rebar_port_compiler.erl b/src/rebar_port_compiler.erl +index 9679c80..0ba9e84 100644 +--- a/src/rebar_port_compiler.erl ++++ b/src/rebar_port_compiler.erl +@@ -348,6 +348,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(), diff --git a/rebar-0005-Remove-any-traces-of-long-time-obsolete-escript-fold.patch b/rebar-0005-Remove-any-traces-of-long-time-obsolete-escript-fold.patch new file mode 100644 index 0000000..5f2e722 --- /dev/null +++ b/rebar-0005-Remove-any-traces-of-long-time-obsolete-escript-fold.patch @@ -0,0 +1,24 @@ +From: Peter Lemenkov +Date: Sat, 2 Mar 2013 13:35:36 +0400 +Subject: [PATCH] Remove any traces of long-time obsolete escript:foldl/3 + +Signed-off-by: Peter Lemenkov + +diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl +index a5cc0ff..5947277 100644 +--- a/src/rebar_utils.erl ++++ b/src/rebar_utils.erl +@@ -225,12 +225,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 diff --git a/rebar-0006-remove-abnfc.patch b/rebar-0006-remove-abnfc.patch new file mode 100644 index 0000000..ecae99e --- /dev/null +++ b/rebar-0006-remove-abnfc.patch @@ -0,0 +1,166 @@ +From: Filip Andres +Date: Mon, 29 Jun 2015 14:05:01 +0200 +Subject: [PATCH] remove abnfc + + +diff --git a/ebin/rebar.app b/ebin/rebar.app +index 986f12f..167dad8 100644 +--- a/ebin/rebar.app ++++ b/ebin/rebar.app +@@ -5,7 +5,6 @@ + [{description, "Rebar: Erlang Build Tool"}, + {vsn, "2.6.4"}, + {modules, [ rebar, +- rebar_abnfc_compiler, + rebar_app_utils, + rebar_appups, + rebar_asn1_compiler, +@@ -82,7 +81,6 @@ + %% Dir specific processing modules + {modules, [ + {app_dir, [ +- rebar_abnfc_compiler, + rebar_proto_compiler, + rebar_protobuffs_compiler, + rebar_proto_gpb_compiler, +diff --git a/rebar.config b/rebar.config +index eda5a2c..7d0870e 100644 +--- a/rebar.config ++++ b/rebar.config +@@ -20,7 +20,6 @@ + - (\"escript\":\"foldl\"/\"3\") + - (\"eunit_test\":\"function_wrapper\"/\"2\") + - (\"eflame\":\"apply\"/\"5\") +- - (\"abnfc\":\"file\"/\"2\") + - (\"erlydtl\":\"compile\"/\"3\") + - (\"lfe_comp\":\"file\"/\"2\") + - (\"neotoma\":\"file\"/\"2\") +diff --git a/src/rebar_abnfc_compiler.erl b/src/rebar_abnfc_compiler.erl +deleted file mode 100644 +index 37731b5..0000000 +--- a/src/rebar_abnfc_compiler.erl ++++ /dev/null +@@ -1,123 +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]). +- +-%% for internal use only +--export([info/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 +-%% =================================================================== +- +-info(help, compile) -> +- ?CONSOLE( +- "Build ABNF (*.abnf) sources.~n" +- "~n" +- "Valid rebar.config options:~n" +- " ~p~n", +- [ +- {abnfc_opts, [{doc_root, "src"}, +- {out_dir, "src"}, +- {source_ext, ".abnfc"}, +- {module_ext, ""}]} +- ]). +- +-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. diff --git a/rebar-0007-Remove-support-for-gpb-compiler.patch b/rebar-0007-Remove-support-for-gpb-compiler.patch new file mode 100644 index 0000000..40d3cec --- /dev/null +++ b/rebar-0007-Remove-support-for-gpb-compiler.patch @@ -0,0 +1,174 @@ +From: Peter Lemenkov +Date: Wed, 2 Mar 2016 15:03:13 +0300 +Subject: [PATCH] Remove support for gpb compiler + +Signed-off-by: Peter Lemenkov + +diff --git a/ebin/rebar.app b/ebin/rebar.app +index 167dad8..e22ad72 100644 +--- a/ebin/rebar.app ++++ b/ebin/rebar.app +@@ -31,7 +31,6 @@ + rebar_port_compiler, + rebar_proto_compiler, + rebar_protobuffs_compiler, +- rebar_proto_gpb_compiler, + rebar_qc, + rebar_rel_utils, + rebar_reltool, +@@ -83,7 +82,6 @@ + {app_dir, [ + rebar_proto_compiler, + rebar_protobuffs_compiler, +- rebar_proto_gpb_compiler, + rebar_neotoma_compiler, + rebar_asn1_compiler, + rebar_dia_compiler, +diff --git a/src/rebar_proto_gpb_compiler.erl b/src/rebar_proto_gpb_compiler.erl +deleted file mode 100644 +index c528a4a..0000000 +--- a/src/rebar_proto_gpb_compiler.erl ++++ /dev/null +@@ -1,142 +0,0 @@ +-%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*- +-%% ex: ts=4 sw=4 et +-%% ------------------------------------------------------------------- +-%% +-%% rebar: Erlang Build Tools +-%% +-%% Copyright (c) 2014 Tomas Abrahamsson (tomas.abrahamsson@gmail.com) +-%% +-%% 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. +-%% ------------------------------------------------------------------- +--module(rebar_proto_gpb_compiler). +- +--export([key/0, +- proto_compile/3, +- proto_clean/3]). +- +-%% for internal use only +--export([proto_info/2]). +- +--include("rebar.hrl"). +- +-%% =================================================================== +-%% Public API +-%% =================================================================== +- +-key() -> +- gpb. +- +-proto_compile(Config, _AppFile, Files) -> +- %% Check for gpb library -- if it's not present, fail +- %% since we have.proto files that need building +- case gpb_is_present() of +- true -> +- GpbOpts = user_gpb_opts(Config), +- Targets = [filename:join("src", target_filename(F, GpbOpts)) +- || F <- Files], +- rebar_base_compiler:run(Config, [], +- lists:zip(Files, Targets), +- fun compile_gpb/3, +- [{check_last_mod, true}]); +- false -> +- ?ERROR("The gpb library is not present in code path!\n", []), +- ?FAIL +- end. +- +-target_filename(ProtoFileName, GpbOpts) -> +- ModulePrefix = proplists:get_value(module_name_prefix, GpbOpts, ""), +- ModuleSuffix = proplists:get_value(module_name_suffix, GpbOpts, ""), +- Base = filename:basename(ProtoFileName, ".proto"), +- ModulePrefix ++ Base ++ ModuleSuffix ++ ".erl". +- +-proto_clean(Config, _AppFile, ProtoFiles) -> +- GpbOpts = user_gpb_opts(Config) ++ default_dest_opts(), +- rebar_file_utils:delete_each( +- [beam_file(F, GpbOpts) || F <- ProtoFiles] +- ++ [erl_file(F, GpbOpts) || F <- ProtoFiles] +- ++ [hrl_file(F, GpbOpts) || F <- ProtoFiles]), +- ok. +- +-%% =================================================================== +-%% Internal functions +-%% =================================================================== +- +-proto_info(help, compile) -> +- ?CONSOLE( +- " gpb_opts is passed as options to gpb_compile:file/2.~n" +- " erl_opts is used when compiling the generated erlang files,~n" +- " so you might want to add an include path to gpb here,~n" +- " for gpb.hrl, or else use the include_as_lib gpb_opts option,~n" +- " or the defs_as_proplists gpb_opts option.~n", +- []); +-proto_info(help, clean) -> +- ?CONSOLE("", []). +- +-gpb_is_present() -> +- code:which(gpb) =/= non_existing. +- +-user_gpb_opts(Config) -> +- rebar_config:get_local(Config, gpb_opts, []). +- +-default_dest_opts() -> +- [{o_erl, "src"}, {o_hrl, "include"}]. +- +-compile_gpb(Source, _Target, Config) -> +- SourceFullPath = filename:absname(Source), +- GpbOpts = user_gpb_opts(Config) ++ default_dest_opts() +- ++ default_include_opts(SourceFullPath), +- ok = filelib:ensure_dir(filename:join("ebin", "dummy")), +- ok = filelib:ensure_dir(filename:join("include", "dummy")), +- case gpb_compile:file(SourceFullPath, GpbOpts) of +- ok -> +- ok; +- {error, Reason} -> +- ReasonStr = gpb_compile:format_error(Reason), +- ?ERROR("Failed to compile ~s: ~s~n", [SourceFullPath, ReasonStr]), +- ?FAIL +- end. +- +-default_include_opts(SourceFullPath) -> +- [{i,filename:dirname(SourceFullPath)}]. +- +-beam_file(ProtoFile, GpbOpts) -> +- proto_filename_to_path("ebin", ProtoFile, ".beam", GpbOpts). +- +-erl_file(ProtoFile, GpbOpts) -> +- ErlOutDir = get_erl_outdir(GpbOpts), +- proto_filename_to_path(ErlOutDir, ProtoFile, ".erl", GpbOpts). +- +-hrl_file(ProtoFile, GpbOpts) -> +- HrlOutDir = get_hrl_outdir(GpbOpts), +- proto_filename_to_path(HrlOutDir, ProtoFile, ".hrl", GpbOpts). +- +-proto_filename_to_path(Dir, ProtoFile, NewExt, GpbOpts) -> +- BaseNoExt = filename:basename(ProtoFile, ".proto"), +- Prefix = proplists:get_value(module_name_prefix, GpbOpts, ""), +- Suffix = proplists:get_value(module_name_suffix, GpbOpts, ""), +- filename:join([Dir, Prefix ++ BaseNoExt ++ Suffix ++ NewExt]). +- +-get_erl_outdir(Opts) -> +- proplists:get_value(o_erl, Opts, get_outdir(Opts)). +- +-get_hrl_outdir(Opts) -> +- proplists:get_value(o_hrl, Opts, get_outdir(Opts)). +- +-get_outdir(Opts) -> +- proplists:get_value(o, Opts, "."). diff --git a/rebar-0008-Remove-pre-R15B02-workaround.patch b/rebar-0008-Remove-pre-R15B02-workaround.patch new file mode 100644 index 0000000..0800943 --- /dev/null +++ b/rebar-0008-Remove-pre-R15B02-workaround.patch @@ -0,0 +1,64 @@ +From: Peter Lemenkov +Date: Wed, 2 Mar 2016 15:10:20 +0300 +Subject: [PATCH] Remove pre-R15B02 workaround + +Signed-off-by: Peter Lemenkov + +diff --git a/src/rebar_eunit.erl b/src/rebar_eunit.erl +index f4d7b76..19c3138 100644 +--- a/src/rebar_eunit.erl ++++ b/src/rebar_eunit.erl +@@ -72,8 +72,6 @@ + %% for internal use only + -export([info/2]). + +--dialyzer({no_missing_calls, pre15b02_eunit_primitive/3}). +- + -include("rebar.hrl"). + + -define(EUNIT_DIR, ".eunit"). +@@ -436,18 +434,6 @@ get_beam_test_exports(ModuleStr) -> + end. + + make_test_primitives(RawTests) -> +- %% Use {test,M,F} and {generator,M,F} if at least R15B02. Otherwise, +- %% use eunit_test:function_wrapper/2 fallback. +- %% eunit_test:function_wrapper/2 was renamed to eunit_test:mf_wrapper/2 +- %% in R15B02; use that as >= R15B02 check. +- %% TODO: remove fallback and use only {test,M,F} and {generator,M,F} +- %% primitives once at least R15B02 is required. +- {module, eunit_test} = code:ensure_loaded(eunit_test), +- MakePrimitive = case erlang:function_exported(eunit_test, mf_wrapper, 2) of +- true -> fun eunit_primitive/3; +- false -> fun pre15b02_eunit_primitive/3 +- end, +- + ?CONSOLE(" Running test function(s):~n", []), + F = fun({M, F2}, Acc) -> + ?CONSOLE(" ~p:~p/0~n", [M, F2]), +@@ -456,23 +442,15 @@ make_test_primitives(RawTests) -> + case re:run(FNameStr, "_test_") of + nomatch -> + %% Normal test +- MakePrimitive(test, M, F2); ++ {test, M, F2}; + _ -> + %% Generator +- MakePrimitive(generator, M, F2) ++ {generator, M, F2} + end, + [eunit_module_suite(M, NewFunction)|Acc] + end, + lists:foldl(F, [], RawTests). + +-eunit_primitive(Type, M, F) -> +- {Type, M, F}. +- +-pre15b02_eunit_primitive(test, M, F) -> +- eunit_test:function_wrapper(M, F); +-pre15b02_eunit_primitive(generator, M, F) -> +- {generator, eunit_test:function_wrapper(M, F)}. +- + % Add a test group for eunit_surefire to be able to deduce the testsuite. + % Calling eunit:test({module, M}) does exactly this as well. + eunit_module_suite(M, X) -> diff --git a/rebar-0009-Use-erlang-timestamp-0-explicitly.patch b/rebar-0009-Use-erlang-timestamp-0-explicitly.patch new file mode 100644 index 0000000..2e859e7 --- /dev/null +++ b/rebar-0009-Use-erlang-timestamp-0-explicitly.patch @@ -0,0 +1,39 @@ +From: Peter Lemenkov +Date: Wed, 2 Mar 2016 13:52:44 +0300 +Subject: [PATCH] Use erlang:timestamp/0 explicitly + +Signed-off-by: Peter Lemenkov + +diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl +index 5947277..8fe9719 100644 +--- a/src/rebar_utils.erl ++++ b/src/rebar_utils.erl +@@ -791,7 +791,7 @@ cross_sizeof(Arch, Type) -> + end. + + mktempfile(Suffix) -> +- {A,B,C} = rebar_now(), ++ {A,B,C} = erlang:timestamp(), + Dir = temp_dir(), + File = "rebar_"++os:getpid()++ + integer_to_list(A)++"_"++ +@@ -815,19 +815,6 @@ windows_temp_dir() -> + TEMP -> TEMP + end. + +-rebar_now() -> +- case erlang:function_exported(erlang, timestamp, 0) of +- true -> +- erlang:timestamp(); +- false -> +- %% erlang:now/0 was deprecated in 18.0. One solution to avoid the +- %% deprecation warning is to use +- %% -compile({nowarn_deprecated_function, [{erlang, now, 0}]}), but +- %% that would raise a warning in versions older than 18.0. Calling +- %% erlang:now/0 via apply/3 avoids that. +- apply(erlang, now, []) +- end. +- + native_wordsize() -> + try erlang:system_info({wordsize, external}) of + Val -> diff --git a/rebar-0010-Try-shell-variable-VSN-first.patch b/rebar-0010-Try-shell-variable-VSN-first.patch new file mode 100644 index 0000000..a32e007 --- /dev/null +++ b/rebar-0010-Try-shell-variable-VSN-first.patch @@ -0,0 +1,25 @@ +From: Peter Lemenkov +Date: Sun, 6 Mar 2016 01:25:36 +0300 +Subject: [PATCH] Try shell variable VSN first + +Try shell variable VSN first before substituting version placeholder in +app-file. + +Signed-off-by: Peter Lemenkov + +diff --git a/src/rebar_otp_app.erl b/src/rebar_otp_app.erl +index b3566c8..187b1c3 100644 +--- a/src/rebar_otp_app.erl ++++ b/src/rebar_otp_app.erl +@@ -116,7 +116,10 @@ preprocess(Config, AppSrcFile) -> + + + %% AppSrcFile may contain instructions for generating a vsn number +- {Config2, Vsn} = rebar_app_utils:app_vsn(Config1, AppSrcFile), ++ {Config2, Vsn} = case os:getenv("VSN") of ++ false -> rebar_app_utils:app_vsn(Config1, AppSrcFile); ++ V -> {Config1, V} ++ end, + A2 = lists:keystore(vsn, 1, A1, {vsn, Vsn}), + + %% systools:make_relup/4 fails with {missing_param, registered} diff --git a/rebar-0011-Allow-ignoring-missing-deps.patch b/rebar-0011-Allow-ignoring-missing-deps.patch new file mode 100644 index 0000000..8c89a78 --- /dev/null +++ b/rebar-0011-Allow-ignoring-missing-deps.patch @@ -0,0 +1,30 @@ +From: Peter Lemenkov +Date: Mon, 7 Mar 2016 16:55:33 +0300 +Subject: [PATCH] Allow ignoring missing deps + +Signed-off-by: Peter Lemenkov + +diff --git a/src/rebar_deps.erl b/src/rebar_deps.erl +index 251bdee..577db64 100644 +--- a/src/rebar_deps.erl ++++ b/src/rebar_deps.erl +@@ -163,12 +163,17 @@ do_check_deps(Config) -> + {Config1, {AvailDeps, []}} -> + %% No missing deps + {Config1, AvailDeps}; +- {_Config1, {_, MissingDeps}} -> ++ {Config1, {AvailDeps, MissingDeps}} -> + lists:foreach(fun (#dep{app=App, vsn_regex=Vsn, source=Src}) -> + ?CONSOLE("Dependency not available: " + "~p-~s (~p)\n", [App, Vsn, Src]) + end, MissingDeps), +- ?FAIL ++ case os:getenv("IGNORE_MISSING_DEPS") of ++ false -> ?FAIL; ++ _ -> ++ ?CONSOLE("Continue anyway because IGNORE_MISSING_DEPS was set\n", []), ++ {Config1, lists:sort(AvailDeps ++ MissingDeps)} ++ end + end. + + 'check-deps'(Config, _) -> diff --git a/rebar-0012-Drop-obsolete-crypto-rand_uniform-2.patch b/rebar-0012-Drop-obsolete-crypto-rand_uniform-2.patch new file mode 100644 index 0000000..8af8690 --- /dev/null +++ b/rebar-0012-Drop-obsolete-crypto-rand_uniform-2.patch @@ -0,0 +1,32 @@ +From: Peter Lemenkov +Date: Thu, 7 Nov 2019 15:07:35 +0100 +Subject: [PATCH] Drop obsolete crypto:rand_uniform/2 + +Signed-off-by: Peter Lemenkov + +diff --git a/src/rebar_ct.erl b/src/rebar_ct.erl +index b27f661..5541b1c 100644 +--- a/src/rebar_ct.erl ++++ b/src/rebar_ct.erl +@@ -288,7 +288,7 @@ search_ct_specs_from(Cwd, TestDir, Config) -> + build_name(Config) -> + %% generate a unique name for our test node, we want + %% to make sure the odds of name clashing are low +- Random = integer_to_list(crypto:rand_uniform(0, 10000)), ++ Random = integer_to_list(rand:uniform(10001) - 1), + case rebar_config:get_local(Config, ct_use_short_names, false) of + true -> "-sname test" ++ Random; + false -> " -name test" ++ Random ++ "@" ++ net_adm:localhost() +diff --git a/src/rebar_eunit.erl b/src/rebar_eunit.erl +index 19c3138..5606e14 100644 +--- a/src/rebar_eunit.erl ++++ b/src/rebar_eunit.erl +@@ -277,7 +277,7 @@ randomize_suites(Config, Modules) -> + undefined -> + Modules; + "true" -> +- Seed = crypto:rand_uniform(1, 65535), ++ Seed = rand:uniform(65536) - 1, + randomize_suites1(Modules, Seed); + String -> + try list_to_integer(String) of diff --git a/rebar-0013-Remove-compat-random-modules.patch b/rebar-0013-Remove-compat-random-modules.patch new file mode 100644 index 0000000..fcf21e4 --- /dev/null +++ b/rebar-0013-Remove-compat-random-modules.patch @@ -0,0 +1,249 @@ +From: Peter Lemenkov +Date: Thu, 7 Nov 2019 16:02:20 +0100 +Subject: [PATCH] Remove compat random modules + +Signed-off-by: Peter Lemenkov + +diff --git a/ebin/rebar.app b/ebin/rebar.app +index e22ad72..f1477e9 100644 +--- a/ebin/rebar.app ++++ b/ebin/rebar.app +@@ -42,8 +42,7 @@ + rebar_utils, + rebar_xref, + rebar_metacmds, +- rmemo, +- rebar_rand_compat ]}, ++ rmemo ]}, + {registered, []}, + {applications, + [ +diff --git a/rebar.config b/rebar.config +index 7d0870e..6fa4f27 100644 +--- a/rebar.config ++++ b/rebar.config +@@ -29,9 +29,7 @@ + - (\"diameter_codegen\":\"from_dict\"/\"4\") + - (\"diameter_dict_util\":\"format_error\"/\"1\") + - (\"diameter_dict_util\":\"parse\"/\"2\") +- - (\"erlang\":\"timestamp\"/\"0\") +- - (\"rebar_rnd\":\"seed\"/\"1\") +- - (\"rebar_rnd\":\"uniform\"/\"0\"))", ++ - (\"erlang\":\"timestamp\"/\"0\"))", + []}]}. + + {dialyzer, +diff --git a/src/rebar.erl b/src/rebar.erl +index 91593c2..488be2c 100644 +--- a/src/rebar.erl ++++ b/src/rebar.erl +@@ -220,9 +220,6 @@ run_aux(BaseConfig, Commands) -> + {error, {already_started, _}} -> ok + end, + +- %% Make sure rebar_rnd module is generated, compiled, and loaded +- {ok, rebar_rnd} = rebar_rand_compat:init("rebar_rnd"), +- + %% Convert command strings to atoms + CommandAtoms = [list_to_atom(C) || C <- Commands], + +diff --git a/src/rebar_eunit.erl b/src/rebar_eunit.erl +index 5606e14..c78a112 100644 +--- a/src/rebar_eunit.erl ++++ b/src/rebar_eunit.erl +@@ -291,9 +291,9 @@ randomize_suites(Config, Modules) -> + end. + + randomize_suites1(Modules, Seed) -> +- _ = rebar_rnd:seed({35, Seed, 1337}), ++ _ = rand:seed(exsplus, {35, Seed, 1337}), + ?CONSOLE("Randomizing suite order with seed ~b~n", [Seed]), +- [X||{_,X} <- lists:sort([{rebar_rnd:uniform(), M} || M <- Modules])]. ++ [X||{_,X} <- lists:sort([{rand:uniform(), M} || M <- Modules])]. + + %% + %% == get matching tests == +diff --git a/src/rebar_rand_compat.erl b/src/rebar_rand_compat.erl +deleted file mode 100644 +index 849ee35..0000000 +--- a/src/rebar_rand_compat.erl ++++ /dev/null +@@ -1,178 +0,0 @@ +-%%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*- +-%%% ex: ts=4 sw=4 et +-%%% +-%%% Copyright (c) 2016 Tuncer Ayaz +-%%% +-%%% Permission to use, copy, modify, and/or distribute this software +-%%% for any purpose with or without fee is hereby granted, provided +-%%% that the above copyright notice and this permission notice appear +-%%% in all copies. +-%%% +-%%% THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +-%%% WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +-%%% WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE +-%%% AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR +-%%% CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +-%%% LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +-%%% NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +-%%% CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +- +--module(rebar_rand_compat). +- +-%% API +--export([ init/0 +- , init/1 +- ]). +- +--define(DEFAULT_MODNAME, "rnd"). +- +-%%%=================================================================== +-%%% API +-%%%=================================================================== +- +-%%-------------------------------------------------------------------- +-%% @doc +-%% Generate, compile and load rnd module. +-%% @end +-%%-------------------------------------------------------------------- +--spec init() -> {'ok', module()}. +-init() -> +- init(?DEFAULT_MODNAME). +- +-%%-------------------------------------------------------------------- +-%% @doc +-%% Generate, compile and load ModName module. +-%% @end +-%%-------------------------------------------------------------------- +--spec init(string()) -> {'ok', module()}. +-init(ModName) -> +- %% First, select the right module, then generate the appropriate code as a +- %% string, and finally compile and load it as ModName. +- Src = select(ModName), +- {ok, Mod, Bin, []} = compile(Src), +- {module, Mod} = code:load_binary(Mod, ModName++".erl", Bin), +- {ok, Mod}. +- +-%%%=================================================================== +-%%% Internal functions +-%%%=================================================================== +- +-%% Select right rand module and return wrapper module's source as string +--spec select(string()) -> string(). +-select(ModName) -> +- case code:which(rand) of +- non_existing -> +- src(ModName, fun funs_random/0); +- _ -> +- src(ModName, fun funs_rand/0) +- end. +- +-%% Return module's implementation as a string. +--spec src(string(), fun(() -> binary())) -> string(). +-src(ModName, GenFuns) -> +- lists:flatten( +- io_lib:format( +- <<" +--module(~s). +--export([ seed/0 +- , seed/1 +- , uniform/0 +- , uniform/1 +- , uniform_s/1 +- , uniform_s/2 +- ]). +- +-%% Functions +-~s +-">> +-, [ModName, GenFuns()])). +- +-%% random.beam wrapper +-funs_random() -> +- <<" +-seed() -> random:seed(). +-seed(Exp) -> random:seed(Exp). +-uniform() -> random:uniform(). +-uniform(N) -> random:uniform(N). +-uniform_s(St) -> random:uniform_s(St). +-uniform_s(N, St) -> random:uniform_s(N, St). +-">>. +- +-%% rand.beam wrapper +-funs_rand() -> +- <<" +-seed() -> rand:seed(exsplus). +-seed(Exp) -> rand:seed(exsplus, Exp). +-uniform() -> rand:uniform(). +-uniform(N) -> rand:uniform(N). +-uniform_s(St) -> rand:uniform_s(St). +-uniform_s(N, St) -> rand:uniform_s(N, St). +-">>. +- +-compile(String) -> +- Forms = convert(String ++ eof, []), +- compile:forms(Forms, [return]). +- +-%% Parse string into forms for compiler. +-convert({done, {eof, _EndLocation}, _LeftOverChars}, Acc)-> +- %% Finished +- lists:reverse(Acc); +-convert({done, {error, ErrorInfo, _EndLocation}, _LeftOverChars}, _Acc)-> +- ErrorInfo; +-convert({done, {ok, Tokens, _EndLocation}, LeftOverChars}, Acc)-> +- case erl_parse:parse_form(Tokens) of +- {ok, AbsForm} -> +- convert(LeftOverChars, [AbsForm|Acc]); +- {error, AbsForm} -> +- convert(LeftOverChars, AbsForm) +- end; +-convert({more, Continuation}, Acc)-> +- convert(erl_scan:tokens(Continuation, [], 1), Acc); +-convert(String, Acc) -> +- convert(erl_scan:tokens([], String, 1), Acc). +- +-%%%=================================================================== +-%%% Tests +-%%%=================================================================== +- +--ifdef(TEST). +--include_lib("eunit/include/eunit.hrl"). +- +-init_test() -> +- DefMod = list_to_atom(?DEFAULT_MODNAME), +- ok = unload(DefMod), +- ?assertMatch(false, code:is_loaded(DefMod)), +- ?assertMatch({ok, DefMod}, init()), +- ?assertMatch({file, _}, code:is_loaded(DefMod)), +- check_api(DefMod), +- CustomMod = foornd, +- CustomName = "foornd", +- ok = unload(CustomMod), +- ?assertMatch(false, code:is_loaded(CustomMod)), +- ?assertMatch({ok, CustomMod}, init(CustomName)), +- ?assertMatch({file, _}, code:is_loaded(CustomMod)), +- check_api(CustomMod). +- +-unload(Mod) -> +- case code:is_loaded(Mod) of +- false -> +- ok; +- {file, _} -> +- code:delete(Mod), +- code:purge(Mod), +- ok +- end. +- +-check_api(Mod) -> +- Exports = [ {seed, 0} +- , {seed, 1} +- , {uniform, 0} +- , {uniform, 1} +- , {uniform_s, 1} +- , {uniform_s, 2} +- , {module_info, 0} +- , {module_info, 1} +- ], +- ?assertMatch(Exports, Mod:module_info(exports)). +- +--endif. diff --git a/rebar-2.6.4.tar.gz b/rebar-2.6.4.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..cf834650cd5e4d463411d9757a3a7c9e2995de5d GIT binary patch literal 213158 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 literal 0 HcmV?d00001