Merge pull request #36168 from ryantm/majorminor

a single version attribute for expressions previously using "majorVersion"

Changed files
+50 -5
lib
pkgs
tools
networking
haproxy
+1 -1
lib/default.nix
···
maintainers = import ./maintainers-list.nix;
meta = callLibs ./meta.nix;
sources = callLibs ./sources.nix;
-
# module system
modules = callLibs ./modules.nix;
···
maintainers = import ./maintainers-list.nix;
meta = callLibs ./meta.nix;
sources = callLibs ./sources.nix;
+
versions = callLibs ./versions.nix;
# module system
modules = callLibs ./modules.nix;
+47
lib/versions.nix
···
···
+
/* Version string functions. */
+
{ lib }:
+
+
let
+
+
splitVersion = builtins.splitVersion or (lib.splitString ".");
+
+
in
+
+
rec {
+
+
/* Get the major version string from a string.
+
+
Example:
+
major "1.2.3"
+
=> "1"
+
*/
+
major = v: builtins.elemAt (splitVersion v) 0;
+
+
/* Get the minor version string from a string.
+
+
Example:
+
minor "1.2.3"
+
=> "2"
+
*/
+
minor = v: builtins.elemAt (splitVersion v) 1;
+
+
/* Get the patch version string from a string.
+
+
Example:
+
patch "1.2.3"
+
=> "3"
+
*/
+
patch = v: builtins.elemAt (splitVersion v) 2;
+
+
/* Get string of the first two parts (major and minor)
+
of a version string.
+
+
Example:
+
majorMinor "1.2.3"
+
=> "1.2"
+
*/
+
majorMinor = v:
+
builtins.concatStringsSep "."
+
(lib.take 2 (splitVersion v));
+
+
}
+2 -4
pkgs/tools/networking/haproxy/default.nix
···
stdenv.mkDerivation rec {
pname = "haproxy";
-
majorVersion = "1.7";
-
minorVersion = "9";
-
version = "${majorVersion}.${minorVersion}";
name = "${pname}-${version}";
src = fetchurl {
-
url = "https://www.haproxy.org/download/${majorVersion}/src/${name}.tar.gz";
sha256 = "1072337e54fa188dc6e0cfe3ba4c2200b07082e321cbfe5a0882d85d54db068e";
};
···
stdenv.mkDerivation rec {
pname = "haproxy";
+
version = "1.7.9";
name = "${pname}-${version}";
src = fetchurl {
+
url = "https://www.haproxy.org/download/${stdenv.lib.versions.majorMinor version}/src/${name}.tar.gz";
sha256 = "1072337e54fa188dc6e0cfe3ba4c2200b07082e321cbfe5a0882d85d54db068e";
};