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
127 lines
4 KiB
Nix
127 lines
4 KiB
Nix
{ stdenv, writeText, callPackage, fetchurl,
|
|
fetchHex, erlang, hermeticRebar3 ? true,
|
|
tree, fetchFromGitHub, hexRegistrySnapshot }:
|
|
|
|
let
|
|
version = "3.6.1";
|
|
|
|
bootstrapper = ./rebar3-nix-bootstrap;
|
|
|
|
erlware_commons = fetchHex {
|
|
pkg = "erlware_commons";
|
|
version = "1.2.0";
|
|
sha256 = "149kkn9gc9cjgvlmakygq475r63q2rry31s29ax0s425dh37sfl7";
|
|
};
|
|
ssl_verify_fun = fetchHex {
|
|
pkg = "ssl_verify_fun";
|
|
version = "1.1.3";
|
|
sha256 = "1zljxashfhqmiscmf298vhr880ppwbgi2rl3nbnyvsfn0mjhw4if";
|
|
};
|
|
certifi = fetchHex {
|
|
pkg = "certifi";
|
|
version = "2.0.0";
|
|
sha256 = "075v7cvny52jbhnskchd3fp68fxgp7qfvdls0haamcycxrn0dipx";
|
|
};
|
|
providers = fetchHex {
|
|
pkg = "providers";
|
|
version = "1.7.0";
|
|
sha256 = "19p4rbsdx9lm2ihgvlhxyld1q76kxpd7qwyqxxsgmhl5r8ln3rlb";
|
|
};
|
|
getopt = fetchHex {
|
|
pkg = "getopt";
|
|
version = "1.0.1";
|
|
sha256 = "174mb46c2qd1f4a7507fng4vvscjh1ds7rykfab5rdnfp61spqak";
|
|
};
|
|
bbmustache = fetchHex {
|
|
pkg = "bbmustache";
|
|
version = "1.5.0";
|
|
sha256 = "0xg3r4lxhqifrv32nm55b4zmkflacc1s964g15p6y6jfx6v4y1zd";
|
|
};
|
|
relx = fetchHex {
|
|
pkg = "relx";
|
|
version = "3.26.0";
|
|
sha256 = "1f810rb01kdidpa985s321ycg3y4hvqpzbk263n6i1bfnqykkvv9";
|
|
};
|
|
cf = fetchHex {
|
|
pkg = "cf";
|
|
version = "0.2.2";
|
|
sha256 = "08cvy7skn5d2k4manlx5k3anqgjdvajjhc5jwxbaszxw34q3na28";
|
|
};
|
|
cth_readable = fetchHex {
|
|
pkg = "cth_readable";
|
|
version = "1.4.2";
|
|
sha256 = "1pjid4f60pp81ds01rqa6ybksrnzqriw3aibilld1asn9iabxkav";
|
|
};
|
|
eunit_formatters = fetchHex {
|
|
pkg = "eunit_formatters";
|
|
version = "0.5.0";
|
|
sha256 = "1jb3hzb216r29x2h4pcjwfmx1k81431rgh5v0mp4x5146hhvmj6n";
|
|
};
|
|
rebar3_hex = fetchHex {
|
|
pkg = "rebar3_hex";
|
|
version = "4.0.0";
|
|
sha256 = "0k0ykx1lz62r03dpbi2zxsvrxgnr5hj67yky0hjrls09ynk4682v";
|
|
};
|
|
|
|
in
|
|
stdenv.mkDerivation {
|
|
name = "rebar3-${version}";
|
|
inherit version;
|
|
|
|
src = fetchurl {
|
|
url = "https://github.com/rebar/rebar3/archive/${version}.tar.gz";
|
|
sha256 = "0cqhqymzh10pfyxqiy4hcg3d2myz3chx0y4m2ixmq8zk81acics0";
|
|
};
|
|
|
|
inherit bootstrapper;
|
|
|
|
patches = if hermeticRebar3 == true
|
|
then [ ./hermetic-rebar3.patch ]
|
|
else [];
|
|
|
|
buildInputs = [ erlang tree ];
|
|
propagatedBuildInputs = [ hexRegistrySnapshot ];
|
|
|
|
postPatch = ''
|
|
${erlang}/bin/escript ${bootstrapper} registry-only
|
|
mkdir -p _build/default/lib/
|
|
mkdir -p _build/default/plugins
|
|
cp --no-preserve=mode -R ${erlware_commons} _build/default/lib/erlware_commons
|
|
cp --no-preserve=mode -R ${providers} _build/default/lib/providers
|
|
cp --no-preserve=mode -R ${getopt} _build/default/lib/getopt
|
|
cp --no-preserve=mode -R ${bbmustache} _build/default/lib/bbmustache
|
|
cp --no-preserve=mode -R ${certifi} _build/default/lib/certifi
|
|
cp --no-preserve=mode -R ${cf} _build/default/lib/cf
|
|
cp --no-preserve=mode -R ${cth_readable} _build/default/lib/cth_readable
|
|
cp --no-preserve=mode -R ${eunit_formatters} _build/default/lib/eunit_formatters
|
|
cp --no-preserve=mode -R ${relx} _build/default/lib/relx
|
|
cp --no-preserve=mode -R ${ssl_verify_fun} _build/default/lib/ssl_verify_fun
|
|
cp --no-preserve=mode -R ${rebar3_hex} _build/default/plugins/rebar3_hex
|
|
'';
|
|
|
|
buildPhase = ''
|
|
HOME=. escript bootstrap
|
|
'';
|
|
installPhase = ''
|
|
mkdir -p $out/bin
|
|
cp rebar3 $out/bin/rebar3
|
|
'';
|
|
|
|
meta = {
|
|
homepage = https://github.com/rebar/rebar3;
|
|
description = "rebar 3.0 is an Erlang build tool that makes it easy to compile and test Erlang applications, port drivers and releases";
|
|
|
|
longDescription = ''
|
|
rebar is a self-contained Erlang script, so it's easy to distribute or
|
|
even embed directly in a project. Where possible, rebar uses standard
|
|
Erlang/OTP conventions for project structures, thus minimizing the amount
|
|
of build configuration work. rebar also provides dependency management,
|
|
enabling application writers to easily re-use common libraries from a
|
|
variety of locations (hex.pm, git, hg, and so on).
|
|
'';
|
|
|
|
platforms = stdenv.lib.platforms.unix;
|
|
maintainers = with stdenv.lib.maintainers; [ gleber tazjin ];
|
|
};
|
|
}
|