nixpkgs/pkgs/development/erlang-modules/build-rebar3.nix
Eric Merritt b1719f9fcc erlang support: Add 187 packages pulled from Hex
This commit adds 187 packages from Hex.pm and documents 100 more that
could not be imported for various reasons. The packages where generated
by hex2nix.
2016-01-14 14:37:56 -08:00

83 lines
1.7 KiB
Nix

{ stdenv, writeText, erlang, rebar3, openssl, libyaml, fetchHex, fetchFromGitHub,
pc, buildEnv }:
{ name, version
, src
, setupHook ? null
, buildInputs ? [], erlangDeps ? [], pluginDeps ? []
, postPatch ? ""
, compilePorts ? false
, meta ? {}
, ... }@attrs:
with stdenv.lib;
let
plugins = pluginDeps ++ (if compilePorts then [pc] else []);
shell = drv: stdenv.mkDerivation {
name = "interactive-shell-${drv.name}";
buildInputs = [ drv ];
};
pkg = self: stdenv.mkDerivation (attrs // {
name = "${name}-${version}";
inherit version;
buildInputs = buildInputs ++ [ erlang rebar3 openssl libyaml ];
propagatedBuildInputs = erlangDeps ++ plugins;
inherit src;
setupHook = if setupHook == null
then writeText "setupHook.sh" ''
addToSearchPath ERL_LIBS "$1/lib/erlang/lib/"
''
else setupHook;
postPatch = ''
rm -f rebar rebar3
'';
configurePhase = ''
runHook preConfigure
rebar3-nix-bootstrap
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
HOME=. rebar3 compile
${if compilePorts then ''
HOME=. rebar3 pc compile
'' else ''''}
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p "$out/lib/erlang/lib/${name}-${version}"
for reldir in src ebin priv include; do
fd="_build/default/lib/${name}/$reldir"
[ -d "$fd" ] || continue
cp -Hrt "$out/lib/erlang/lib/${name}-${version}" "$fd"
success=1
done
runHook postInstall
'';
meta = {
inherit (erlang.meta) platforms;
} // meta;
passthru = {
packageName = name;
env = shell self;
inherit erlangDeps;
};
});
in
fix pkg