annotate contrib/nix/flake.nix @ 51580:b70628a9aa7e

phases: use revision number in new_heads All graph operations will be done using revision numbers, so passing nodes only means they will eventually get converted to revision numbers internally. As part of an effort to align the code on using revision number we make the `phases.newheads` function operated on revision number, taking them as input and using them in returns, instead of the node-id it used to consume and produce. This is part of multiple changesets effort to translate more part of the logic, but is done step by step to facilitate the identification of issue that might arise in mercurial core and extensions. To make the change simpler to handle for third party extensions, we also rename the function, using a more modern form. This will help detecting the different between the node-id version and the rev-num version. I also take this as an opportunity to add some comment about possible performance improvement for the future. They don't matter too much now, but they are worse exploring in a while.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 05 Apr 2024 11:33:47 +0200
parents be676c313c7b
children 541292a02e09
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
50456
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
1 # flake.nix - Nix-defined package and devel env for the Mercurial project.
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
2 #
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
3 # Copyright 2021-2023 Pacien TRAN-GIRARD <pacien.trangirard@pacien.net>
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
4 #
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
5 # This software may be used and distributed according to the terms of the
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
6 # GNU General Public License version 2 or any later version.
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
7
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
8 # Usage summary, from the root of this repository:
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
9 #
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
10 # Enter a shell with development tools:
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
11 # nix develop 'hg+file:.?dir=contrib/nix'
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
12 #
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
13 # Running mercurial:
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
14 # nix run 'hg+file:.?dir=contrib/nix' -- version
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
15 #
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
16 # Running the test suite in a sandbox:
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
17 # nix build 'hg+file:.?dir=contrib/nix#mercurial-tests' -L
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
18
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
19 {
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
20 inputs = {
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
21 nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11";
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
22 nixpkgs-black.url = "github:NixOS/nixpkgs/c7cb72b0"; # black 20.8b1
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
23 # rust-overlay.url = "github:oxalica/rust-overlay";
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
24 flake-utils.url = "github:numtide/flake-utils";
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
25 flaky-utils.url = "git+https://cgit.pacien.net/libs/flaky-utils";
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
26 };
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
27
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
28 outputs = {
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
29 self
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
30 , nixpkgs
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
31 , nixpkgs-black
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
32 # , rust-overlay
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
33 , flake-utils
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
34 , flaky-utils
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
35 }:
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
36 flake-utils.lib.eachDefaultSystem (system:
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
37 let
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
38 # overlays = [ (import rust-overlay) ];
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
39 pkgs = import nixpkgs { inherit system; };
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
40
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
41 # We're in the contrib/nix sub-directory.
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
42 src = ../..;
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
43
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
44 # For snapshots, to satisfy extension minimum version requirements.
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
45 dummyVersion = "99.99";
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
46
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
47 pin = {
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
48 # The test suite has issues with the latest/current versions of Python.
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
49 # Use an older recommended version instead, matching the CI.
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
50 python = pkgs.python39;
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
51
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
52 # The project uses a pinned version (rust/clippy.toml) for compiling,
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
53 # but uses formatter features from nightly.
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
54 # TODO: make cargo use the formatter from nightly automatically
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
55 # (not supported by rustup/cargo yet? workaround?)
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
56 # rustPlatform = pkgs.rust-bin.stable."1.61.0".default;
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
57 # rustPlatformFormatter = pkgs.rust-bin.nightly."2023-04-20".default;
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
58
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
59 # The CI uses an old version of the Black code formatter,
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
60 # itself depending on old Python libraries.
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
61 # The formatting rules have changed in more recent versions.
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
62 inherit (import nixpkgs-black { inherit system; }) black;
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
63 };
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
64
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
65 in rec {
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
66 apps.mercurial = apps.mercurial-rust;
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
67 apps.default = apps.mercurial;
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
68 apps.mercurial-c = flake-utils.lib.mkApp {
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
69 drv = packages.mercurial-c;
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
70 };
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
71 apps.mercurial-rust = flake-utils.lib.mkApp {
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
72 drv = packages.mercurial-rust;
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
73 };
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
74
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
75 packages.mercurial = packages.mercurial-rust;
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
76 packages.default = packages.mercurial;
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
77
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
78 packages.mercurial-c = pin.python.pkgs.buildPythonApplication {
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
79 format = "other";
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
80 pname = "mercurial";
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
81 version = "SNAPSHOT";
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
82 passthru.exePath = "/bin/hg";
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
83 inherit src;
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
84
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
85 postPatch = ''
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
86 echo 'version = b"${toString dummyVersion}"' \
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
87 > mercurial/__version__.py
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
88
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
89 patchShebangs .
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
90
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
91 for f in **/*.{py,c,t}; do
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
92 # not only used in shebangs
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
93 substituteAllInPlace "$f" '/bin/sh' '${pkgs.stdenv.shell}'
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
94 done
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
95 '';
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
96
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
97 buildInputs = with pin.python.pkgs; [
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
98 docutils
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
99 ];
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
100
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
101 nativeBuildInputs = with pkgs; [
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
102 gettext
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
103 installShellFiles
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
104 ];
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
105
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
106 makeFlags = [
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
107 "PREFIX=$(out)"
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
108 ];
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
109
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
110 buildPhase = ''
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
111 make local
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
112 '';
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
113
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
114 # Test suite is huge ; run on-demand in a separate package instead.
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
115 doCheck = false;
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
116 };
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
117
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
118 packages.mercurial-rust = packages.mercurial-c.overrideAttrs (super: {
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
119 cargoRoot = "rust";
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
120 cargoDeps = pkgs.rustPlatform.importCargoLock {
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
121 lockFile = "${src}/rust/Cargo.lock";
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
122 };
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
123
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
124 nativeBuildInputs = (super.nativeBuildInputs or []) ++ (
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
125 with pkgs.rustPlatform; [
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
126 cargoSetupHook
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
127 rust.cargo
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
128 rust.rustc
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
129 ]
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
130 );
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
131
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
132 makeFlags = (super.makeFlags or []) ++ [
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
133 "PURE=--rust"
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
134 ];
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
135 });
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
136
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
137 packages.mercurial-tests = pkgs.stdenv.mkDerivation {
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
138 pname = "mercurial-tests";
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
139 version = "SNAPSHOT";
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
140 inherit src;
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
141
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
142 buildInputs = with pkgs; [
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
143 pin.python
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
144 pin.black
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
145 unzip
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
146 which
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
147 sqlite
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
148 ];
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
149
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
150 postPatch = (packages.mercurial.postPatch or "") + ''
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
151 # * paths emitted by our wrapped hg look like ..hg-wrapped-wrapped
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
152 # * 'hg' is a wrapper; don't run using python directly
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
153 for f in **/*.t; do
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
154 substituteInPlace 2>/dev/null "$f" \
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
155 --replace '*/hg:' '*/*hg*:' \
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
156 --replace '"$PYTHON" "$BINDIR"/hg' '"$BINDIR"/hg'
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
157 done
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
158 '';
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
159
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
160 buildPhase = ''
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
161 export HGTEST_REAL_HG="${packages.mercurial}/bin/hg"
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
162 export HGMODULEPOLICY="rust+c"
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
163 export HGTESTFLAGS="--blacklist blacklists/nix"
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
164 make check 2>&1 | tee "$out"
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
165 '';
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
166 };
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
167
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
168 devShell = flaky-utils.lib.mkDevShell {
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
169 inherit pkgs;
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
170
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
171 tools = [
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
172 pin.python
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
173 pin.black
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
174 ];
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
175 };
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
176 });
be676c313c7b nix: add nix-defined package and devel env (flake)
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
177 }