Browse Source

Merge pull request #2204 from starbelly/hex-cdn

re-enable use of rebar_packages_cdn in rebar_pkg_resource
pull/2240/head
Fred Hebert 5 years ago
committed by GitHub
parent
commit
15df73060a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 11 deletions
  1. +1
    -1
      src/rebar.hrl
  2. +5
    -6
      src/rebar3.erl
  3. +10
    -4
      src/rebar_pkg_resource.erl

+ 1
- 1
src/rebar.hrl View File

@ -24,7 +24,7 @@
-define(DEFAULT_RELEASE_DIR, "rel").
-define(CONFIG_VERSION, "1.2.0").
-define(SUPPORTED_CONFIG_VERSIONS, ["1.1.0", "1.2.0"]). % older were untagged
-define(DEFAULT_CDN, "https://repo.hex.pm/").
-define(DEFAULT_CDN, "https://repo.hex.pm").
-define(REMOTE_PACKAGE_DIR, "tarballs").
-define(LOCK_FILE, "rebar.lock").
-define(DEFAULT_COMPILER_SOURCE_FORMAT, relative).

+ 5
- 6
src/rebar3.erl View File

@ -131,13 +131,12 @@ run_aux(State, RawArgs) ->
rebar_utils:check_min_otp_version(rebar_state:get(State1, minimum_otp_vsn, undefined)),
rebar_utils:check_blacklisted_otp_versions(rebar_state:get(State1, blacklisted_otp_vsns, undefined)),
%% Change the default hex CDN
State2 = case os:getenv("HEX_CDN") of
false ->
State1;
CDN ->
rebar_state:set(State1, rebar_packages_cdn, CDN)
%% Maybe change the default hex CDN
HexCDN = case os:getenv("HEX_CDN") of
false -> ?DEFAULT_CDN;
CDN -> CDN
end,
State2 = rebar_state:set(State1, rebar_packages_cdn, HexCDN),
Compilers = application:get_env(rebar, compilers, []),
State0 = rebar_state:compilers(State2, Compilers),

+ 10
- 4
src/rebar_pkg_resource.erl View File

@ -107,7 +107,7 @@ download(TmpDir, Pkg={pkg, Name, Vsn, _OldHash, _Hash, Repo}, State, _ResourceSt
ETagFile = binary_to_list(<<Name/binary, "-", Vsn/binary, ".etag">>),
CachePath = filename:join(PackageDir, Package),
ETagPath = filename:join(PackageDir, ETagFile),
case cached_download(TmpDir, CachePath, Pkg, etag(CachePath, ETagPath), ETagPath, UpdateETag) of
case cached_download(TmpDir, CachePath, Pkg, State, etag(CachePath, ETagPath), ETagPath, UpdateETag) of
{bad_registry_checksum, Expected, Found} ->
%% checksum comparison failed. in case this is from a modified cached package
%% overwrite the etag if it exists so it is not relied on again
@ -206,17 +206,19 @@ store_etag_in_cache(Path, ETag) ->
%%%=============================================================================
%%% Private functions
%%%=============================================================================
-spec cached_download(TmpDir, CachePath, Pkg, ETag, ETagPath, UpdateETag) -> Res when
-spec cached_download(TmpDir, CachePath, Pkg, State, ETag, ETagPath, UpdateETag) -> Res when
TmpDir :: file:name(),
CachePath :: file:name(),
Pkg :: package(),
State :: rebar_state:t(),
ETag :: binary(),
ETagPath :: file:name(),
UpdateETag :: boolean(),
Res :: ok | {unexpected_hash, integer(), integer()} | {fetch_fail, binary(), binary()}.
cached_download(TmpDir, CachePath, Pkg={pkg, Name, Vsn, _OldHash, _Hash, RepoConfig}, ETag,
cached_download(TmpDir, CachePath, Pkg={pkg, Name, Vsn, _OldHash, _Hash, RepoConfig}, State, ETag,
ETagPath, UpdateETag) ->
case request(RepoConfig, Name, Vsn, ETag) of
CDN = maybe_default_cdn(State),
case request(RepoConfig#{repo_url => CDN}, Name, Vsn, ETag) of
{ok, cached} ->
?INFO("Version cached at ~ts is up to date, reusing it", [CachePath]),
serve_from_cache(TmpDir, CachePath, Pkg);
@ -232,6 +234,10 @@ cached_download(TmpDir, CachePath, Pkg={pkg, Name, Vsn, _OldHash, _Hash, RepoCon
{fetch_fail, Name, Vsn}
end.
maybe_default_cdn(State) ->
CDN = rebar_state:get(State, rebar_packages_cdn, ?DEFAULT_CDN),
rebar_utils:to_binary(CDN).
-spec serve_from_cache(TmpDir, CachePath, Pkg) -> Res when
TmpDir :: file:name(),
CachePath :: file:name(),

Loading…
Cancel
Save