erlang: normalize version name

authored by superherointj and committed by Yt 441cbfcf e400f935

+51 -42
+4 -4
doc/languages-frameworks/beam.section.md
··· 14 15 All BEAM-related expressions are available via the top-level `beam` attribute, which includes: 16 17 - - `interpreters`: a set of compilers running on the BEAM, including multiple Erlang/OTP versions (`beam.interpreters.erlangR22`, etc), Elixir (`beam.interpreters.elixir`) and LFE (Lisp Flavoured Erlang) (`beam.interpreters.lfe`). 18 19 - `packages`: a set of package builders (Mix and rebar3), each compiled with a specific Erlang/OTP version, e.g. `beam.packages.erlang22`. 20 ··· 22 23 To create a package builder built with a custom Erlang version, use the lambda, `beam.packagesWith`, which accepts an Erlang/OTP derivation and produces a package builder similar to `beam.packages.erlang`. 24 25 - Many Erlang/OTP distributions available in `beam.interpreters` have versions with ODBC and/or Java enabled or without wx (no observer support). For example, there's `beam.interpreters.erlangR22_odbc_javac`, which corresponds to `beam.interpreters.erlangR22` and `beam.interpreters.erlangR22_nox`, which corresponds to `beam.interpreters.erlangR22`. 26 27 ## Build Tools {#build-tools} 28 ··· 154 with import <nixpkgs> { }; 155 156 let 157 - # beam.interpreters.erlangR23 is available if you need a particular version 158 packages = beam.packagesWith beam.interpreters.erlang; 159 160 pname = "your_project"; ··· 274 275 with pkgs; 276 let 277 - elixir = beam.packages.erlangR24.elixir_1_12; 278 in 279 mkShell { 280 buildInputs = [ elixir ];
··· 14 15 All BEAM-related expressions are available via the top-level `beam` attribute, which includes: 16 17 + - `interpreters`: a set of compilers running on the BEAM, including multiple Erlang/OTP versions (`beam.interpreters.erlang_22`, etc), Elixir (`beam.interpreters.elixir`) and LFE (Lisp Flavoured Erlang) (`beam.interpreters.lfe`). 18 19 - `packages`: a set of package builders (Mix and rebar3), each compiled with a specific Erlang/OTP version, e.g. `beam.packages.erlang22`. 20 ··· 22 23 To create a package builder built with a custom Erlang version, use the lambda, `beam.packagesWith`, which accepts an Erlang/OTP derivation and produces a package builder similar to `beam.packages.erlang`. 24 25 + Many Erlang/OTP distributions available in `beam.interpreters` have versions with ODBC and/or Java enabled or without wx (no observer support). For example, there's `beam.interpreters.erlang_22_odbc_javac`, which corresponds to `beam.interpreters.erlang_22` and `beam.interpreters.erlang_22_nox`, which corresponds to `beam.interpreters.erlang_22`. 26 27 ## Build Tools {#build-tools} 28 ··· 154 with import <nixpkgs> { }; 155 156 let 157 + # beam.interpreters.erlang_23 is available if you need a particular version 158 packages = beam.packagesWith beam.interpreters.erlang; 159 160 pname = "your_project"; ··· 274 275 with pkgs; 276 let 277 + elixir = beam.packages.erlang_24.elixir_1_12; 278 in 279 mkShell { 280 buildInputs = [ elixir ];
pkgs/development/interpreters/erlang/R21.nix pkgs/development/interpreters/erlang/21.nix
pkgs/development/interpreters/erlang/R22.nix pkgs/development/interpreters/erlang/22.nix
pkgs/development/interpreters/erlang/R23.nix pkgs/development/interpreters/erlang/23.nix
pkgs/development/interpreters/erlang/R24.nix pkgs/development/interpreters/erlang/24.nix
pkgs/development/interpreters/erlang/R25.nix pkgs/development/interpreters/erlang/25.nix
+1 -1
pkgs/development/interpreters/erlang/generic-builder.nix
··· 158 latest=$(list-git-tags --url=https://github.com/erlang/otp.git | sed -n 's/^OTP-${major}/${major}/p' | sort -V | tail -1) 159 if [ "$latest" != "${version}" ]; then 160 nixpkgs="$(git rev-parse --show-toplevel)" 161 - nix_file="$nixpkgs/pkgs/development/interpreters/erlang/R${major}.nix" 162 update-source-version ${baseName}R${major} "$latest" --version-key=version --print-changes --file="$nix_file" 163 else 164 echo "${baseName}R${major} is already up-to-date"
··· 158 latest=$(list-git-tags --url=https://github.com/erlang/otp.git | sed -n 's/^OTP-${major}/${major}/p' | sort -V | tail -1) 159 if [ "$latest" != "${version}" ]; then 160 nixpkgs="$(git rev-parse --show-toplevel)" 161 + nix_file="$nixpkgs/pkgs/development/interpreters/erlang/${major}.nix" 162 update-source-version ${baseName}R${major} "$latest" --version-key=version --print-changes --file="$nix_file" 163 else 164 echo "${baseName}R${major} is already up-to-date"
+1
pkgs/top-level/aliases.nix
··· 439 enyo-doom = enyo-launcher; # Added 2022-09-09 440 epoxy = libepoxy; # Added 2021-11-11 441 epsxe = throw "epsxe has been removed from nixpkgs, as it was unmaintained."; # added 2021-12-15 442 esniper = throw "esniper has been removed because upstream no longer maintains it (and it no longer works)"; # Added 2021-04-12 443 etcdctl = throw "'etcdctl' has been renamed to/replaced by 'etcd'"; # Converted to throw 2022-02-22 444 eteroj.lv2 = throw "'eteroj.lv2' has been renamed to/replaced by 'open-music-kontrollers.eteroj'"; # Added 2022-03-09
··· 439 enyo-doom = enyo-launcher; # Added 2022-09-09 440 epoxy = libepoxy; # Added 2021-11-11 441 epsxe = throw "epsxe has been removed from nixpkgs, as it was unmaintained."; # added 2021-12-15 442 + inherit (beam.interpreters) erlangR25 erlangR24 erlangR23 erlangR22 erlangR21; # added 2023-03-21 443 esniper = throw "esniper has been removed because upstream no longer maintains it (and it no longer works)"; # Added 2021-04-12 444 etcdctl = throw "'etcdctl' has been renamed to/replaced by 'etcd'"; # Converted to throw 2022-02-22 445 eteroj.lv2 = throw "'eteroj.lv2' has been renamed to/replaced by 'open-music-kontrollers.eteroj'"; # Added 2022-03-09
+3 -3
pkgs/top-level/all-packages.nix
··· 16576 }; 16577 16578 inherit (beam.interpreters) 16579 - erlang erlangR25 erlangR24 erlangR23 erlangR22 erlangR21 16580 erlang_odbc erlang_javac erlang_odbc_javac 16581 elixir elixir_1_14 elixir_1_13 elixir_1_12 elixir_1_11 elixir_1_10 16582 elixir-ls; ··· 16588 rebar rebar3 rebar3WithPlugins 16589 fetchHex beamPackages; 16590 16591 - inherit (beam.packages.erlangR21) lfe lfe_1_3; 16592 16593 gnudatalanguage = callPackage ../development/interpreters/gnudatalanguage { 16594 inherit (llvmPackages) openmp; ··· 24745 etcd_3_4 = callPackage ../servers/etcd/3.4.nix { }; 24746 etcd_3_5 = callPackage ../servers/etcd/3.5.nix { }; 24747 24748 - ejabberd = callPackage ../servers/xmpp/ejabberd { erlang = erlangR24; }; 24749 24750 exhibitor = callPackage ../servers/exhibitor { }; 24751
··· 16576 }; 16577 16578 inherit (beam.interpreters) 16579 + erlang erlang_25 erlang_24 erlang_23 erlang_22 erlang_21 16580 erlang_odbc erlang_javac erlang_odbc_javac 16581 elixir elixir_1_14 elixir_1_13 elixir_1_12 elixir_1_11 elixir_1_10 16582 elixir-ls; ··· 16588 rebar rebar3 rebar3WithPlugins 16589 fetchHex beamPackages; 16590 16591 + inherit (beam.packages.erlang_21) lfe lfe_1_3; 16592 16593 gnudatalanguage = callPackage ../development/interpreters/gnudatalanguage { 16594 inherit (llvmPackages) openmp; ··· 24745 etcd_3_4 = callPackage ../servers/etcd/3.4.nix { }; 24746 etcd_3_5 = callPackage ../servers/etcd/3.5.nix { }; 24747 24748 + ejabberd = callPackage ../servers/xmpp/ejabberd { erlang = erlang_24; }; 24749 24750 exhibitor = callPackage ../servers/exhibitor { }; 24751
+42 -34
pkgs/top-level/beam-packages.nix
··· 12 13 let 14 self = beam; 15 in 16 17 { 18 beamLib = callPackage ../development/beam-modules/lib.nix { }; 19 20 - latestVersion = "erlangR25"; 21 22 # Each 23 interpreters = { ··· 29 30 # Standard Erlang versions, using the generic builder. 31 32 - # R25 33 - erlangR25 = self.beamLib.callErlang ../development/interpreters/erlang/R25.nix { 34 wxGTK = wxGTK32; 35 parallelBuild = true; 36 autoconf = buildPackages.autoconf269; 37 inherit wxSupport systemdSupport; 38 }; 39 - erlangR25_odbc = self.interpreters.erlangR25.override { odbcSupport = true; }; 40 - erlangR25_javac = self.interpreters.erlangR25.override { javacSupport = true; }; 41 - erlangR25_odbc_javac = self.interpreters.erlangR25.override { 42 javacSupport = true; 43 odbcSupport = true; 44 }; 45 46 - # R24 47 - erlangR24 = self.beamLib.callErlang ../development/interpreters/erlang/R24.nix { 48 wxGTK = wxGTK32; 49 # Can be enabled since the bug has been fixed in https://github.com/erlang/otp/pull/2508 50 parallelBuild = true; 51 autoconf = buildPackages.autoconf269; 52 inherit wxSupport systemdSupport; 53 }; 54 - erlangR24_odbc = self.interpreters.erlangR24.override { odbcSupport = true; }; 55 - erlangR24_javac = self.interpreters.erlangR24.override { javacSupport = true; }; 56 - erlangR24_odbc_javac = self.interpreters.erlangR24.override { 57 javacSupport = true; 58 odbcSupport = true; 59 }; 60 61 - # R23 62 - erlangR23 = self.beamLib.callErlang ../development/interpreters/erlang/R23.nix { 63 openssl = openssl_1_1; 64 wxGTK = wxGTK32; 65 # Can be enabled since the bug has been fixed in https://github.com/erlang/otp/pull/2508 ··· 67 autoconf = buildPackages.autoconf269; 68 inherit wxSupport systemdSupport; 69 }; 70 - erlangR23_odbc = self.interpreters.erlangR23.override { odbcSupport = true; }; 71 - erlangR23_javac = self.interpreters.erlangR23.override { javacSupport = true; }; 72 - erlangR23_odbc_javac = self.interpreters.erlangR23.override { 73 javacSupport = true; 74 odbcSupport = true; 75 }; 76 77 - # R22 78 - erlangR22 = self.beamLib.callErlang ../development/interpreters/erlang/R22.nix { 79 openssl = openssl_1_1; 80 wxGTK = wxGTK32; 81 # Can be enabled since the bug has been fixed in https://github.com/erlang/otp/pull/2508 ··· 83 autoconf = buildPackages.autoconf269; 84 inherit wxSupport systemdSupport; 85 }; 86 - erlangR22_odbc = self.interpreters.erlangR22.override { odbcSupport = true; }; 87 - erlangR22_javac = self.interpreters.erlangR22.override { javacSupport = true; }; 88 - erlangR22_odbc_javac = self.interpreters.erlangR22.override { 89 javacSupport = true; 90 odbcSupport = true; 91 }; 92 93 - # R21 94 - erlangR21 = self.beamLib.callErlang ../development/interpreters/erlang/R21.nix { 95 openssl = openssl_1_1; 96 wxGTK = wxGTK32; 97 autoconf = buildPackages.autoconf269; 98 inherit wxSupport systemdSupport; 99 }; 100 - erlangR21_odbc = self.interpreters.erlangR21.override { odbcSupport = true; }; 101 - erlangR21_javac = self.interpreters.erlangR21.override { javacSupport = true; }; 102 - erlangR21_odbc_javac = self.interpreters.erlangR21.override { 103 javacSupport = true; 104 odbcSupport = true; 105 }; 106 107 # Other Beam languages. These are built with `beam.interpreters.erlang`. To 108 # access for example elixir built with different version of Erlang, use 109 - # `beam.packages.erlangR24.elixir`. 110 inherit (self.packages.erlang) 111 elixir elixir_1_14 elixir_1_13 elixir_1_12 elixir_1_11 elixir_1_10 elixir-ls; 112 113 inherit (self.packages.erlang) lfe lfe_1_3; 114 - }; 115 116 # Helper function to generate package set with a specific Erlang version. 117 packagesWith = erlang: ··· 122 packages = { 123 erlang = self.packages.${self.latestVersion}; 124 125 - erlangR25 = self.packagesWith self.interpreters.erlangR25; 126 - erlangR24 = self.packagesWith self.interpreters.erlangR24; 127 - erlangR23 = self.packagesWith self.interpreters.erlangR23; 128 - erlangR22 = self.packagesWith self.interpreters.erlangR22; 129 - erlangR21 = self.packagesWith self.interpreters.erlangR21; 130 - }; 131 }
··· 12 13 let 14 self = beam; 15 + 16 + # Aliases added 2023-03-21 17 + versionLoop = f: lib.lists.foldr (version: acc: (f version) // acc) { } [ "25" "24" "23" "22" "21" ]; 18 + 19 + interpretersAliases = versionLoop (version: { 20 + "erlangR${version}" = self.interpreters."erlang_${version}"; 21 + "erlangR${version}_odbc" = self.interpreters."erlang_${version}_odbc"; 22 + "erlangR${version}_javac" = self.interpreters."erlang_${version}_javac"; 23 + "erlangR${version}_odbc_javac" = self.interpreters."erlang_${version}_odbc_javac"; 24 + }); 25 + 26 + packagesAliases = versionLoop (version: { "erlangR${version}" = self.packages."erlang_${version}"; }); 27 + 28 in 29 30 { 31 beamLib = callPackage ../development/beam-modules/lib.nix { }; 32 33 + latestVersion = "erlang_25"; 34 35 # Each 36 interpreters = { ··· 42 43 # Standard Erlang versions, using the generic builder. 44 45 + erlang_25 = self.beamLib.callErlang ../development/interpreters/erlang/25.nix { 46 wxGTK = wxGTK32; 47 parallelBuild = true; 48 autoconf = buildPackages.autoconf269; 49 inherit wxSupport systemdSupport; 50 }; 51 + erlang_25_odbc = self.interpreters.erlang_25.override { odbcSupport = true; }; 52 + erlang_25_javac = self.interpreters.erlang_25.override { javacSupport = true; }; 53 + erlang_25_odbc_javac = self.interpreters.erlang_25.override { 54 javacSupport = true; 55 odbcSupport = true; 56 }; 57 58 + erlang_24 = self.beamLib.callErlang ../development/interpreters/erlang/24.nix { 59 wxGTK = wxGTK32; 60 # Can be enabled since the bug has been fixed in https://github.com/erlang/otp/pull/2508 61 parallelBuild = true; 62 autoconf = buildPackages.autoconf269; 63 inherit wxSupport systemdSupport; 64 }; 65 + erlang_24_odbc = self.interpreters.erlang_24.override { odbcSupport = true; }; 66 + erlang_24_javac = self.interpreters.erlang_24.override { javacSupport = true; }; 67 + erlang_24_odbc_javac = self.interpreters.erlang_24.override { 68 javacSupport = true; 69 odbcSupport = true; 70 }; 71 72 + erlang_23 = self.beamLib.callErlang ../development/interpreters/erlang/23.nix { 73 openssl = openssl_1_1; 74 wxGTK = wxGTK32; 75 # Can be enabled since the bug has been fixed in https://github.com/erlang/otp/pull/2508 ··· 77 autoconf = buildPackages.autoconf269; 78 inherit wxSupport systemdSupport; 79 }; 80 + erlang_23_odbc = self.interpreters.erlang_23.override { odbcSupport = true; }; 81 + erlang_23_javac = self.interpreters.erlang_23.override { javacSupport = true; }; 82 + erlang_23_odbc_javac = self.interpreters.erlang_23.override { 83 javacSupport = true; 84 odbcSupport = true; 85 }; 86 87 + erlang_22 = self.beamLib.callErlang ../development/interpreters/erlang/22.nix { 88 openssl = openssl_1_1; 89 wxGTK = wxGTK32; 90 # Can be enabled since the bug has been fixed in https://github.com/erlang/otp/pull/2508 ··· 92 autoconf = buildPackages.autoconf269; 93 inherit wxSupport systemdSupport; 94 }; 95 + erlang_22_odbc = self.interpreters.erlang_22.override { odbcSupport = true; }; 96 + erlang_22_javac = self.interpreters.erlang_22.override { javacSupport = true; }; 97 + erlang_22_odbc_javac = self.interpreters.erlang_22.override { 98 javacSupport = true; 99 odbcSupport = true; 100 }; 101 102 + erlang_21 = self.beamLib.callErlang ../development/interpreters/erlang/21.nix { 103 openssl = openssl_1_1; 104 wxGTK = wxGTK32; 105 autoconf = buildPackages.autoconf269; 106 inherit wxSupport systemdSupport; 107 }; 108 + erlang_21_odbc = self.interpreters.erlang_21.override { odbcSupport = true; }; 109 + erlang_21_javac = self.interpreters.erlang_21.override { javacSupport = true; }; 110 + erlang_21_odbc_javac = self.interpreters.erlang_21.override { 111 javacSupport = true; 112 odbcSupport = true; 113 }; 114 115 # Other Beam languages. These are built with `beam.interpreters.erlang`. To 116 # access for example elixir built with different version of Erlang, use 117 + # `beam.packages.erlang_24.elixir`. 118 inherit (self.packages.erlang) 119 elixir elixir_1_14 elixir_1_13 elixir_1_12 elixir_1_11 elixir_1_10 elixir-ls; 120 121 inherit (self.packages.erlang) lfe lfe_1_3; 122 + } // interpretersAliases; 123 124 # Helper function to generate package set with a specific Erlang version. 125 packagesWith = erlang: ··· 130 packages = { 131 erlang = self.packages.${self.latestVersion}; 132 133 + erlang_25 = self.packagesWith self.interpreters.erlang_25; 134 + erlang_24 = self.packagesWith self.interpreters.erlang_24; 135 + erlang_23 = self.packagesWith self.interpreters.erlang_23; 136 + erlang_22 = self.packagesWith self.interpreters.erlang_22; 137 + erlang_21 = self.packagesWith self.interpreters.erlang_21; 138 + } // packagesAliases; 139 }