summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 98b486e1b343016792308da30c677dd9c3c3d0e3 (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
# Maintainer: Kevin Stolp <kevinstolp@gmail.com>
# Contributor: 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.22.9
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-2990-rebased.patch
        botocore-2551.patch)
sha256sums=('8c94b72d1300c7ca3a4c47fb53507d3d04512b4ea15e5ae1c72e33bf57791dac'
            'SKIP'
            '0267e41561ab2c46a97ebfb024f0b047aabc9e6b9866f204b2c1a84ee5810d63'
            '893d61d7e958c3c02bfa1e03bf58f6f6abd98849d248cc661f1c56423df9f312'
            '4fc614b8550d7363bb2d578c6b49326c9255203eb2f933fd0551f96ed5fb1f30'
            'b3442e645a983c1c2c99079a991421b356e9474f43d4ae35d43af5c7cf94e71e'
            '6768df8667fe7fd827e6eef1c4cdb3eae25aba5806bbc725270200a585f62152'
            'a43c3e9aba8974fc09f1780a37b6a94108b15dbbbcecdf6d9e7e224ca135816b'
            '778c621885dae2218c840eec06a0e0294df7d1180dea12264b34a93994be7c0d')
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

  pushd awscli

  # Backport fixes for urllib3 2.x to vendored botocore
  # [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
}

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
#  # * Disable lockfile test since requirements-docs-lock.txt file is not present in downloaded archive
#  "$PWD/venv/bin/python" -m pytest tests -n 2 --dist loadfile --ignore=tests/backends --ignore=tests/integration --deselect='tests/dependencies/test_closure.py::TestDependencyClosure::test_lockfile_pins_within_runtime_dependencies_bounds[requirements-docs-lock.txt]'
#}

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"
}