Blob Blame History Raw
%global modname absl
%global srcname %{modname}-py
%global reponame abseil-py
%global egginfo_name %(echo %{srcname} | tr - _)

Name:           python-%{srcname}
Version:        0.11.0
Release:        2%{?dist}
Summary:        Abseil Python Common Libraries

# Overall license is ASL 2.0. Contents of absl/third_party/unittest3_backport/
# are under the Python license (derived from the Python 3 standard library).
License:        ASL 2.0 and Python
URL:            https://github.com/abseil/%{reponame}/
Source0:        %{url}/archive/pypi-v%{version}/%{reponame}-pypi-v%{version}.tar.gz

BuildArch:      noarch

%global common_description %{expand:
This repository is a collection of Python library code for building Python
applications. The code is collected from Google’s own Python code base, and has
been extensively tested and used in production.

Features:

  • Simple application startup
  • Distributed commandline flags system
  • Custom logging module with additional features
  • Testing utilities}

%description %{common_description}


%package -n     python%{python3_pkgversion}-%{srcname}
Summary:        %{summary}
%py_provides python%{python3_pkgversion}-%{srcname}

BuildRequires:  python%{python3_pkgversion}-devel >= 3.4
BuildRequires:  python%{python3_pkgversion}-setuptools
BuildRequires:  python%{python3_pkgversion}-six

Requires:       python%{python3_pkgversion}-six

%description -n python%{python3_pkgversion}-%{srcname} %{common_description}


%package -n     python2-%{srcname}
Summary:        %{summary}
%py_provides python2-%{srcname}

BuildRequires:  python2-devel >= 2.7
BuildRequires:  python2-setuptools
BuildRequires:  python2-six
BuildRequires:  python2-enum34

Requires:       python2-six
Requires:       python2-enum34

%description -n python2-%{srcname} %{common_description}


%prep
%autosetup -n %{reponame}-pypi-v%{version}
cp -p absl/third_party/unittest3_backport/LICENSE LICENSE-PYTHON

# Despite the third_party/ prefix, absl/third_party/unittest3_backport/ is not
# exactly a bundled library. On Python 3, it is merely a shim around the
# unittest module from the Python standard library. On Python 2, it is a
# backport of much of the added functionality from the Python 3 version of the
# unittest module; while derived from some version of the Python 3 standard
# library, this backport is specific to absl-py, is maintained in the same
# source code repository, and appears not to be separately distributed or used
# by any other software.


%build
%py3_build
%py2_build


%install
%py3_install
# No async support in Python 2; if we built with bazel (not available in EPEL),
# it would take care of not installing this in the Python 2 environment. We
# need to remove it manually instead. If we left it, byte-compiling would fail
# with a syntax error.
find . -name _parameterized_async.py -print -delete
%py2_install


%check
# We cannot use smoke_tests/smoke_test.sh because it downloads things from the
# Internet. We can, however, run the sample Python scripts manually, which is
# better than nothing.
PYTHONPATH=%{buildroot}/%{python3_sitelib}; export PYTHONPATH
%{__python3} smoke_tests/sample_app.py --echo smoke
%{__python3} smoke_tests/sample_test.py
PYTHONPATH=%{buildroot}/%{python2_sitelib}; export PYTHONPATH
%{__python2} smoke_tests/sample_app.py --echo smoke
%{__python2} smoke_tests/sample_test.py

# Running the actual test suite requires bazel, which will almost certainly
# never be packaged for EPEL due to its Byzantine mass of bundled
# dependencies. It is possible to invoke the tests with another runner, such as
# pytest, but there are many spurious failures due to the incorrect
# environment, so it is useless to do so.


%files -n python%{python3_pkgversion}-%{srcname}
%license LICENSE
%license LICENSE-PYTHON
%doc AUTHORS
%doc CONTRIBUTING.md
%doc README.md
%doc smoke_tests

%{python3_sitelib}/%{modname}
%{python3_sitelib}/%{egginfo_name}-%{version}-py%{python3_version}.egg-info


%files -n python2-%{srcname}
%license LICENSE
%license LICENSE-PYTHON
%doc AUTHORS
%doc CONTRIBUTING.md
%doc README.md
%doc smoke_tests

%{python2_sitelib}/%{modname}
%{python2_sitelib}/%{egginfo_name}-%{version}-py%{python2_version}.egg-info


%changelog
* Thu Nov 26 2020 Benjamin A. Beasley <code@musicinmybrain.net> - 1.1.0-2
- Remove EPEL conditionals from Fedora spec file
* Wed Nov 25 2020 Benjamin A. Beasley <code@musicinmybrain.net> - 1.1.0-1
- Initial package