diff options
author | Alyssa Ross <hi@alyssa.is> | 2023-06-16 06:56:35 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2023-06-16 06:56:35 +0000 |
commit | 99fcaeccb89621dd492203ce1f2d551c06f228ed (patch) | |
tree | 41cb730ae07383004789779b0f6e11cb3f4642a3 /nixpkgs/pkgs/development/beam-modules | |
parent | 59c5f5ac8682acc13bb22bc29c7cf02f7d75f01f (diff) | |
parent | 75a5ebf473cd60148ba9aec0d219f72e5cf52519 (diff) | |
download | nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.gz nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.bz2 nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.lz nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.xz nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.zst nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.zip |
Merge branch 'nixos-unstable' of https://github.com/NixOS/nixpkgs
Conflicts: nixpkgs/nixos/modules/config/console.nix nixpkgs/nixos/modules/services/mail/mailman.nix nixpkgs/nixos/modules/services/mail/public-inbox.nix nixpkgs/nixos/modules/services/mail/rss2email.nix nixpkgs/nixos/modules/services/networking/ssh/sshd.nix nixpkgs/pkgs/applications/networking/instant-messengers/dino/default.nix nixpkgs/pkgs/applications/networking/irc/weechat/default.nix nixpkgs/pkgs/applications/window-managers/sway/default.nix nixpkgs/pkgs/build-support/go/module.nix nixpkgs/pkgs/build-support/rust/build-rust-package/default.nix nixpkgs/pkgs/development/interpreters/python/default.nix nixpkgs/pkgs/development/node-packages/overrides.nix nixpkgs/pkgs/development/tools/b4/default.nix nixpkgs/pkgs/servers/dict/dictd-db.nix nixpkgs/pkgs/servers/mail/public-inbox/default.nix nixpkgs/pkgs/tools/security/pinentry/default.nix nixpkgs/pkgs/tools/text/unoconv/default.nix nixpkgs/pkgs/top-level/all-packages.nix
Diffstat (limited to 'nixpkgs/pkgs/development/beam-modules')
17 files changed, 91 insertions, 92 deletions
diff --git a/nixpkgs/pkgs/development/beam-modules/build-erlang-mk.nix b/nixpkgs/pkgs/development/beam-modules/build-erlang-mk.nix index d1afa55387d3..eb70517c82ec 100644 --- a/nixpkgs/pkgs/development/beam-modules/build-erlang-mk.nix +++ b/nixpkgs/pkgs/development/beam-modules/build-erlang-mk.nix @@ -17,8 +17,6 @@ , ... }@attrs: -with lib; - let debugInfoFlag = lib.optionalString (enableDebugInfo || erlang.debugInfo) "+debug_info"; @@ -107,4 +105,4 @@ let }; }); in -fix pkg +lib.fix pkg diff --git a/nixpkgs/pkgs/development/beam-modules/build-hex.nix b/nixpkgs/pkgs/development/beam-modules/build-hex.nix index 1ebe3760ec8d..b5d20fa97783 100644 --- a/nixpkgs/pkgs/development/beam-modules/build-hex.nix +++ b/nixpkgs/pkgs/development/beam-modules/build-hex.nix @@ -5,8 +5,6 @@ , hexPkg ? name , ... }@attrs: -with lib; - let pkg = self: builder (attrs // { @@ -17,4 +15,4 @@ let }; }); in - fix pkg + lib.fix pkg diff --git a/nixpkgs/pkgs/development/beam-modules/build-mix.nix b/nixpkgs/pkgs/development/beam-modules/build-mix.nix index 6b6ef7ce3501..081d4988bace 100644 --- a/nixpkgs/pkgs/development/beam-modules/build-mix.nix +++ b/nixpkgs/pkgs/development/beam-modules/build-mix.nix @@ -15,7 +15,6 @@ , ... }@attrs: -with lib; let shell = drv: stdenv.mkDerivation { name = "interactive-shell-${drv.name}"; @@ -90,5 +89,5 @@ let }; }); in -fix pkg +lib.fix pkg diff --git a/nixpkgs/pkgs/development/beam-modules/build-rebar3.nix b/nixpkgs/pkgs/development/beam-modules/build-rebar3.nix index 0dfd68f0993c..43d613d072ee 100644 --- a/nixpkgs/pkgs/development/beam-modules/build-rebar3.nix +++ b/nixpkgs/pkgs/development/beam-modules/build-rebar3.nix @@ -16,8 +16,6 @@ , ... }@attrs: -with lib; - let debugInfoFlag = lib.optionalString (enableDebugInfo || erlang.debugInfo) "debug-info"; @@ -30,7 +28,7 @@ let buildInputs = [ drv ]; }; - customPhases = filterAttrs + customPhases = lib.filterAttrs (_: v: v != null) { inherit setupHook configurePhase buildPhase installPhase; }; @@ -40,7 +38,7 @@ let inherit version; buildInputs = buildInputs ++ [ erlang rebar3 openssl libyaml ]; - propagatedBuildInputs = unique beamDeps; + propagatedBuildInputs = lib.unique beamDeps; inherit src; @@ -85,4 +83,4 @@ let }; } // customPhases); in -fix pkg +lib.fix pkg diff --git a/nixpkgs/pkgs/development/beam-modules/default.nix b/nixpkgs/pkgs/development/beam-modules/default.nix index 1cbdf04bef93..98d9de9e70b2 100644 --- a/nixpkgs/pkgs/development/beam-modules/default.nix +++ b/nixpkgs/pkgs/development/beam-modules/default.nix @@ -1,6 +1,7 @@ -{ lib, pkgs, erlang }: +{ lib, __splicedPackages, erlang }: let + pkgs = __splicedPackages; inherit (lib) makeExtensible; lib' = pkgs.callPackage ./lib.nix { }; @@ -42,29 +43,29 @@ let elvis-erlang = callPackage ./elvis-erlang { }; # BEAM-based languages. - elixir = elixir_1_13; + elixir = elixir_1_14; - elixir_1_13 = lib'.callElixir ../interpreters/elixir/1.13.nix { + elixir_1_14 = lib'.callElixir ../interpreters/elixir/1.14.nix { inherit erlang; debugInfo = true; }; - elixir_1_12 = lib'.callElixir ../interpreters/elixir/1.12.nix { + elixir_1_13 = lib'.callElixir ../interpreters/elixir/1.13.nix { inherit erlang; debugInfo = true; }; - elixir_1_11 = lib'.callElixir ../interpreters/elixir/1.11.nix { + elixir_1_12 = lib'.callElixir ../interpreters/elixir/1.12.nix { inherit erlang; debugInfo = true; }; - elixir_1_10 = lib'.callElixir ../interpreters/elixir/1.10.nix { + elixir_1_11 = lib'.callElixir ../interpreters/elixir/1.11.nix { inherit erlang; debugInfo = true; }; - elixir_1_9 = lib'.callElixir ../interpreters/elixir/1.9.nix { + elixir_1_10 = lib'.callElixir ../interpreters/elixir/1.10.nix { inherit erlang; debugInfo = true; }; @@ -72,10 +73,10 @@ let # Remove old versions of elixir, when the supports fades out: # https://hexdocs.pm/elixir/compatibility-and-deprecations.html - elixir_ls = callPackage ./elixir-ls { 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; }; + lfe = lfe_2_1; + lfe_2_1 = lib'.callLFE ../interpreters/lfe/2.1.nix { inherit erlang buildRebar3 buildHex; }; # Non hex packages. Examples how to build Rebar/Mix packages with and # without helper functions buildRebar3 and buildMix. diff --git a/nixpkgs/pkgs/development/beam-modules/elixir-ls/default.nix b/nixpkgs/pkgs/development/beam-modules/elixir-ls/default.nix index 72862d5b9689..a4666f1520ab 100644 --- a/nixpkgs/pkgs/development/beam-modules/elixir-ls/default.nix +++ b/nixpkgs/pkgs/development/beam-modules/elixir-ls/default.nix @@ -1,29 +1,30 @@ -{ lib, elixir, fetchFromGitHub, fetchMixDeps, mixRelease }: +{ lib, elixir, fetchFromGitHub, fetchMixDeps, mixRelease, nix-update-script }: # Based on the work of Hauleth # None of this would have happened without him let pname = "elixir-ls"; - pinData = lib.importJSON ./pin.json; - version = pinData.version; + version = "0.14.6"; src = fetchFromGitHub { owner = "elixir-lsp"; repo = "elixir-ls"; rev = "v${version}"; - sha256 = pinData.sha256; + hash = "sha256-O977DZLWPyLafIaOTPZKI4MOtK9E9TDProf2xyk05aI"; fetchSubmodules = true; }; in mixRelease { inherit pname version src elixir; + stripDebug = true; + mixFodDeps = fetchMixDeps { pname = "mix-deps-${pname}"; inherit src version elixir; - sha256 = pinData.depsSha256; + hash = "sha256-jF1Plkz1D85aWkiNgeBlJmHndhr7us+8+m/gMkXHvDw="; }; - # elixir_ls is an umbrella app + # elixir-ls is an umbrella app # override configurePhase to not skip umbrella children configurePhase = '' runHook preConfigure @@ -31,7 +32,7 @@ mixRelease { runHook postConfigure ''; - # elixir_ls require a special step for release + # elixir-ls require a special step for release # compile and release need to be performed together because # of the no-deps-check requirement buildPhase = '' @@ -71,5 +72,5 @@ mixRelease { platforms = platforms.unix; maintainers = teams.beam.members; }; - passthru.updateScript = ./update.sh; + passthru.updateScript = nix-update-script { }; } diff --git a/nixpkgs/pkgs/development/beam-modules/elixir-ls/pin.json b/nixpkgs/pkgs/development/beam-modules/elixir-ls/pin.json deleted file mode 100644 index a10bee67d893..000000000000 --- a/nixpkgs/pkgs/development/beam-modules/elixir-ls/pin.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "0.10.0", - "sha256": "sha256-3/Ndf7cOZZ9H+Oq6LQgoMcbtUNoBaDuiy5YKT40yA3E=", - "depsSha256": "sha256-6FghRXKNXgwxwtGeW+ejVsbaCN7rrCDYu3AZgJCYODU=" -} diff --git a/nixpkgs/pkgs/development/beam-modules/elixir-ls/update.sh b/nixpkgs/pkgs/development/beam-modules/elixir-ls/update.sh deleted file mode 100755 index eaa73815d735..000000000000 --- a/nixpkgs/pkgs/development/beam-modules/elixir-ls/update.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/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 -set -x - -const directory = $(dirname $0 | xargs realpath) -const owner = "elixir-lsp" -const repo = "elixir-ls" -const latest_rev = $(curl -q https://api.github.com/repos/${owner}/${repo}/releases/latest | \ - jq -r '.tag_name') -const latest_version = $(echo $latest_rev | sd 'v' '') -const current_version = $(jq -r '.version' $directory/pin.json) -if ("$latest_version" === "$current_version") { - echo "elixir-ls is already up-to-date" - return 0 -} else { - const tarball_meta = $(nix-prefetch-github $owner $repo --rev "$latest_rev") - const tarball_hash = "sha256-$(echo $tarball_meta | jq -r '.sha256')" - const sha256s = $(rg '"sha256-.+"' $directory/default.nix | sd '.+"(.+)";' '$1' ) - - jq ".version = \"$latest_version\" | \ - .\"sha256\" = \"$tarball_hash\" | \ - .\"depsSha256\" = \"\"" $directory/pin.json | sponge $directory/pin.json - - const new_mix_hash = $(nix-build -A elixir_ls.mixFodDeps 2>&1 | \ - tail -n 1 | \ - sd '\s+got:\s+' '') - - jq ".depsSha256 = \"$new_mix_hash\"" $directory/pin.json | sponge $directory/pin.json -} diff --git a/nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix b/nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix index a2739e4b6f6f..952034d5e01a 100644 --- a/nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix +++ b/nixpkgs/pkgs/development/beam-modules/erlang-ls/default.nix @@ -1,7 +1,7 @@ { fetchFromGitHub, fetchgit, fetchHex, rebar3Relx, buildRebar3, rebar3-proper -, stdenv, writeScript, lib }: +, stdenv, writeScript, lib, erlang }: let - version = "0.35.0"; + version = "0.47.1"; owner = "erlang-ls"; repo = "erlang_ls"; deps = import ./rebar-deps.nix { @@ -11,6 +11,11 @@ let proper = super.proper.overrideAttrs (_: { configurePhase = "true"; }); + redbug = super.redbug.overrideAttrs (_: { + patchPhase = '' + substituteInPlace rebar.config --replace ", warnings_as_errors" "" + ''; + }); }); }; in @@ -19,11 +24,17 @@ rebar3Relx { inherit version; src = fetchFromGitHub { inherit owner repo; - sha256 = "sha256-5pGFLatcNqxpQZtu/qgwX88C8TZvk+U8ez2IGf+jgRA="; + sha256 = "sha256-pW78CBOM0Yi5taPHdCfTTb9H1fbhuQFpf6jaf0cTQdA="; rev = version; }; releaseType = "escript"; beamDeps = builtins.attrValues deps; + + # https://github.com/erlang-ls/erlang_ls/issues/1429 + postPatch = '' + rm apps/els_lsp/test/els_diagnostics_SUITE.erl + ''; + buildPlugins = [ rebar3-proper ]; buildPhase = "HOME=. make"; # based on https://github.com/erlang-ls/erlang_ls/blob/main/.github/workflows/build.yml @@ -45,6 +56,7 @@ rebar3Relx { description = "The Erlang Language Server"; platforms = platforms.unix; license = licenses.asl20; + mainProgram = "erlang_ls"; }; passthru.updateScript = writeScript "update.sh" '' #!/usr/bin/env nix-shell diff --git a/nixpkgs/pkgs/development/beam-modules/erlfmt/default.nix b/nixpkgs/pkgs/development/beam-modules/erlfmt/default.nix index da577f2264c0..8c1d3f72c7e0 100644 --- a/nixpkgs/pkgs/development/beam-modules/erlfmt/default.nix +++ b/nixpkgs/pkgs/development/beam-modules/erlfmt/default.nix @@ -2,12 +2,12 @@ rebar3Relx rec { pname = "erlfmt"; - version = "1.0.0"; + version = "1.2.0"; releaseType = "escript"; src = fetchFromGitHub { owner = "WhatsApp"; repo = "erlfmt"; - sha256 = "19apbs9xr4j8qjb3sv9ilknqjw4a7bvp8jvwrjiwvwnxzzm2kjm6"; + sha256 = "sha256-mma4QH6GlayTG5I9hW9wNZph/IJcCXjiY7Ft3hfxaPg="; rev = "v${version}"; }; meta = with lib; { diff --git a/nixpkgs/pkgs/development/beam-modules/fetch-hex.nix b/nixpkgs/pkgs/development/beam-modules/fetch-hex.nix index 9c2ed1ea22b6..2d1fa623745a 100644 --- a/nixpkgs/pkgs/development/beam-modules/fetch-hex.nix +++ b/nixpkgs/pkgs/development/beam-modules/fetch-hex.nix @@ -6,8 +6,6 @@ , meta ? { } }: -with lib; - stdenv.mkDerivation ({ pname = "hex-source-${pkg}"; inherit version; @@ -21,9 +19,18 @@ stdenv.mkDerivation ({ }; unpackCmd = '' - tar -xf $curSrc contents.tar.gz + tar -xf $curSrc contents.tar.gz CHECKSUM metadata.config mkdir contents tar -C contents -xzf contents.tar.gz + mv metadata.config contents/hex_metadata.config + + # To make the extracted hex tarballs appear legitimate to mix, we need to + # make sure they contain not just the contents of contents.tar.gz but also + # a .hex file with some lock metadata. + # We use an old version of .hex file per hex's mix_task_test.exs since it + # is just plain-text instead of an encoded format. + # See: https://github.com/hexpm/hex/blob/main/test/hex/mix_task_test.exs#L410 + echo -n "${pkg},${version},$(cat CHECKSUM | tr '[:upper:]' '[:lower:]'),hexpm" > contents/.hex ''; installPhase = '' diff --git a/nixpkgs/pkgs/development/beam-modules/fetch-mix-deps.nix b/nixpkgs/pkgs/development/beam-modules/fetch-mix-deps.nix index ac6d5f3c8b92..b9a1add3c7d1 100644 --- a/nixpkgs/pkgs/development/beam-modules/fetch-mix-deps.nix +++ b/nixpkgs/pkgs/development/beam-modules/fetch-mix-deps.nix @@ -2,7 +2,8 @@ { pname , version -, sha256 +, hash ? "" +, sha256 ? "" , src , mixEnv ? "prod" , debug ? false @@ -13,6 +14,12 @@ , ... }@attrs: +let + hash_ = + if hash != "" then { outputHashAlgo = null; outputHash = hash; } + else if sha256 != "" then { outputHashAlgo = "sha256"; outputHash = sha256; } + else { outputHashAlgo = "sha256"; outputHash = lib.fakeSha256; }; +in stdenvNoCC.mkDerivation (attrs // { nativeBuildInputs = [ elixir hex cacert git ]; @@ -45,16 +52,14 @@ stdenvNoCC.mkDerivation (attrs // { installPhase = attrs.installPhase or '' runHook preInstall - mix deps.get --only ${mixEnv} + mix deps.get ''${MIX_ENV:+--only $MIX_ENV} find "$TEMPDIR/deps" -path '*/.git/*' -a ! -name HEAD -exec rm -rf {} + cp -r --no-preserve=mode,ownership,timestamps $TEMPDIR/deps $out runHook postInstall ''; - outputHashAlgo = "sha256"; outputHashMode = "recursive"; - outputHash = sha256; impureEnvVars = lib.fetchers.proxyImpureEnvVars; inherit meta; -}) +} // hash_) diff --git a/nixpkgs/pkgs/development/beam-modules/fetch-rebar-deps.nix b/nixpkgs/pkgs/development/beam-modules/fetch-rebar-deps.nix index 31bef024d320..b253e16761ba 100644 --- a/nixpkgs/pkgs/development/beam-modules/fetch-rebar-deps.nix +++ b/nixpkgs/pkgs/development/beam-modules/fetch-rebar-deps.nix @@ -7,19 +7,18 @@ , meta ? { } }: -with lib; - stdenv.mkDerivation ({ pname = "rebar-deps-${name}"; inherit version; dontUnpack = true; dontConfigure = true; - dontBuild = true; dontFixup = true; - prePhases = '' - cp ${src} . + buildPhase = '' + cp -r ${src} src + chmod -R u+w src + cd src HOME='.' DEBUG=1 ${rebar3}/bin/rebar3 get-deps ''; diff --git a/nixpkgs/pkgs/development/beam-modules/hex/default.nix b/nixpkgs/pkgs/development/beam-modules/hex/default.nix index c9e45c480610..32628886f11f 100644 --- a/nixpkgs/pkgs/development/beam-modules/hex/default.nix +++ b/nixpkgs/pkgs/development/beam-modules/hex/default.nix @@ -8,13 +8,13 @@ let pkg = self: stdenv.mkDerivation rec { pname = "hex"; - version = "1.0.1"; + version = "2.0.6"; src = fetchFromGitHub { owner = "hexpm"; repo = "hex"; rev = "v${version}"; - sha256 = "sha256-5g2MDbStlUrAPQCv1xWp+oPyRIOqARmlsKo/ONLTLnY="; + sha256 = "sha256-fSADQDrqh5U/TdhaHXsMiLMk1wtQ0gEiTqEclJ2w2nY="; }; setupHook = writeText "setupHook.sh" '' diff --git a/nixpkgs/pkgs/development/beam-modules/lib.nix b/nixpkgs/pkgs/development/beam-modules/lib.nix index 1b021cf93472..2d93b28cda6b 100644 --- a/nixpkgs/pkgs/development/beam-modules/lib.nix +++ b/nixpkgs/pkgs/development/beam-modules/lib.nix @@ -1,5 +1,8 @@ -{ pkgs, lib }: +{ __splicedPackages, lib }: +let + pkgs = __splicedPackages; +in rec { /* Similar to callPackageWith/callPackage, but without makeOverridable diff --git a/nixpkgs/pkgs/development/beam-modules/mix-release.nix b/nixpkgs/pkgs/development/beam-modules/mix-release.nix index 0b7229a21b5a..1d40da27ecba 100644 --- a/nixpkgs/pkgs/development/beam-modules/mix-release.nix +++ b/nixpkgs/pkgs/development/beam-modules/mix-release.nix @@ -9,15 +9,25 @@ , enableDebugInfo ? false , mixEnv ? "prod" , compileFlags ? [ ] + # mix fixed output derivation dependencies , mixFodDeps ? null + # mix dependencies generated by mix2nix # this assumes each dependency is built by buildMix or buildRebar3 # each dependency needs to have a setup hook to add the lib path to $ERL_LIBS # this is how mix will find dependencies , mixNixDeps ? { } + , elixir ? inputs.elixir , hex ? inputs.hex.override { inherit elixir; } + +# This reduces closure size, but can lead to some hard to understand runtime +# errors, so use with caution. See e.g. +# https://github.com/whitfin/cachex/issues/205 +# https://framagit.org/framasoft/mobilizon/-/issues/1169 +, stripDebug ? false + , ... }@attrs: let @@ -25,6 +35,8 @@ let overridable = builtins.removeAttrs attrs [ "compileFlags" "mixNixDeps" ]; in assert mixNixDeps != { } -> mixFodDeps == null; +assert stripDebug -> !enableDebugInfo; + stdenv.mkDerivation (overridable // { # rg is used as a better grep to search for erlang references in the final release nativeBuildInputs = nativeBuildInputs ++ [ erlang hex elixir makeWrapper git ripgrep ]; @@ -116,6 +128,10 @@ stdenv.mkDerivation (overridable // { substituteInPlace "$file" --replace "${erlang}/lib/erlang" "$out" done fi + '' + lib.optionalString stripDebug '' + # strip debug symbols to avoid hardreferences to "foreign" closures actually + # not needed at runtime, while at the same time reduce size of BEAM files. + erl -noinput -eval 'lists:foreach(fun(F) -> io:format("Stripping ~p.~n", [F]), beam_lib:strip(F) end, filelib:wildcard("'"$out"'/**/*.beam"))' -s init stop ''; # TODO investigate why the resulting closure still has diff --git a/nixpkgs/pkgs/development/beam-modules/rebar3-release.nix b/nixpkgs/pkgs/development/beam-modules/rebar3-release.nix index 59771c340295..b884809505f3 100644 --- a/nixpkgs/pkgs/development/beam-modules/rebar3-release.nix +++ b/nixpkgs/pkgs/development/beam-modules/rebar3-release.nix @@ -22,15 +22,13 @@ , ... }@attrs: -with lib; - let shell = drv: stdenv.mkDerivation { name = "interactive-shell-${drv.pname}"; buildInputs = [ drv ]; }; - customPhases = filterAttrs + customPhases = lib.filterAttrs (_: v: v != null) { inherit setupHook configurePhase buildPhase installPhase; }; @@ -105,4 +103,4 @@ let } // (if attrs ? passthru then attrs.passthru else { })); } // customPhases); in -fix pkg +lib.fix pkg |