1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
{
lib,
stdenv,
buildPythonPackage,
fetchFromGitHub,
cargo,
configobj,
cython,
dulwich,
fastbencode,
fastimport,
pygithub,
libiconv,
merge3,
patiencediff,
pyyaml,
tzlocal,
urllib3,
breezy,
launchpadlib,
testtools,
pythonOlder,
installShellFiles,
rustPlatform,
rustc,
setuptools-gettext,
setuptools-rust,
testers,
}:
buildPythonPackage rec {
pname = "breezy";
version = "3.3.7";
pyproject = true;
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = "breezy-team";
repo = "breezy";
rev = "brz-${version}";
hash = "sha256-NSfMUyx6a/vb1vTNn/fFfNktrFdB2N940m0TR6EhB9k=";
};
cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; };
postPatch = ''
ln -s ${./Cargo.lock} Cargo.lock
'';
nativeBuildInputs = [
cython
installShellFiles
rustPlatform.cargoSetupHook
cargo
rustc
setuptools-gettext
setuptools-rust
];
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
propagatedBuildInputs =
[
configobj
dulwich
fastbencode
merge3
patiencediff
pyyaml
tzlocal
urllib3
]
++ passthru.optional-dependencies.launchpad
++ passthru.optional-dependencies.fastimport
++ passthru.optional-dependencies.github;
nativeCheckInputs = [ testtools ];
# multiple failures on sandbox
doCheck = false;
checkPhase = ''
runHook preCheck
HOME=$TMPDIR $out/bin/brz --no-plugins selftest
runHook postCheck
'';
postInstall = ''
wrapProgram $out/bin/brz --prefix PYTHONPATH : "$PYTHONPATH"
# symlink for bazaar compatibility
ln -s "$out/bin/brz" "$out/bin/bzr"
installShellCompletion --cmd brz --bash contrib/bash/brz
'';
pythonImportsCheck = [
"breezy"
"breezy.bzr.rio"
];
passthru = {
tests.version = testers.testVersion {
package = breezy;
command = "HOME=$TMPDIR brz --version";
};
optional-dependencies = {
launchpad = [ launchpadlib ];
fastimport = [ fastimport ];
github = [ pygithub ];
};
};
meta = with lib; {
description = "Friendly distributed version control system";
homepage = "https://www.breezy-vcs.org/";
changelog = "https://github.com/breezy-team/breezy/blob/${src.rev}/doc/en/release-notes/brz-${versions.majorMinor version}.txt";
license = licenses.gpl2Only;
maintainers = [ ];
mainProgram = "brz";
};
}
|