forked from mirrors/nixpkgs
0cf4c90469
Updates rebar3 to version 3.6.1, which amongst other things introduces support for rebar3 on Erlang/OTP 21. Changes made: * rebar3 and dependencies updated to new versions * rebar3 hermeticity patch updated to apply against new version * hex package registry snapshot updated
104 lines
4.5 KiB
Diff
104 lines
4.5 KiB
Diff
diff --git a/bootstrap b/bootstrap
|
|
index 5dedd713..864056c4 100755
|
|
--- a/bootstrap
|
|
+++ b/bootstrap
|
|
@@ -101,7 +101,7 @@ extract(Binary) ->
|
|
request(Url) ->
|
|
HttpOptions = [{relaxed, true} | get_proxy_auth()],
|
|
|
|
- case httpc:request(get, {Url, []},
|
|
+ case rebar_hermeticity:request(get, {Url, []},
|
|
HttpOptions,
|
|
[{body_format, binary}],
|
|
rebar) of
|
|
diff --git a/src/rebar_hermeticity.erl b/src/rebar_hermeticity.erl
|
|
index e69de29b..8f6cc7d0 100644
|
|
--- a/src/rebar_hermeticity.erl
|
|
+++ b/src/rebar_hermeticity.erl
|
|
@@ -0,0 +1,42 @@
|
|
+%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*-
|
|
+%% ex: ts=4 sw=4 et
|
|
+%% -------------------------------------------------------------------
|
|
+%%
|
|
+%% rebar: Erlang Build Tools
|
|
+%%
|
|
+%% Copyright (c) 2016 Eric Merritt (eric@merritt.tech)
|
|
+%%
|
|
+%% 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_hermeticity).
|
|
+
|
|
+-export([request/5]).
|
|
+
|
|
+-include("rebar.hrl").
|
|
+
|
|
+%% ====================================================================
|
|
+%% Public API
|
|
+%% ====================================================================
|
|
+
|
|
+request(Method, {Url, _Headers}, _HTTPOptions, _Options, _Profile) ->
|
|
+ ?ERROR("A request is being made that violates Nix hermicity "
|
|
+ "This request has been stopped. Details of the request "
|
|
+ "are as follows:", []),
|
|
+ ?ERROR("Request: ~p ~s", [Method, Url]),
|
|
+ erlang:halt(1).
|
|
diff --git a/src/rebar_pkg_resource.erl b/src/rebar_pkg_resource.erl
|
|
index 2cf167ee..6080aaca 100644
|
|
--- a/src/rebar_pkg_resource.erl
|
|
+++ b/src/rebar_pkg_resource.erl
|
|
@@ -127,7 +127,7 @@ make_vsn(_) ->
|
|
request(Url, ETag) ->
|
|
HttpOptions = [{ssl, ssl_opts(Url)},
|
|
{relaxed, true} | rebar_utils:get_proxy_auth()],
|
|
- case httpc:request(get, {Url, [{"if-none-match", "\"" ++ ETag ++ "\""}
|
|
+ case rebar_hermeticity:request(get, {Url, [{"if-none-match", "\"" ++ ETag ++ "\""}
|
|
|| ETag =/= false] ++
|
|
[{"User-Agent", rebar_utils:user_agent()}]},
|
|
HttpOptions, [{body_format, binary}], rebar) of
|
|
diff --git a/src/rebar_prv_update.erl b/src/rebar_prv_update.erl
|
|
index 17446311..4d44d794 100644
|
|
--- a/src/rebar_prv_update.erl
|
|
+++ b/src/rebar_prv_update.erl
|
|
@@ -38,6 +38,8 @@ init(State) ->
|
|
{ok, State1}.
|
|
|
|
-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.
|
|
+do(State) -> {ok, State}.
|
|
+-ifdef(non_hermetic).
|
|
do(State) ->
|
|
try
|
|
case rebar_packages:registry_dir(State) of
|
|
@@ -53,7 +55,7 @@ do(State) ->
|
|
{ok, Url} ->
|
|
HttpOptions = [{relaxed, true} | rebar_utils:get_proxy_auth()],
|
|
?DEBUG("Fetching registry from ~p", [Url]),
|
|
- case httpc:request(get, {Url, [{"User-Agent", rebar_utils:user_agent()}]},
|
|
+ case rebar_hermeticity:request(get, {Url, [{"User-Agent", rebar_utils:user_agent()}]},
|
|
HttpOptions, [{stream, TmpFile}, {sync, true}],
|
|
rebar) of
|
|
{ok, saved_to_file} ->
|
|
@@ -77,6 +79,7 @@ do(State) ->
|
|
?DEBUG("Error creating package index: ~p ~p", [C, S]),
|
|
throw(?PRV_ERROR(package_index_write))
|
|
end.
|
|
+-endif.
|
|
|
|
-spec format_error(any()) -> iolist().
|
|
format_error({package_parse_cdn, Uri}) ->
|