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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
{ lib
, python3
, groff
, less
, fetchFromGitHub
, nix-update-script
, testers
, awscli2
}:
let
py = python3.override {
packageOverrides = self: super: {
ipython = super.ipython.overridePythonAttrs (oldAttrs: rec {
pname = "ipython";
version = "8.5.0";
src = self.fetchPypi {
inherit pname version;
sha256 = "sha256-CXvfXNh1dv0GYXnJ9/IIAE96aGTuGyDzfTRsC8sJn4Q=";
};
disabledTests = [ "testIPythonLexer" ] ++ oldAttrs.disabledTests;
});
prompt-toolkit = super.prompt-toolkit.overridePythonAttrs (oldAttrs: rec {
version = "3.0.28";
src = self.fetchPypi {
pname = "prompt_toolkit";
inherit version;
hash = "sha256-nxzRax6GwpaPJRnX+zHdnWaZFvUVYSwmnRTp7VK1FlA=";
};
});
};
};
in
with py.pkgs; buildPythonApplication rec {
pname = "awscli2";
version = "2.11.6"; # N.B: if you change this, check if overrides are still up-to-date
format = "pyproject";
src = fetchFromGitHub {
owner = "aws";
repo = "aws-cli";
rev = version;
hash = "sha256-6VEDGakOx2LJcDbBKicxxfOt0t2tf2iaRXkx1Em0Ieg=";
};
postPatch = ''
substituteInPlace requirements/bootstrap.txt \
--replace "pip>=22.0.0,<23.0.0" "pip>=22.0.0,<24.0.0"
substituteInPlace pyproject.toml \
--replace "distro>=1.5.0,<1.6.0" "distro>=1.5.0" \
--replace "cryptography>=3.3.2,<38.0.5" "cryptography>=3.3.2"
'';
nativeBuildInputs = [
flit-core
];
propagatedBuildInputs = [
awscrt
bcdoc
colorama
cryptography
distro
docutils
groff
less
prompt-toolkit
pyyaml
rsa
ruamel-yaml
python-dateutil
jmespath
urllib3
];
nativeCheckInputs = [
jsonschema
mock
pytestCheckHook
];
postInstall = ''
mkdir -p $out/${python3.sitePackages}/awscli/data
${python3.interpreter} scripts/gen-ac-index --index-location $out/${python3.sitePackages}/awscli/data/ac.index
mkdir -p $out/share/bash-completion/completions
echo "complete -C $out/bin/aws_completer aws" > $out/share/bash-completion/completions/aws
mkdir -p $out/share/zsh/site-functions
mv $out/bin/aws_zsh_completer.sh $out/share/zsh/site-functions
rm $out/bin/aws.cmd
'';
doCheck = true;
preCheck = ''
export PATH=$PATH:$out/bin
export HOME=$(mktemp -d)
'';
pytestFlagsArray = [
"-Wignore::DeprecationWarning"
];
disabledTestPaths = [
# Integration tests require networking
"tests/integration"
# Disable slow tests (only run unit tests)
"tests/backends"
"tests/functional"
];
pythonImportsCheck = [
"awscli"
];
passthru = {
python = py; # for aws_shell
updateScript = nix-update-script {
# Excludes 1.x versions from the Github tags list
extraArgs = [ "--version-regex" "^(2\.(.*))" ];
};
tests.version = testers.testVersion {
package = awscli2;
command = "aws --version";
version = version;
};
};
meta = with lib; {
homepage = "https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html";
changelog = "https://github.com/aws/aws-cli/blob/${version}/CHANGELOG.rst";
description = "Unified tool to manage your AWS services";
license = licenses.asl20;
maintainers = with maintainers; [ bhipple davegallant bryanasdev000 devusb anthonyroussel ];
mainProgram = "aws";
};
}
|