diff options
author | Alyssa Ross <hi@alyssa.is> | 2021-09-08 17:57:14 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2021-09-13 11:31:47 +0000 |
commit | ee7984efa14902a2ddd820c937457667a4f40c6a (patch) | |
tree | c9c1d046733cefe5e21fdd8a52104175d47b2443 /nixpkgs/pkgs/development/beam-modules | |
parent | ffc9d4ba381da62fd08b361bacd1e71e2a3d934d (diff) | |
parent | b3c692172e5b5241b028a98e1977f9fb12eeaf42 (diff) | |
download | nixlib-ee7984efa14902a2ddd820c937457667a4f40c6a.tar nixlib-ee7984efa14902a2ddd820c937457667a4f40c6a.tar.gz nixlib-ee7984efa14902a2ddd820c937457667a4f40c6a.tar.bz2 nixlib-ee7984efa14902a2ddd820c937457667a4f40c6a.tar.lz nixlib-ee7984efa14902a2ddd820c937457667a4f40c6a.tar.xz nixlib-ee7984efa14902a2ddd820c937457667a4f40c6a.tar.zst nixlib-ee7984efa14902a2ddd820c937457667a4f40c6a.zip |
Merge commit 'b3c692172e5b5241b028a98e1977f9fb12eeaf42'
Diffstat (limited to 'nixpkgs/pkgs/development/beam-modules')
-rw-r--r-- | nixpkgs/pkgs/development/beam-modules/build-mix.nix | 9 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/beam-modules/default.nix | 2 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/beam-modules/elixir-ls/default.nix (renamed from nixpkgs/pkgs/development/beam-modules/elixir_ls.nix) | 7 | ||||
-rwxr-xr-x | nixpkgs/pkgs/development/beam-modules/elixir-ls/update.sh | 32 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix | 30 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/beam-modules/erlang-ls/rebar-deps.nix | 2 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/beam-modules/fetch-hex.nix | 14 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/beam-modules/fetch-rebar-deps.nix | 19 | ||||
-rwxr-xr-x | nixpkgs/pkgs/development/beam-modules/mix-configure-hook.sh | 18 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/beam-modules/mix-release.nix | 1 |
10 files changed, 114 insertions, 20 deletions
diff --git a/nixpkgs/pkgs/development/beam-modules/build-mix.nix b/nixpkgs/pkgs/development/beam-modules/build-mix.nix index 728d249c97d8..6b6ef7ce3501 100644 --- a/nixpkgs/pkgs/development/beam-modules/build-mix.nix +++ b/nixpkgs/pkgs/development/beam-modules/build-mix.nix @@ -42,6 +42,14 @@ let nativeBuildInputs = nativeBuildInputs ++ [ elixir hex ]; propagatedBuildInputs = propagatedBuildInputs ++ beamDeps; + configurePhase = attrs.configurePhase or '' + runHook preConfigure + + ${./mix-configure-hook.sh} + + runHook postConfigure + ''; + buildPhase = attrs.buildPhase or '' runHook preBuild export HEX_HOME="$TEMPDIR/hex" @@ -83,3 +91,4 @@ let }); in fix pkg + diff --git a/nixpkgs/pkgs/development/beam-modules/default.nix b/nixpkgs/pkgs/development/beam-modules/default.nix index b6be8c3e7fbd..1c9d5099b44f 100644 --- a/nixpkgs/pkgs/development/beam-modules/default.nix +++ b/nixpkgs/pkgs/development/beam-modules/default.nix @@ -76,7 +76,7 @@ let debugInfo = true; }; - elixir_ls = callPackage ./elixir_ls.nix { inherit elixir fetchMixDeps mixRelease; }; + elixir_ls = callPackage ./elixir-ls { inherit elixir fetchMixDeps mixRelease; }; lfe = lfe_1_3; lfe_1_3 = lib'.callLFE ../interpreters/lfe/1.3.nix { inherit erlang buildRebar3 buildHex; }; diff --git a/nixpkgs/pkgs/development/beam-modules/elixir_ls.nix b/nixpkgs/pkgs/development/beam-modules/elixir-ls/default.nix index 5afab0e1babd..1385b40fc1f5 100644 --- a/nixpkgs/pkgs/development/beam-modules/elixir_ls.nix +++ b/nixpkgs/pkgs/development/beam-modules/elixir-ls/default.nix @@ -4,20 +4,20 @@ mixRelease rec { pname = "elixir-ls"; - version = "0.7.0"; + version = "0.8.1"; src = fetchFromGitHub { owner = "elixir-lsp"; repo = "elixir-ls"; rev = "v${version}"; - sha256 = "0d0hqc35hfjkpm88vz21mnm2a9rxiqfrdi83whhhh6d2ba216b7s"; + sha256 = "sha256-KlZq12RCor9GrwA8QMP3R+jUQ/xFHRjkLwwkvthiMU0="; fetchSubmodules = true; }; mixFodDeps = fetchMixDeps { pname = "mix-deps-${pname}"; inherit src version; - sha256 = "0r9x223imq4j9pn9niskyaybvk7jmq8dxcyzk7kwfsi128qig1a1"; + sha256 = "sha256-OzjToAg+q/ybCyqzNFk28OBsItjFTbdPi416EPh2qX0="; }; # elixir_ls is an umbrella app @@ -68,4 +68,5 @@ mixRelease rec { platforms = platforms.unix; maintainers = teams.beam.members; }; + passthru.updateScript = ./update.sh; } diff --git a/nixpkgs/pkgs/development/beam-modules/elixir-ls/update.sh b/nixpkgs/pkgs/development/beam-modules/elixir-ls/update.sh new file mode 100755 index 000000000000..8bc1c2b6e966 --- /dev/null +++ b/nixpkgs/pkgs/development/beam-modules/elixir-ls/update.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env nix-shell +#! nix-shell -i oil -p jq sd nix-prefetch-github ripgrep + +# TODO set to `verbose` or `extdebug` once implemented in oil +shopt --set xtrace + +var directory = $(dirname $0 | xargs realpath) +var owner = "elixir-lsp" +var repo = "elixir-ls" +var latest_rev = $(curl -q https://api.github.com/repos/${owner}/${repo}/releases/latest | \ + jq -r '.tag_name') +var latest_version = $(echo $latest_rev | sd 'v' '') +var current_version = $(nix-instantiate -A elixir_ls.version --eval --json | jq -r) +if ("$latest_version" == "$current_version") { + echo "elixir-ls is already up-to-date" + return 0 +} else { + var tarball_meta = $(nix-prefetch-github $owner $repo --rev "$latest_rev") + var tarball_hash = "sha256-$(echo $tarball_meta | jq -r '.sha256')" + var sha256s = $(rg '"sha256-.+"' $directory/default.nix | sd '.+"(.+)";' '$1' ) + echo $sha256s | read --line :github_sha256 + echo $sha256s | tail -n 1 | read --line :old_mix_sha256 + sd 'version = ".+"' "version = \"$latest_version\"" "$directory/default.nix" + sd "sha256 = \"$github_sha256\"" "sha256 = \"$tarball_hash\"" "$directory/default.nix" + sd "sha256 = \"$old_mix_sha256\"" "sha256 = \"\"" "$directory/default.nix" + + var new_mix_hash = $(nix-build -A elixir_ls.mixFodDeps 2>&1 | \ + tail -n 1 | \ + sd '\s+got:\s+' '') + + sd "sha256 = \"\"" "sha256 = \"$new_mix_hash\"" "$directory/default.nix" +} diff --git a/nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix b/nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix index 7635e46237b4..9f7d434193a4 100644 --- a/nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix +++ b/nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix @@ -1,10 +1,11 @@ -{ fetchFromGitHub, fetchHex, rebar3Relx, buildRebar3, rebar3-proper, lib }: +{ fetchFromGitHub, fetchgit, fetchHex, rebar3Relx, buildRebar3, rebar3-proper +, stdenv, writeScript, lib }: let - version = "0.17.0"; + version = "0.18.0"; owner = "erlang-ls"; repo = "erlang_ls"; deps = import ./rebar-deps.nix { - inherit fetchHex fetchFromGitHub; + inherit fetchHex fetchFromGitHub fetchgit; builder = buildRebar3; overrides = (self: super: { proper = super.proper.overrideAttrs (_: { @@ -18,7 +19,7 @@ rebar3Relx { inherit version; src = fetchFromGitHub { inherit owner repo; - sha256 = "0szg9hx436cvy80sh94dzmf2rainnw3fjc84bv3hlzjwwzmxj9aw"; + sha256 = "sha256-miCl04qqrirVPubOs558yWvXP3Sgs3bcDuGO9DZIsow="; rev = version; }; releaseType = "escript"; @@ -32,7 +33,8 @@ rebar3Relx { HOME=. rebar3 ct HOME=. rebar3 proper --constraint_tries 100 ''; - doCheck = true; + # tests seem to be a bit flaky on darwin, skip them for now + doCheck = !stdenv.isDarwin; installPhase = '' mkdir -p $out/bin cp _build/default/bin/erlang_ls $out/bin/ @@ -44,4 +46,22 @@ rebar3Relx { platforms = platforms.unix; license = licenses.asl20; }; + passthru.updateScript = writeScript "update.sh" '' + #!/usr/bin/env nix-shell + #! nix-shell -i bash -p common-updater-scripts coreutils git gnused gnutar gzip "rebar3WithPlugins { globalPlugins = [ beamPackages.rebar3-nix ]; }" + + set -ox errexit + latest=$(list-git-tags https://github.com/${owner}/${repo}.git | sed -n '/[\d\.]\+/p' | sort -V | tail -1) + if [[ "$latest" != "${version}" ]]; then + nixpkgs="$(git rev-parse --show-toplevel)" + nix_path="$nixpkgs/pkgs/development/beam-modules/erlang-ls" + update-source-version erlang-ls "$latest" --version-key=version --print-changes --file="$nix_path/default.nix" + tmpdir=$(mktemp -d) + cp -R $(nix-build $nixpkgs --no-out-link -A erlang-ls.src)/* "$tmpdir" + DEBUG=1 + (cd "$tmpdir" && HOME=. rebar3 as test nix lock -o "$nix_path/rebar-deps.nix") + else + echo "erlang-ls is already up-to-date" + fi + ''; } diff --git a/nixpkgs/pkgs/development/beam-modules/erlang-ls/rebar-deps.nix b/nixpkgs/pkgs/development/beam-modules/erlang-ls/rebar-deps.nix index 5d55ce0c5236..75d033a13d58 100644 --- a/nixpkgs/pkgs/development/beam-modules/erlang-ls/rebar-deps.nix +++ b/nixpkgs/pkgs/development/beam-modules/erlang-ls/rebar-deps.nix @@ -1,6 +1,6 @@ # Generated by rebar3_nix let fetchOnly = { src, ... }: src; -in { builder ? fetchOnly, fetchHex, fetchFromGitHub, overrides ? (x: y: { }) }: +in { builder ? fetchOnly, fetchHex, fetchgit, fetchFromGitHub, overrides ? (x: y: { }) }: let self = packages // (overrides self packages); packages = with self; { diff --git a/nixpkgs/pkgs/development/beam-modules/fetch-hex.nix b/nixpkgs/pkgs/development/beam-modules/fetch-hex.nix index 7f84e2360704..9c2ed1ea22b6 100644 --- a/nixpkgs/pkgs/development/beam-modules/fetch-hex.nix +++ b/nixpkgs/pkgs/development/beam-modules/fetch-hex.nix @@ -1,21 +1,25 @@ { lib, stdenv, fetchurl }: -{ pkg, version, sha256 -, meta ? {} +{ pkg +, version +, sha256 +, meta ? { } }: with lib; stdenv.mkDerivation ({ - name = "hex-source-${pkg}-${version}"; + pname = "hex-source-${pkg}"; + inherit version; + dontBuild = true; + dontConfigure = true; + dontFixup = true; src = fetchurl { url = "https://repo.hex.pm/tarballs/${pkg}-${version}.tar"; inherit sha256; }; - phases = [ "unpackPhase" "installPhase" ]; - unpackCmd = '' tar -xf $curSrc contents.tar.gz mkdir contents diff --git a/nixpkgs/pkgs/development/beam-modules/fetch-rebar-deps.nix b/nixpkgs/pkgs/development/beam-modules/fetch-rebar-deps.nix index d858b3d81aff..31bef024d320 100644 --- a/nixpkgs/pkgs/development/beam-modules/fetch-rebar-deps.nix +++ b/nixpkgs/pkgs/development/beam-modules/fetch-rebar-deps.nix @@ -1,27 +1,36 @@ { lib, stdenv, rebar3 }: -{ name, version, sha256, src -, meta ? {} +{ name +, version +, sha256 +, src +, meta ? { } }: with lib; stdenv.mkDerivation ({ - name = "rebar-deps-${name}-${version}"; + pname = "rebar-deps-${name}"; + inherit version; - phases = [ "downloadPhase" "installPhase" ]; + dontUnpack = true; + dontConfigure = true; + dontBuild = true; + dontFixup = true; - downloadPhase = '' + prePhases = '' cp ${src} . HOME='.' DEBUG=1 ${rebar3}/bin/rebar3 get-deps ''; installPhase = '' + runHook preInstall mkdir -p "$out/_checkouts" for i in ./_build/default/lib/* ; do echo "$i" cp -R "$i" "$out/_checkouts" done + runHook postInstall ''; outputHashAlgo = "sha256"; diff --git a/nixpkgs/pkgs/development/beam-modules/mix-configure-hook.sh b/nixpkgs/pkgs/development/beam-modules/mix-configure-hook.sh new file mode 100755 index 000000000000..f8b4f3d159fe --- /dev/null +++ b/nixpkgs/pkgs/development/beam-modules/mix-configure-hook.sh @@ -0,0 +1,18 @@ +# shellcheck shell=bash +# this hook will symlink all dependencies found in ERL_LIBS +# since Elixir 1.12.2 elixir does not look into ERL_LIBS for +# elixir depencencies anymore, so those have to be symlinked to the _build directory +mkdir -p _build/"$MIX_ENV"/lib +while read -r -d ':' lib; do + for dir in "$lib"/*; do + # Strip version number for directory name if it exists, so naming of + # all libs matches what mix's expectation. + dest=$(basename "$dir" | cut -d '-' -f1) + build_dir="_build/$MIX_ENV/lib/$dest" + ((MIX_DEBUG == 1)) && echo "Linking $dir to $build_dir" + # Symlink libs to _build so that mix can find them when compiling. + # This is what allows mix to compile the package without searching + # for dependencies over the network. + ln -s "$dir" "$build_dir" + done +done <<< "$ERL_LIBS:" diff --git a/nixpkgs/pkgs/development/beam-modules/mix-release.nix b/nixpkgs/pkgs/development/beam-modules/mix-release.nix index 80e8721302e8..c65e497f4d75 100644 --- a/nixpkgs/pkgs/development/beam-modules/mix-release.nix +++ b/nixpkgs/pkgs/development/beam-modules/mix-release.nix @@ -58,6 +58,7 @@ stdenv.mkDerivation (overridable // { configurePhase = attrs.configurePhase or '' runHook preConfigure + ${./mix-configure-hook.sh} # this is needed for projects that have a specific compile step # the dependency needs to be compiled in order for the task # to be available |