%global srcname fabric
%global forgeurl https://github.com/fabric/%{srcname}
%global tag %{version}
Version: 2.6.0
%global distprefix %{nil}
%forgemeta
# Tests are disabled by default. 😞
# Enable if https://bugzilla.redhat.com/show_bug.cgi?id=1949502 /
# https://github.com/bitprophet/pytest-relaxed/issues/12 is resolved:
%bcond_with tests
Name: python-%{srcname}
Release: 2%{?dist}
Summary: High level SSH command execution
License: BSD
URL: %forgeurl
Source0: %forgesource
# Use built-in unittest.mock in python 3.
# https://github.com/fabric/fabric/pull/2168
Patch0: python-fabric-Use-standard-library-unittest.mock-on-Python-3.6-and.patch
# Use built-in pathlib in python 3.
# https://github.com/fabric/fabric/pull/2167
Patch1: python-fabric-Put-conditional-unittest.mock-imports-last-to-placat.patch
# Fall back to system modules if vendorized ones do not exist.
# https://github.com/fabric/fabric/pull/2169
Patch2: python-fabric-Finish-wrapping-invoke.vendor.-imports-so-standalone.patch
BuildArch: noarch
BuildRequires: python3-devel
BuildRequires: python3-setuptools
# Runtime dependencies, needed for testing
BuildRequires: python3-invoke
BuildRequires: python3-paramiko
# Runtime dependencies upstream assumed would be vendored with invoke, but
# which we must use standalone
BuildRequires: python3-decorator
BuildRequires: python3-lexicon
BuildRequires: python3-six
%if %{with tests}
# Extra pytest (a superset of extra testing)
BuildRequires: python3-pytest
# Missing from setup.py (only in requirements-dev.txt), but still needed for
# testing:
BuildRequires: python3-pytest-relaxed
%endif
BuildRequires: help2man
%global _description %{expand:
Fabric is a high level Python (2.7, 3.4+) library designed to execute shell
commands remotely over SSH, yielding useful Python objects in return. It builds
on top of Invoke (subprocess command execution and command-line features) and
Paramiko (SSH protocol implementation), extending their APIs to complement one
another and provide additional functionality.}
%description %{_description}
%package -n python3-%{srcname}
Summary: %{summary}
# Runtime dependencies upstream assumed would be vendored with invoke, but
# which we must use standalone
Requires: python3-decorator
Requires: python3-lexicon
Requires: python3-six
%description -n python3-%{srcname} %{_description}
%package -n python-%{srcname}-doc
Summary: Documentation for %{name}
BuildRequires: python3-sphinx
BuildRequires: python3-sphinx_rtd_theme
%description -n python-%{srcname}-doc
Documentation for %{srcname}.
%prep
%autosetup -p1 -n %{srcname}-%{version}
%build
%py3_build
PYTHONPATH=${PWD} sphinx-build-3 sites/docs html
rm -rf html/.{doctrees,buildinfo}
# Entry point script that allows us to use help2man before installing
cat > fab <<'EOF'
#!%{__python3}
from fabric.main import program
program.run()
EOF
chmod +x fab
PYTHONPATH="${PWD}" help2man --no-info --output fab.1 ./fab
%install
%py3_install
install -d %{buildroot}%{_mandir}/man1
install -t %{buildroot}%{_mandir}/man1 -m 0644 -p fab.1
%check
%if %{with tests}
%pytest
%endif
%files -n python3-%{srcname}
%license LICENSE
%doc README.rst
%{_bindir}/fab
%{_mandir}/man1/fab.1*
%{python3_sitelib}/%{srcname}
%{python3_sitelib}/%{srcname}-%{version}-py%{python3_version}.egg-info
%files -n python-%{srcname}-doc
%doc html
%license LICENSE
%changelog
* Tue Jul 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.0-2
- Second attempt - Rebuilt for
https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Jun 01 2021 Major Hayden <major@mhtx.net> - 2.6.0-1
- First package.