Blob Blame History Raw
%global commit 54418dbd886821a5ac70062c9dd22833f933a5bf
%global shortcommit %(c=%{commit}; echo ${c:0:7})
%global realname vcstools

%if 0%{?fedora} > 12
%global with_python3 1
%else
%{!?__python2: %global __python2 /usr/bin/python2}
%{!?python2_sitelib: %global python2_sitelib %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())")}
%{!?python2_version: %global python2_version %(%{__python2} -c "from sys import stdout, version; stdout.write(version[:3])")}
%endif

Name:           python-%{realname}
Version:        0.1.40
Release:        1%{?dist}
Summary:        Version Control System tools for Python

License:        BSD
URL:            http://www.ros.org/wiki/vcstools
Source0:        https://github.com/%{realname}/%{realname}/archive/%{commit}/%{realname}-%{version}-%{shortcommit}.tar.gz

BuildArch:      noarch

BuildRequires:  bzr
BuildRequires:  git
BuildRequires:  mercurial
BuildRequires:  python2-coverage
BuildRequires:  python2-dateutil
BuildRequires:  python2-devel
BuildRequires:  python2-mock
BuildRequires:  python2-nose
%if 0%{?rhel} && 0%{?rhel} <= 6
BuildRequires:  python-sphinx10
%else
BuildRequires:  python2-sphinx
%endif
BuildRequires:  python2-pyyaml
BuildRequires:  subversion

%description
The vcstools module provides a Python API for interacting with different
version control systems (VCS/SCMs). The VcsClient class provides an API
for seamless interacting with Git, Mercurial (Hg), Bzr and SVN. The focus
of the API is manipulating on-disk checkouts of source-controlled trees.
Its main use is to support the rosinstall tool.

%package -n python2-%{realname}
Summary: Version Control System tools for Python
%{?python_provide:%python_provide python2-%{realname}}

Requires:       bzr
Requires:       git
Requires:       mercurial
Requires:       python2-dateutil
Requires:       python2-pyyaml
Requires:       subversion

%description -n python2-%{realname}
The vcstools module provides a Python API for interacting with different
version control systems (VCS/SCMs). The VcsClient class provides an API
for seamless interacting with Git, Mercurial (Hg), Bzr and SVN. The focus
of the API is manipulating on-disk checkouts of source-controlled trees.
Its main use is to support the rosinstall tool.

%if 0%{?with_python3}
%package -n python3-%{realname}
Summary: Version Control System tools for Python

BuildRequires:  python3-coverage
BuildRequires:  python3-dateutil
BuildRequires:  python3-devel
BuildRequires:  python3-mock
BuildRequires:  python3-nose
BuildRequires:  python3-setuptools
BuildRequires:  python3-sphinx
BuildRequires:  python3-PyYAML

Requires:       bzr
Requires:       git
Requires:       mercurial
Requires:       python3-dateutil
Requires:       python3-PyYAML
Requires:       subversion
%{?python_provide:%python_provide python3-%{realname}}

%description -n python3-%{realname}
The vcstools module provides a Python API for interacting with different
version control systems (VCS/SCMs). The VcsClient class provides an API
for seamless interacting with Git, Mercurial (Hg), Bzr and SVN. The focus
of the API is manipulating on-disk checkouts of source-controlled trees.
Its main use is to support the rosinstall tool.
%endif # with_python3

%prep
%setup -qn %{realname}-%{commit}
sed -i 's/haiku/default/' doc/conf.py
sed -i 's/:special-members://' doc/vcstools.rst

%if 0%{?with_python3}
rm -rf %{py3dir}
cp -a . %{py3dir}
find %{py3dir} -name '*.py' | xargs sed -i '1s|^#!python|#!%{__python3}|'
%endif # with_python3

find -name '*.py' | xargs sed -i '1s|^#!python|#!%{__python}|'

%build
%{__python2} setup.py build
%if 0%{?rhel} && 0%{?rhel} <= 6
make -C doc html man SPHINXBUILD=sphinx-1.0-build
%else
make -C doc html man
%endif
rm -f doc/_build/html/.buildinfo

%if 0%{?with_python3}
pushd %{py3dir}
%{__python3} setup.py build
make -C doc html man SPHINXBUILD=sphinx-build-%{python3_version}
rm -f doc/_build/html/.buildinfo
popd
%endif # with_python3

%install
%{__python2} setup.py install --root %{buildroot}
mkdir -p %{buildroot}%{_mandir}/man1
chmod -x doc/_build/man/%{realname}.1
install -p -m 0644 doc/_build/man/%{realname}.1 %{buildroot}%{_mandir}/man1/

%if 0%{?with_python3}
pushd %{py3dir}
%{__python3} setup.py install --skip-build --root %{buildroot}
rm -rf %{buildroot}%{python3_sitelib}/setuptools/tests
mkdir -p %{buildroot}%{_mandir}/man1
chmod -x doc/_build/man/%{realname}.1
install -p -m 0644 doc/_build/man/%{realname}.1 %{buildroot}%{_mandir}/man1/python3-%{realname}.1
popd
%endif # with_python3

%check
export GIT_AUTHOR_EMAIL="foo@example.com"
export GIT_AUTHOR_NAME="Foo Bar"
export GIT_COMMITTER_EMAIL="foo@example.com"
export GIT_COMMITTER_NAME="Foo Bar"
export HGUSER="Foo Bar <foo@example.com>"
export LANG=en_US.UTF-8

