diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/version-management/mercurial/default.nix')
-rw-r--r-- | nixpkgs/pkgs/applications/version-management/mercurial/default.nix | 50 |
1 files changed, 40 insertions, 10 deletions
diff --git a/nixpkgs/pkgs/applications/version-management/mercurial/default.nix b/nixpkgs/pkgs/applications/version-management/mercurial/default.nix index 26d263b060d4..3caf499d31ac 100644 --- a/nixpkgs/pkgs/applications/version-management/mercurial/default.nix +++ b/nixpkgs/pkgs/applications/version-management/mercurial/default.nix @@ -1,29 +1,59 @@ -{ lib, stdenv, fetchurl, python3Packages, makeWrapper, unzip +{ lib, stdenv, fetchurl, fetchpatch, python3Packages, makeWrapper, gettext +, re2Support ? true +, rustSupport ? stdenv.hostPlatform.isLinux, rustPlatform , guiSupport ? false, tk ? null , ApplicationServices }: let - inherit (python3Packages) docutils python; + inherit (python3Packages) docutils python fb-re2; in python3Packages.buildPythonApplication rec { pname = "mercurial"; - version = "5.6"; + version = "5.8"; src = fetchurl { url = "https://mercurial-scm.org/release/mercurial-${version}.tar.gz"; - sha256 = "1hk2y30zzdnlv8f71kabvh0xi9c7qhp28ksh20vpd0r712sv79yz"; + sha256 = "17rhlmmkqz5ll3k68jfzpcifg3nndbcbc2nx7kw8xn3qcj7nlpgw"; }; + patches = [ + # https://phab.mercurial-scm.org/D10638, needed for below patch to apply + (fetchpatch { + url = "https://phab.mercurial-scm.org/file/data/oymk4awh2dd7q6cwjbzu/PHID-FILE-bfcr7qrp5spg42wspxpd/D10638.diff"; + sha256 = "0mfi324is02l7cnd3j0gbmg5rpyyqn3afg3f73flnfwmz5njqa5f"; + }) + # https://phab.mercurial-scm.org/D10639, fixes https://bz.mercurial-scm.org/show_bug.cgi?id=6514 + (fetchpatch { + url = "https://phab.mercurial-scm.org/file/data/re4uqdhtknjiacx2ogwu/PHID-FILE-4m26id65dno5gzix2ngh/D10639.diff"; + sha256 = "0h5ilrd2x1789fr6sf4k1mcvxdh0xdyr94yawdacw87v3x12c8cb"; + }) + ]; + format = "other"; passthru = { inherit python; }; # pass it so that the same version can be used in hg2git - nativeBuildInputs = [ makeWrapper unzip ]; + cargoDeps = if rustSupport then rustPlatform.fetchCargoTarball { + inherit src; + name = "${pname}-${version}"; + sha256 = "1kc2giqvfwsdl5fb0qmz96ws1gdrs3skfdzvpiif2i8f7r4nqlhd"; + sourceRoot = "${pname}-${version}/rust"; + } else null; + cargoRoot = if rustSupport then "rust" else null; + + propagatedBuildInputs = lib.optional re2Support fb-re2; + nativeBuildInputs = [ makeWrapper gettext ] + ++ lib.optionals rustSupport (with rustPlatform; [ + cargoSetupHook + rust.cargo + rust.rustc + ]); buildInputs = [ docutils ] ++ lib.optionals stdenv.isDarwin [ ApplicationServices ]; - makeFlags = [ "PREFIX=$(out)" ]; + makeFlags = [ "PREFIX=$(out)" ] + ++ lib.optional rustSupport "PURE=--rust"; postInstall = (lib.optionalString guiSupport '' mkdir -p $out/etc/mercurial @@ -52,14 +82,14 @@ in python3Packages.buildPythonApplication rec { install -v -m644 -D contrib/zsh_completion $out/share/zsh/site-functions/_hg ''; - meta = { + meta = with lib; { inherit version; description = "A fast, lightweight SCM system for very large distributed projects"; homepage = "https://www.mercurial-scm.org"; downloadPage = "https://www.mercurial-scm.org/release/"; - license = lib.licenses.gpl2; - maintainers = [ lib.maintainers.eelco ]; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ eelco lukegb ]; updateWalker = true; - platforms = lib.platforms.unix; + platforms = platforms.unix; }; } |