%if 0%{?rhel} # some tests fail on EL9 %bcond_with all_tests %else %bcond_without all_tests %endif %global pkgname aws-cli Name: awscli2 Version: 2.13.4 Release: 1%{?dist}.1 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 # adapt to whitespace formatting changes and removal of OrderedDict in ruamel-yaml Patch0: ruamel-yaml-0.17.32.patch BuildArch: noarch BuildRequires: python%{python3_pkgversion}-devel BuildRequires: python-unversioned-command BuildRequires: procps-ng 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 '{}' + # Fedora does not run coverage tests. # mock is deprecated in Fedora. We use unittest.mock. # pip-tools is not used directly by the unit tests. sed \ -e 's|==.*||' \ -e '/coverage/d' \ -e '/mock/d' \ -e '/pip-tools/d' \ -e '/pytest-cov/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}%{bash_completions_dir}/aws install -Dpm0644 bin/aws_zsh_completer.sh \ %{buildroot}%{zsh_completions_dir}/_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 # =========================== short test summary info ============================ # FAILED tests/functional/cloudfront/test_sign.py::TestSign::test_canned_policy # FAILED tests/functional/cloudfront/test_sign.py::TestSign::test_custom_policy # FAILED tests/functional/ssm/test_start_session.py::TestSessionManager::test_start_session_fails # FAILED tests/functional/ssm/test_start_session.py::TestSessionManager::test_start_session_success # ERROR tests/functional/autocomplete/test_completion_files.py # ERROR tests/functional/botocore/test_waiter_config.py # ======= 4 failed, 64966 passed, 7 skipped, 2 errors in 874.01s (0:14:34) ======= # # the latter are weird # ==================================== ERRORS ==================================== # ___ ERROR collecting tests/functional/autocomplete/test_completion_files.py ____ # ImportError while importing test module '/builddir/build/BUILD/aws-cli-2.13.4/tests/functional/autocomplete/test_completion_files.py'. # Hint: make sure your test modules/packages have valid Python names. # Traceback: # /usr/lib64/python3.9/importlib/__init__.py:127: in import_module # return _bootstrap._gcd_import(name[level:], package, level) # tests/functional/autocomplete/test_completion_files.py:14: in # from jsonschema import Draft4Validator # /usr/lib/python3.9/site-packages/jsonschema/__init__.py:34: in # __version__ = metadata.version("jsonschema") # /usr/lib64/python3.9/importlib/metadata.py:569: in version # return distribution(distribution_name).version # /usr/lib64/python3.9/importlib/metadata.py:542: in distribution # return Distribution.from_name(distribution_name) # /usr/lib64/python3.9/importlib/metadata.py:196: in from_name # raise PackageNotFoundError(name) # E importlib.metadata.PackageNotFoundError: jsonschema # _______ ERROR collecting tests/functional/botocore/test_waiter_config.py _______ # ImportError while importing test module '/builddir/build/BUILD/aws-cli-2.13.4/tests/functional/botocore/test_waiter_config.py'. # Hint: make sure your test modules/packages have valid Python names. # Traceback: # /usr/lib64/python3.9/importlib/__init__.py:127: in import_module # return _bootstrap._gcd_import(name[level:], package, level) # tests/functional/botocore/test_waiter_config.py:14: in # from jsonschema import Draft4Validator # /usr/lib/python3.9/site-packages/jsonschema/__init__.py:34: in # __version__ = metadata.version("jsonschema") # /usr/lib64/python3.9/importlib/metadata.py:569: in version # return distribution(distribution_name).version # /usr/lib64/python3.9/importlib/metadata.py:542: in distribution # return Distribution.from_name(distribution_name) # /usr/lib64/python3.9/importlib/metadata.py:196: in from_name # raise PackageNotFoundError(name) # E importlib.metadata.PackageNotFoundError: jsonschema # =========================== short test summary info ============================ # ERROR tests/functional/autocomplete/test_completion_files.py # ERROR tests/functional/botocore/test_waiter_config.py # ============ 64963 passed, 7 skipped, 2 errors in 942.68s (0:15:42) ============ # # =========================== short test summary info ============================ # FAILED tests/unit/test_utils.py::TestIgnoreCtrlC::test_ctrl_c_is_ignored - Va... # FAILED tests/unit/customizations/test_sessionmanager.py::TestSessionManager::test_start_session_when_no_profile_is_passed # FAILED tests/unit/customizations/ecs/test_executecommand_startsession.py::TestExecuteCommand::test_execute_command_success # ============ 3 failed, 64962 passed, 7 skipped in 858.78s (0:14:18) ============ # # =========================== short test summary info ============================ # FAILED tests/functional/test_no_event_streams.py::test_no_event_stream_unless_allowed # FAILED tests/functional/test_output.py::TestYAMLStream::test_yaml_stream_paginated_response # FAILED tests/functional/test_output.py::TestYAMLStream::test_yaml_stream_removes_response_metadata_for_all_responses # FAILED tests/functional/botocore/test_paginate.py::TestRDSPagination::test_can_specify_zero_marker # FAILED tests/functional/botocore/test_paginate.py::TestAutoscalingPagination::test_repeated_build_full_results # FAILED tests/functional/botocore/test_paginate.py::TestCloudwatchLogsPagination::test_token_with_triple_underscores # FAILED tests/functional/lightsail/test_push_container_image.py::TestPushContainerImageTest::test_start_lightsailctl_success # FAILED tests/functional/lightsail/test_push_container_image.py::TestPushContainerImageTest::test_start_lightsailctl_with_cabundle_ssuccess # FAILED tests/functional/lightsail/test_push_container_image.py::TestPushContainerImageTest::test_start_lightsailctl_with_con_timeout_ssuccess # FAILED tests/functional/lightsail/test_push_container_image.py::TestPushContainerImageTest::test_start_lightsailctl_with_no_paginate_ssuccess # FAILED tests/functional/lightsail/test_push_container_image.py::TestPushContainerImageTest::test_start_lightsailctl_with_no_sign_request_ssuccess # FAILED tests/functional/lightsail/test_push_container_image.py::TestPushContainerImageTest::test_start_lightsailctl_with_no_verify_ssl_ssuccess # FAILED tests/functional/lightsail/test_push_container_image.py::TestPushContainerImageTest::test_start_lightsailctl_with_output_json_ssuccess # FAILED tests/functional/lightsail/test_push_container_image.py::TestPushContainerImageTest::test_start_lightsailctl_with_read_timeout_ssuccess # FAILED tests/functional/lightsail/test_push_container_image.py::TestPushContainerImageTest::test_start_lightsailctl_with_region_success # FAILED tests/functional/lightsail/test_push_container_image.py::TestPushContainerImageTest::test_start_lightsailctl_with_url_success # =========== 16 failed, 64945 passed, 7 skipped in 858.70s (0:14:18) ============ # %if %{with all_tests} %pytest --verbose --numprocesses=auto --dist=loadfile tests/unit tests/functional %else EXCLUDES="not test_canned_policy and not test_custom_policy" EXCLUDES+=" and not test_start_session_fails and not test_start_session_success" EXCLUDES+=" and not test_ctrl_c_is_ignored and not test_start_session_when_no_profile_is_passed" EXCLUDES+=" and not test_execute_command_success" EXCLUDES+=" and not test_no_event_stream_unless_allowed" EXCLUDES+=" and not test_yaml_stream_paginated_response and not test_yaml_stream_removes_response_metadata_for_all_responses" EXCLUDES+=" and not test_can_specify_zero_marker and not test_repeated_build_full_results" EXCLUDES+=" and not test_token_with_triple_underscore" %pytest --verbose --numprocesses=auto --dist=loadfile tests/unit tests/functional \ -k "$EXCLUDES" --ignore=tests/functional/autocomplete/test_completion_files.py \ --ignore=tests/functional/botocore/test_waiter_config.py \ --ignore=tests/functional/lightsail/test_push_container_image.py %endif %files -f %{pyproject_files} %license LICENSE.txt %doc README.rst %{_bindir}/aws %{_bindir}/aws_completer %{bash_completions_dir}/aws %{zsh_completions_dir}/_awscli %changelog * Mon Sep 11 2023 Michel Lind - 2.13.4-1.1 - Initial Hyperscale release, adapted from 2.13.4-1.fc38