summaryrefslogtreecommitdiff
path: root/awscli2.spec
blob: 73a655f1eb22129bab25762d17a5d5499d5eb03b (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
%bcond tests 1

%global pkgname aws-cli

Name:               awscli2
Version:            2.15.31
Release:            3%{?dist}

Summary:            Universal Command Line Environment for AWS, version 2
# all files are licensed under Apache-2.0, except:
# - awscli/topictags.py is MIT
# - awscli/botocore/vendored/six.py is MIT
License:            Apache-2.0 AND MIT
URL:                https://github.com/aws/aws-cli/tree/v2
Source0:            https://github.com/aws/aws-cli/archive/%{version}/%{pkgname}-%{version}.tar.gz

BuildArch:          noarch

BuildRequires:      python3-devel
BuildRequires:      python-unversioned-command
BuildRequires:      procps-ng

# Needed for paging output from awscli2. See RHEL-14523.
Requires:           less

Recommends:         groff

Provides:           bundled(python3dist(botocore)) = 2.0.0
Provides:           bundled(python3dist(s3transfer)) = 0.5.1

Provides:           awscli = %{version}-%{release}
Obsoletes:          awscli < 2

# provide an upgrade path from awscli-2 (Amazon Linux)
Provides:           awscli-2 = %{version}-%{release}
Obsoletes:          awscli-2 < %{version}-%{release}

# python-awscrt does not build on s390x
ExcludeArch:        s390x


%description
This package provides version 2 of the unified command line
interface to Amazon Web Services.


%prep
%autosetup -p1 -n %{pkgname}-%{version}

# fix permissions
find awscli/examples/ -type f -name '*.rst' -executable -exec chmod -x '{}' +

# remove version caps on dependencies
sed -i 's/,<=\?[^"]*"/"/' pyproject.toml

# use unittest.mock
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 '{}' +

# RHEL does not run coverage tests.
# mock is deprecated in RHEL. We use unittest.mock.
# pip-tools is not used directly by the unit tests.
# pytest-xdist is unwanted in RHEL.
sed \
    -e 's|==.*||' \
    -e '/coverage/d' \
    -e '/mock/d' \
    -e '/pip-tools/d' \
    -e '/pytest-cov/d' \
    %{?rhel:-e '/pytest-xdist/d'} \
    requirements-test.txt > _requirements-test.txt


%generate_buildrequires
%pyproject_buildrequires _requirements-test.txt


%build
%pyproject_wheel


%install
%pyproject_install
%pyproject_save_files awscli

# remove unnecessary scripts
rm -vf %{buildroot}%{_bindir}/{aws_bash_completer,aws_zsh_completer.sh,aws.cmd}

# install shell completion
install -Dpm0644 bin/aws_bash_completer \
  %{buildroot}%{_datadir}/bash-completion/completions/aws
install -Dpm0644 bin/aws_zsh_completer.sh \
  %{buildroot}%{_datadir}/zsh/site-functions/_awscli


%check
# it appears that some tests modify the environment and remove PYTHONPATH
# so it's not passed to botocore cmd-runner, inject it here
sed -i '/self.driver.start(env=env)/i \ \ \ \ \ \ \ \ env["PYTHONPATH"] = "%{buildroot}%{python3_sitelib}"' \
    tests/utils/botocore/__init__.py

export TESTS_REMOVE_REPO_ROOT_FROM_PATH=1 TZ=UTC
%if 0%{?rhel}
export OPENSSL_ENABLE_SHA1_SIGNATURES=yes
%endif
%pytest --verbose %{!?rhel:--numprocesses=auto --dist=loadfile --maxprocesses=4} \
  --disable-pytest-warnings -Wd \
  tests/unit tests/functional \
  --ignore tests/functional/autocomplete/test_completion_files.py \
  --ignore tests/functional/botocore/test_waiter_config.py


%files -f %{pyproject_files}
%license LICENSE.txt
%doc README.rst
%{_bindir}/aws
%{_bindir}/aws_completer
%{_datadir}/bash-completion/completions/aws
%{_datadir}/zsh/site-functions/_awscli


%changelog
* Fri May 31 2024 Major Hayden <major@redhat.com> - 2.15.31-3
- Add less to install requirements for paging output. Resolves RHEL-14523.

* Thu May 09 2024 Major Hayden <major@redhat.com> - 2.15.31-2
- Remove colorama patches
- Bring in the latest updates from Fedora

* Wed Jan 31 2024 Major Hayden <major@redhat.com> - 2.15.31-1
- Initial RHEL 9 package.