# Exclude 5 tests which access remote data
# Exclude a test with a bad unicode conversion on python2.6 machines (filed upstream)
%if "%{python2_version}" == "2.6"
nosetests --with-coverage --cover-package %{realname} -w test \
  -e "^(test_git_subm|test_url_matches_with_shortcut|test_checkout|test_checkout_dir_exists|test_checkout_version|test_get_url_by_reading|test_shell_command_verbose)$"
%else
nosetests --with-coverage --cover-package %{realname} -w test \
  -e "^(test_git_subm|test_url_matches_with_shortcut|test_checkout|test_checkout_dir_exists|test_checkout_version|test_get_url_by_reading)$"
%endif

%if 0%{?with_python3}
pushd %{py3dir}
nosetests-%{python3_version} --with-coverage --cover-package %{realname} -w test \
  -e "^(test_git_subm|test_url_matches_with_shortcut|test_checkout|test_checkout_dir_exists|test_checkout_version|test_get_url_by_reading)$"
popd
%endif # with_python3

%files -n python2-%{realname}
%doc doc/_build/html LICENSE
%{python2_sitelib}/%{realname}
%{python2_sitelib}/%{realname}-%{version}-py?.?.egg-info
%{_mandir}/man1/%{realname}.1.gz

%if 0%{?with_python3}
%files -n python3-%{realname}
%doc doc/_build/html LICENSE
%{python3_sitelib}/%{realname}
%{python3_sitelib}/%{realname}-%{version}-py?.?.egg-info
%{_mandir}/man1/python3-%{realname}.1.gz
%endif # with_python3

%changelog
* Mon Jul 23 2018 Rich Mattes <richmattes@gmail.com> - 0.1.40-1
- Update to release 0.1.40 (rhbz#1532912)
- Disable broken unit test (rhbz#1556280)

* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.39-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild

* Tue Jun 19 2018 Miro Hrončok <mhroncok@redhat.com> - 0.1.39-7
- Rebuilt for Python 3.7

* Mon Mar 26 2018 Iryna Shcherbina <ishcherb@redhat.com> - 0.1.39-6
- Update Python 2 dependency declarations to new packaging standards
  (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)

* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.39-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.39-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild

* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.39-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild

* Mon Dec 19 2016 Miro Hrončok <mhroncok@redhat.com> - 0.1.39-2
- Rebuild for Python 3.6

* Thu Oct 20 2016 Rich Mattes <richmattes@gmail.com> - 0.1.39-1
- Update to 0.1.39 (rhbz#1376312)

* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.1.38-4
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages

* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.38-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild

* Tue Nov 10 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.1.38-2
- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5

* Tue Oct 20 2015 Rich Mattes <richmattes@gmail.com> - 0.1.38-1
- Update to release 0.1.38 (rhbz#1271028)

* Sun Sep 13 2015 Rich Mattes <richmattes@gmail.com> - 0.1.37-1
- Update to release 0.1.37 (rhbz#1259100)
- Remove upstreamed patch

* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.1.36-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild

* Sun Dec 14 2014 Scott K Logan <logans@cottsay.net> - 0.1.36-1
- Update to release 0.1.36
- Update to python packaging guidelines
- Add check section
- Add patch for test fixes
- Add bzr, git, mercurial and subversion to Requires

* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.1.35-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild

* Wed May 28 2014 Kalev Lember <kalevlember@gmail.com> - 0.1.35-2
- Rebuilt for https://fedoraproject.org/wiki/Changes/Python_3.4

* Mon May 19 2014 Scott K Logan <logans@cottsay.net> - 0.1.35-1
- Update to release 0.1.35

* Sun Feb 09 2014 Rich Mattes <richmattes@gmail.com> - 0.1.32-2
- Added python 3 support

* Sat Feb 08 2014 Rich Mattes <richmattes@gmail.com> - 0.1.32-1
- Update to release 0.1.32

* Mon Aug 19 2013 Rich Mattes <richmattes@gmail.com> - 0.1.31-1
- Update to release 0.1.31
- Update to github sourceurl guidelines

* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.1.30-2.20130318git963c121
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild

* Mon Mar 18 2013 Rich Mattes <richmattes@gmail.com> - 0.1.30-1.20130318git963c121
- Update to release 0.1.30
- Updated upstream URL

* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.1.26-2.20130102gitd41568f
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild

* Wed Jan 02 2013 Rich Mattes <richmattes@gmail.com> - 0.1.26-1.20130102gitd41568f
- Update to release 0.1.26
* Fri Oct 26 2012 Rich Mattes <richmattes@gmail.com> - 0.1.24-1.20121026gitba30262
- Update to release 0.1.24

* Tue Aug 28 2012 Rich Mattes <richmattes@gmail.com> - 0.1.21-1.20120828hg0fba0588
- Update to release 0.1.21

* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.1.17-4.20120606hg6205f4fc
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild

* Fri Jun 08 2012 Rich Mattes <richmattes@gmail.com> - 0.1.17-3.20120606hg6205f4fc
- Added el6 support
- Enabled unit tests

* Wed Jun 06 2012 Rich Mattes <richmattes@gmail.com> - 0.1.17-2.20120606hg6205f4fc
- Update package release to include hg checkout info
- Remove el5 specific RPM_BUILD_ROOT removal from install section

* Tue Jun 05 2012 Rich Mattes <richmattes@gmail.com> - 0.1.17-1
- Update to release 0.1.17

* Wed Apr 25 2012 Rich Mattes <richmattes@gmail.com> - 0.1.4-1
- Initial package