blob: 10ff7946de41c7b73111b51292c5ae13f1816572 (
plain)
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
145
146
147
|
# Maintainer: Kino <cybao292261@163.com>
# Contributor: Chih-Hsuan Yen <yan12125@archlinux.org>
# Contributor: Marcel Campello <marcel.campello@prafrentex.com.br>
# Contributor: David Birks <david@birks.dev>
pkgname=aws-cli-v2
# https://github.com/aws/aws-cli/raw/v2/CHANGELOG.rst
pkgver=2.15.55
pkgrel=1
pkgdesc='Unified command line interface for Amazon Web Services (version 2)'
arch=(any)
url='https://github.com/aws/aws-cli/tree/v2'
license=("Apache-2.0")
depends=(python python-awscrt python-certifi python-colorama python-cryptography python-dateutil
python-distro python-docutils python-jmespath python-prompt_toolkit python-ruamel-yaml
python-urllib3)
makedepends=(python-build python-wheel python-flit-core python-installer)
# Tests need the 'ps' binary
checkdepends=(python-pytest python-pytest-xdist python-jsonschema procps-ng)
provides=(aws-cli)
conflicts=(aws-cli)
install=aws-cli-v2.install
source=("https://awscli.amazonaws.com/awscli-$pkgver.tar.gz"{,.sig}
build-ac.index-in-tmp.diff
fix-env.diff
"$pkgname-tz-fix.patch"
"${pkgname}-ruamel-yaml-v4.patch"
allow-egg-info.diff
botocore-2922.patch
botocore-2924.patch
botocore-2990-rebased.patch
botocore-2551.patch
aws-cli-v2-8106.patch
botocore-2967.patch)
sha256sums=('fabb50b6637dff46933a20550ea10d98e7823ebc50f41968cb4c44b659a67008'
'SKIP'
'0267e41561ab2c46a97ebfb024f0b047aabc9e6b9866f204b2c1a84ee5810d63'
'893d61d7e958c3c02bfa1e03bf58f6f6abd98849d248cc661f1c56423df9f312'
'4fc614b8550d7363bb2d578c6b49326c9255203eb2f933fd0551f96ed5fb1f30'
'20a9fcd5235bf606e86a6ec06ca30307ebbcfd36063d2ac561c1f9eff7243046'
'6768df8667fe7fd827e6eef1c4cdb3eae25aba5806bbc725270200a585f62152'
'62be6cad0f9039ae682abffd167181abbd4a690e2680867418c5542893d74b36'
'aad8b863d9f9107c56401e71d76b71f526efd9f8efac31e2a007b9071f85b5b6'
'a43c3e9aba8974fc09f1780a37b6a94108b15dbbbcecdf6d9e7e224ca135816b'
'778c621885dae2218c840eec06a0e0294df7d1180dea12264b34a93994be7c0d'
'2a22315f1877917370a22bc6023aa01de5f4c661f980f638e32fa4d6681a40c6'
'24dffdc1d03e8a5745606b82f3b1af44523ccee257b618620307ae6c596e7e5e')
validpgpkeys=(
'FB5DB77FD5C118B80511ADA8A6310ACC4672475C' # the key mentioned on https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
)
prepare() {
cd awscli-$pkgver
# Don't treat warnings as errors
sed -i '/"error::/d' pyproject.toml
# ac.index is an SQLite database, and building it on copy-on-write filesystems (ex: BTRFS) takes ages
patch -Np1 -i ../build-ac.index-in-tmp.diff
# Fix conflicts between tests/functional/test_clidriver.py::TestSession and tests/functional/botocore/leak/test_resource_leaks.py
patch -Np1 -i ../fix-env.diff
# Fix possible test failure with a non-UTC time zone (https://bugs.archlinux.org/task/77919)
patch -Np1 -i ../$pkgname-tz-fix.patch
# Fix tests with newer ruamel.yaml
# https://github.com/aws/aws-cli/pull/8072 (unmerged)
patch -Np1 -i ../${pkgname}-ruamel-yaml-v4.patch
# tests/dependencies checks dependencies, and many Arch Linux packages are not using PEP 517 yet
patch -Np1 -i ../allow-egg-info.diff
# Python 3.12 patches from https://github.com/aws/aws-cli/issues/8342#issuecomment-2067638456
patch -Np1 -i ../aws-cli-v2-8106.patch
patch -Np1 -i ../botocore-2967.patch
pushd awscli
# Backport fixes for urllib3 2.x to vendored botocore
# [Defer to system defaults for cipher suites with urllib3 2.0+](https://github.com/boto/botocore/pull/2922)
patch --no-backup-if-mismatch -Np1 -i ../../botocore-2922.patch
# [Do not set_ciphers(DEFAULT_CIPHERS) if DEFAULT_CIPHERS is None](https://github.com/boto/botocore/pull/2924)
patch --no-backup-if-mismatch -Np1 -i ../../botocore-2924.patch
# [Move 100-continue behavior to use high-level request interface](https://github.com/boto/botocore/pull/2990)
# Manually rebased due to conflicts from refactoring
patch --no-backup-if-mismatch -Np1 -i ../../botocore-2990-rebased.patch
# Backport an update to vendored six.py for compatibility with Python 3.12
# [Update six from 1.10.0 to 1.16.0](https://github.com/boto/botocore/pull/2551)
patch --no-backup-if-mismatch -Np1 -i ../../botocore-2551.patch
popd
# use unittest.mock
# https://src.fedoraproject.org/rpms/awscli2/blob/rawhide/f/awscli2.spec
find -type f -name '*.py' -exec sed \
-e 's/^\( *\)import mock$/\1from unittest import mock/' \
-e 's/^\( *\)from mock import mock/\1from unittest import mock/' \
-e 's/^\( *\)from mock import/\1from unittest.mock import/' \
-i '{}' +
}
build() {
cd awscli-$pkgver
# flit-core adds runtime dependencies to reported build-time dependencies [1],
# and upstream often lags behind the latest dependencies [2], thus --skip-dependency-check
# [1] https://github.com/pypa/flit/issues/354
# [2] https://github.com/aws/aws-cli/issues/5943
python -m build --wheel --no-isolation --skip-dependency-check
# Copy the built ac.index for tests
cp -v build/unpacked_wheel/awscli/data/ac.index awscli/data/ac.index
}
#check() {
# # Avoid intermittent test failures, see git commit messages
# ulimit -S -n 4096
#
# # Avoid the user's environment variable from being used in the tests
# unset AWS_DEFAULT_PROFILE
# unset AWS_PROFILE
# unset AWS_REGION
#
# cd awscli-$pkgver
#
# export AWS_SECRET_ACCESS_KEY=fake_key
# export AWS_ACCESS_KEY_ID=fake_id
# export TZ=UTC
#
# export PYTHONPATH="$PWD"
#
# # Install a temporary copy to a virtual environment, as tests/dependencies checks global site-packages
# python -m venv --system-site-packages "$PWD/venv"
# "$PWD/venv/bin/python" -m installer dist/*.whl
#
# # * Use --dist=loadfile following upstream. The default --dist=load may cause test failures and is not faster
# # * Disable backend tests - those tests check if aws-cli can be installed or not, and are not compatible with all kinds of environments
# "$PWD/venv/bin/python" -m pytest tests -n 2 --dist loadfile --ignore=tests/backends --ignore=tests/integration
#}
package() {
cd awscli-$pkgver
python -m installer --destdir="$pkgdir" dist/*.whl
install -Dm 644 LICENSE.txt "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
install -Dm 644 bin/aws_bash_completer "$pkgdir/usr/share/bash-completion/completions/aws"
}
|