diff options
author | Alyssa Ross <hi@alyssa.is> | 2021-07-23 09:26:00 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2021-07-23 09:26:00 +0000 |
commit | ab63e0bb8dcf2b1bf8d4a26ed360af777b8f241d (patch) | |
tree | 504b28a058661f6c1cbb7d3f580020e50367ca7f /nixpkgs/pkgs/development/beam-modules | |
parent | 55cc63c079f49e81d695a25bc2f5b3902f2bd290 (diff) | |
parent | b09661d41fb93562fd53f31574dbf781b130ac44 (diff) | |
download | nixlib-ab63e0bb8dcf2b1bf8d4a26ed360af777b8f241d.tar nixlib-ab63e0bb8dcf2b1bf8d4a26ed360af777b8f241d.tar.gz nixlib-ab63e0bb8dcf2b1bf8d4a26ed360af777b8f241d.tar.bz2 nixlib-ab63e0bb8dcf2b1bf8d4a26ed360af777b8f241d.tar.lz nixlib-ab63e0bb8dcf2b1bf8d4a26ed360af777b8f241d.tar.xz nixlib-ab63e0bb8dcf2b1bf8d4a26ed360af777b8f241d.tar.zst nixlib-ab63e0bb8dcf2b1bf8d4a26ed360af777b8f241d.zip |
Merge commit 'b09661d41fb93562fd53f31574dbf781b130ac44'
Diffstat (limited to 'nixpkgs/pkgs/development/beam-modules')
6 files changed, 295 insertions, 73 deletions
diff --git a/nixpkgs/pkgs/development/beam-modules/default.nix b/nixpkgs/pkgs/development/beam-modules/default.nix index 6cfa2721bfcd..b6be8c3e7fbd 100644 --- a/nixpkgs/pkgs/development/beam-modules/default.nix +++ b/nixpkgs/pkgs/development/beam-modules/default.nix @@ -39,6 +39,7 @@ let erlang-ls = callPackage ./erlang-ls { }; erlfmt = callPackage ./erlfmt { }; + elvis-erlang = callPackage ./elvis-erlang { }; # BEAM-based languages. elixir = elixir_1_12; diff --git a/nixpkgs/pkgs/development/beam-modules/elvis-erlang/default.nix b/nixpkgs/pkgs/development/beam-modules/elvis-erlang/default.nix new file mode 100644 index 000000000000..81888bdde21e --- /dev/null +++ b/nixpkgs/pkgs/development/beam-modules/elvis-erlang/default.nix @@ -0,0 +1,46 @@ +{ fetchFromGitHub, fetchgit, fetchHex, rebar3WithPlugins, rebar3-nix, rebar3Relx +, buildRebar3, writeScript, lib }: + +let + owner = "inaka"; + repo = "elvis"; +in rebar3Relx rec { + releaseType = "escript"; + # The package name "elvis" is already taken + pname = "elvis-erlang"; + version = "1.0.1"; + src = fetchFromGitHub { + inherit owner repo; + sha256 = "139mgd4cwc0vazxfnssyym61jd9g45wn1nc53mjfzx5dkrrn4dc5"; + rev = version; + }; + beamDeps = builtins.attrValues (import ./rebar-deps.nix { + inherit fetchHex fetchgit fetchFromGitHub; + builder = buildRebar3; + }); + passthru.updateScript = writeScript "update.sh" '' + #!/usr/bin/env nix-shell + #!nix-shell -i bash -p bash common-updater-scripts git nix-prefetch-git gnutar gzip "rebar3WithPlugins {globalPlugins = [beamPackages.rebar3-nix];}" + + set -euo pipefail + + latest=$(list-git-tags https://github.com/${owner}/${repo}.git | sort -V | tail -1) + if [ "$latest" != "${version}" ]; then + nixpkgs="$(git rev-parse --show-toplevel)" + nix_path="$nixpkgs/pkgs/development/beam-modules/elvis-erlang" + update-source-version elvis-erlang "$latest" --version-key=version --print-changes --file="$nix_path/default.nix" + tmpdir=$(mktemp -d) + cp -R $(nix-build $nixpkgs --no-out-link -A elvis-erlang.src)/* "$tmpdir" + (cd "$tmpdir" && HOME=. rebar3 nix lock -o "$nix_path/rebar-deps.nix") + else + echo "${repo} is already up-to-date" + fi + ''; + meta = with lib; { + homepage = "https://github.com/inaka/elvis"; + description = "Erlang Style Reviewer"; + platforms = platforms.unix; + license = licenses.asl20; + maintainers = with lib.maintainers; [ dlesl ]; + }; +} diff --git a/nixpkgs/pkgs/development/beam-modules/elvis-erlang/rebar-deps.nix b/nixpkgs/pkgs/development/beam-modules/elvis-erlang/rebar-deps.nix new file mode 100644 index 000000000000..93c3db16eb93 --- /dev/null +++ b/nixpkgs/pkgs/development/beam-modules/elvis-erlang/rebar-deps.nix @@ -0,0 +1,168 @@ +# Generated by rebar3_nix +let fetchOnly = { src, ... }: src; +in { builder ? fetchOnly, fetchHex, fetchgit, fetchFromGitHub, overrides ? (x: y: { }) }: +let + self = packages // (overrides self packages); + packages = with self; { + unicode_util_compat = builder { + name = "unicode_util_compat"; + version = "0.7.0"; + src = fetchHex { + pkg = "unicode_util_compat"; + version = "0.7.0"; + sha256 = "sha256-Je7m1n32GWDPanlCOVZlmbCeF+Zo03ACR7xJhjgVJSE="; + }; + beamDeps = [ ]; + }; + ssl_verify_fun = builder { + name = "ssl_verify_fun"; + version = "1.1.6"; + src = fetchHex { + pkg = "ssl_verify_fun"; + version = "1.1.6"; + sha256 = "sha256-vbDSRx9FPIj/OQjnaG+G+b4yfQZcwewW+kVAGX6gRoA="; + }; + beamDeps = [ ]; + }; + parse_trans = builder { + name = "parse_trans"; + version = "3.4.0"; + src = fetchHex { + pkg = "parse_trans"; + version = "3.4.0"; + sha256 = "sha256-+Z42iDC+pEVSIk434ElDpUh08IuFkEhd6NE4MrY6LcM="; + }; + beamDeps = [ ]; + }; + mimerl = builder { + name = "mimerl"; + version = "1.2.0"; + src = fetchHex { + pkg = "mimerl"; + version = "1.2.0"; + sha256 = "sha256-8nhYVlCqWBmGJkY46/aY+LsZ3yl/Zq2RsYkQ38bhkyM="; + }; + beamDeps = [ ]; + }; + metrics = builder { + name = "metrics"; + version = "1.0.1"; + src = fetchHex { + pkg = "metrics"; + version = "1.0.1"; + sha256 = "sha256-abCa3dxPdKQHFq5U0UD5O+sPuJeNhjbq3tDDG28JnxY="; + }; + beamDeps = [ ]; + }; + idna = builder { + name = "idna"; + version = "6.1.1"; + src = fetchHex { + pkg = "idna"; + version = "6.1.1"; + sha256 = "sha256-kjdut4lEEu0ZrEdeSob3tBPBufu1vRbczVeTQVeUTOo="; + }; + beamDeps = [ unicode_util_compat ]; + }; + certifi = builder { + name = "certifi"; + version = "2.6.1"; + src = fetchHex { + pkg = "certifi"; + version = "2.6.1"; + sha256 = "sha256-UkyXtJkbOEndXBemMSI4licsawr0RneLpGdaHf9Tu34="; + }; + beamDeps = [ ]; + }; + zipper = builder { + name = "zipper"; + version = "1.0.1"; + src = fetchHex { + pkg = "zipper"; + version = "1.0.1"; + sha256 = "sha256-ah/T4fDMHR31ZCyaDOIXgDZBGwpclkKFHR2idr1zfC0="; + }; + beamDeps = [ ]; + }; + lager = builder { + name = "lager"; + version = "3.9.1"; + src = fetchHex { + pkg = "lager"; + version = "3.9.1"; + sha256 = "sha256-P1m6daBKmeXxi/kcifRtzlNvg8bLQV/ibm51pivvN9w="; + }; + beamDeps = [ goldrush ]; + }; + katana_code = builder { + name = "katana_code"; + version = "1.1.2"; + src = fetchHex { + pkg = "katana_code"; + version = "1.1.2"; + sha256 = "sha256-5+YWKkToJqA/aLUDt9kpgbiUv4NMHvDmR3g/fWaIAhw="; + }; + beamDeps = [ ]; + }; + jsx = builder { + name = "jsx"; + version = "2.10.0"; + src = fetchHex { + pkg = "jsx"; + version = "2.10.0"; + sha256 = "sha256-moPjcEgHKYAWlo21Bvn60PAn3jdUbrg4s64QZMOgrWI="; + }; + beamDeps = [ ]; + }; + hackney = builder { + name = "hackney"; + version = "1.17.1"; + src = fetchHex { + pkg = "hackney"; + version = "1.17.1"; + sha256 = "sha256-0sup48gQOtAyBiPp8cM+jTeKFeqr4u6K5EGJjz01oYw="; + }; + beamDeps = [ certifi idna metrics mimerl parse_trans ssl_verify_fun unicode_util_compat ]; + }; + goldrush = builder { + name = "goldrush"; + version = "0.1.9"; + src = fetchHex { + pkg = "goldrush"; + version = "0.1.9"; + sha256 = "sha256-mctBKM/8syJ1geXU2APVQT+mQ/TrllI/d9nmk32ZTOs="; + }; + beamDeps = [ ]; + }; + getopt = builder { + name = "getopt"; + version = "1.0.2"; + src = fetchHex { + pkg = "getopt"; + version = "1.0.2"; + sha256 = "sha256-oAKa6kMi+4KmH2h2ptnGbcmHi2y2H6oT3zGHOE/U6iY="; + }; + beamDeps = [ ]; + }; + elvis_core = builder { + name = "elvis_core"; + version = "1.1.2"; + src = fetchHex { + pkg = "elvis_core"; + version = "1.1.2"; + sha256 = "sha256-xO5Cp6fC/FZ/Pqa1FQFkzWgpDxEA6bGaTPiG2Kocpzw="; + }; + beamDeps = [ katana_code zipper ]; + }; + egithub = builder { + name = "egithub"; + version = "0.7.0"; + src = fetchHex { + pkg = "egithub"; + version = "0.7.0"; + sha256 = "sha256-4AnOEe/YAI0PntWdnEiOPpq+MCoPLNbWY+TMJnVvzEw="; + }; + beamDeps = [ goldrush hackney jsx lager ]; + }; + }; +in self diff --git a/nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix b/nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix index 4e9461dc743b..7635e46237b4 100644 --- a/nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix +++ b/nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix @@ -12,8 +12,9 @@ let }); }); }; -in rebar3Relx { - name = "erlang-ls"; +in +rebar3Relx { + pname = "erlang-ls"; inherit version; src = fetchFromGitHub { inherit owner repo; diff --git a/nixpkgs/pkgs/development/beam-modules/erlfmt/default.nix b/nixpkgs/pkgs/development/beam-modules/erlfmt/default.nix index c903906802e3..da577f2264c0 100644 --- a/nixpkgs/pkgs/development/beam-modules/erlfmt/default.nix +++ b/nixpkgs/pkgs/development/beam-modules/erlfmt/default.nix @@ -1,7 +1,7 @@ { fetchFromGitHub, rebar3Relx, lib }: rebar3Relx rec { - name = "erlfmt"; + pname = "erlfmt"; version = "1.0.0"; releaseType = "escript"; src = fetchFromGitHub { diff --git a/nixpkgs/pkgs/development/beam-modules/rebar3-release.nix b/nixpkgs/pkgs/development/beam-modules/rebar3-release.nix index 16344f2f194c..59771c340295 100644 --- a/nixpkgs/pkgs/development/beam-modules/rebar3-release.nix +++ b/nixpkgs/pkgs/development/beam-modules/rebar3-release.nix @@ -1,28 +1,34 @@ -{ stdenv, erlang, rebar3WithPlugins, openssl, - lib }: - -{ name, version +{ stdenv +, erlang +, rebar3WithPlugins +, openssl +, lib +}: + +{ pname +, version , src -, beamDeps ? [] -, buildPlugins ? [] +, beamDeps ? [ ] +, buildPlugins ? [ ] , checkouts ? null , releaseType -, buildInputs ? [] +, buildInputs ? [ ] , setupHook ? null , profile ? "default" , installPhase ? null , buildPhase ? null , configurePhase ? null -, meta ? {} -, ... }@attrs: +, meta ? { } +, ... +}@attrs: with lib; let shell = drv: stdenv.mkDerivation { - name = "interactive-shell-${drv.name}"; - buildInputs = [ drv ]; - }; + name = "interactive-shell-${drv.pname}"; + buildInputs = [ drv ]; + }; customPhases = filterAttrs (_: v: v != null) @@ -38,65 +44,65 @@ let }; pkg = - assert beamDeps != [] -> checkouts == null; + assert beamDeps != [ ] -> checkouts == null; self: stdenv.mkDerivation (attrs // { - name = "${name}-${version}"; - inherit version; - - buildInputs = buildInputs ++ [ erlang rebar3 openssl ] ++ beamDeps; - - # ensure we strip any native binaries (eg. NIFs, ports) - stripDebugList = lib.optional (releaseType == "release") "rel"; - - inherit src; - - REBAR_IGNORE_DEPS = beamDeps != [ ]; - - configurePhase = '' - runHook preConfigure - ${lib.optionalString (checkouts != null) - "cp --no-preserve=all -R ${checkouts}/_checkouts ."} - runHook postConfigure - ''; - - buildPhase = '' - runHook preBuild - HOME=. DEBUG=1 rebar3 as ${profile} ${if releaseType == "escript" - then "escriptize" - else "release"} - runHook postBuild - ''; - - installPhase = '' - runHook preInstall - dir=${if releaseType == "escript" - then "bin" - else "rel"} - mkdir -p "$out/$dir" "$out/bin" - cp -R --preserve=mode "_build/${profile}/$dir" "$out" - ${lib.optionalString (releaseType == "release") - "find $out/rel/*/bin -type f -executable -exec ln -s -t $out/bin {} \\;"} - runHook postInstall - ''; - - postInstall = '' - for dir in $out/rel/*/erts-*; do - echo "ERTS found in $dir - removing references to erlang to reduce closure size" - for f in $dir/bin/{erl,start}; do - substituteInPlace "$f" --replace "${erlang}/lib/erlang" "''${dir/\/erts-*/}" + name = "${pname}-${version}"; + inherit version pname; + + buildInputs = buildInputs ++ [ erlang rebar3 openssl ] ++ beamDeps; + + # ensure we strip any native binaries (eg. NIFs, ports) + stripDebugList = lib.optional (releaseType == "release") "rel"; + + inherit src; + + REBAR_IGNORE_DEPS = beamDeps != [ ]; + + configurePhase = '' + runHook preConfigure + ${lib.optionalString (checkouts != null) + "cp --no-preserve=all -R ${checkouts}/_checkouts ."} + runHook postConfigure + ''; + + buildPhase = '' + runHook preBuild + HOME=. DEBUG=1 rebar3 as ${profile} ${if releaseType == "escript" + then "escriptize" + else "release"} + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + dir=${if releaseType == "escript" + then "bin" + else "rel"} + mkdir -p "$out/$dir" "$out/bin" + cp -R --preserve=mode "_build/${profile}/$dir" "$out" + ${lib.optionalString (releaseType == "release") + "find $out/rel/*/bin -type f -executable -exec ln -s -t $out/bin {} \\;"} + runHook postInstall + ''; + + postInstall = '' + for dir in $out/rel/*/erts-*; do + echo "ERTS found in $dir - removing references to erlang to reduce closure size" + for f in $dir/bin/{erl,start}; do + substituteInPlace "$f" --replace "${erlang}/lib/erlang" "''${dir/\/erts-*/}" + done done - done - ''; - - meta = { - inherit (erlang.meta) platforms; - } // meta; - - passthru = ({ - packageName = name; - env = shell self; - } // (if attrs ? passthru then attrs.passthru else {})); - } // customPhases); + ''; + + meta = { + inherit (erlang.meta) platforms; + } // meta; + + passthru = ({ + packageName = pname; + env = shell self; + } // (if attrs ? passthru then attrs.passthru else { })); + } // customPhases); in - fix pkg +fix pkg |