%{?!_without_python2:%global with_python2 0%{?_with_python2:1} || !(0%{?fedora} >= 30 || 0%{?rhel} >= 8)} %{?!_without_python3:%global with_python3 0%{?_with_python3:1} || !0%{?rhel} || 0%{?rhel} >= 7} %global srcname vcstool Name: python-%{srcname} Version: 0.2.8 Release: 1%{?dist} Summary: Tool to invoke vcs commands on multiple repositories License: ASL 2.0 URL: https://github.com/dirk-thomas/%{srcname} Source0: https://github.com/dirk-thomas/%{srcname}/archive/%{version}/%{srcname}-%{version}.tar.gz # Submitted upstream as dirk-thomas/vcstool#138 Patch0: %{name}-0.2.8-old-git-syntax.patch BuildArch: noarch %description Vcstool is a version control system (VCS) tool, designed to make working with multiple repositories easier. Note: This tool should not be confused with vcstools (with a trailing s) which provides a Python API for interacting with different version control systems. The biggest differences between the two are: - vcstool doesn't use any state beside the repository working copies available in the filesystem. - The file format of vcstool export uses the relative paths of the repositories as keys in YAML which avoids collisions by design. - vcstool has significantly less lines of code than vcstools including the command line tools built on top. %if 0%{?with_python2} %package -n python2-%{srcname} Summary: %{summary} BuildRequires: git BuildRequires: python2-devel BuildRequires: python2-pytest BuildRequires: python2-pyyaml BuildRequires: python2-setuptools %{?python_provide:%python_provide python2-%{srcname}} %if %{undefined __pythondist_requires} Requires: python2-pyyaml Requires: python2-setuptools %endif %if !0%{?rhel} || 0%{?rhel} >= 8 Recommends: git %endif %description -n python2-%{srcname} Vcstool is a version control system (VCS) tool, designed to make working with multiple repositories easier. Note: This tool should not be confused with vcstools (with a trailing s) which provides a Python API for interacting with different version control systems. The biggest differences between the two are: - vcstool doesn't use any state beside the repository working copies available in the filesystem. - The file format of vcstool export uses the relative paths of the repositories as keys in YAML which avoids collisions by design. - vcstool has significantly less lines of code than vcstools including the command line tools built on top. %endif %if 0%{?with_python3} %package -n python%{python3_pkgversion}-%{srcname} Summary: %{summary} BuildRequires: git BuildRequires: python%{python3_pkgversion}-devel BuildRequires: python%{python3_pkgversion}-pytest BuildRequires: python%{python3_pkgversion}-PyYAML BuildRequires: python%{python3_pkgversion}-setuptools %{?python_provide:%python_provide python%{python3_pkgversion}-%{srcname}} %if %{undefined __pythondist_requires} Requires: python%{python3_pkgversion}-PyYAML Requires: python%{python3_pkgversion}-setuptools %endif %if !0%{?rhel} || 0%{?rhel} >= 8 Recommends: git %endif %description -n python%{python3_pkgversion}-%{srcname} Vcstool is a version control system (VCS) tool, designed to make working with multiple repositories easier. Note: This tool should not be confused with vcstools (with a trailing s) which provides a Python API for interacting with different version control systems. The biggest differences between the two are: - vcstool doesn't use any state beside the repository working copies available in the filesystem. - The file format of vcstool export uses the relative paths of the repositories as keys in YAML which avoids collisions by design. - vcstool has significantly less lines of code than vcstools including the command line tools built on top. %endif %prep %autosetup -p1 -n %{srcname}-%{version} %build %if 0%{?with_python2} %py2_build %endif %if 0%{?with_python3} %py3_build %endif %install # There are three extra things we're doing here: # 1. Making each executable available with a -X and -X.Y suffix # 2. Giving each python version a directory of executables for %%check # 3. Integrating with the bash-completion package install -d %{buildroot}%{_datadir}/bash-completion/completions %{buildroot}%{_bindir} %if 0%{?with_python2} %py2_install -- --install-scripts %{_bindir}2 echo -n "" > py2_bins for f in `ls %{buildroot}%{_bindir}2`; do mv %{buildroot}%{_bindir}2/$f %{buildroot}%{_bindir}/$f-%{python2_version} ln -s $f-%{python2_version} %{buildroot}%{_bindir}/$f-2 %if !(0%{?with_python3}) ln -s $f-%{python2_version} %{buildroot}%{_bindir}/$f echo "%{_bindir}/$f" >> py2_bins %endif echo -e "%{_bindir}/$f-2\n%{_bindir}/$f-%{python2_version}" >> py2_bins done # Integrate bash completion with the bash-completion package cp -f %{buildroot}%{_datadir}/%{srcname}-completion/vcs.bash %{buildroot}%{_datadir}/bash-completion/completions/vcs ln -sf vcs %{buildroot}%{_datadir}/bash-completion/completions/vcs-2 ln -s vcs %{buildroot}%{_datadir}/bash-completion/completions/vcs-%{python2_version} %endif %if 0%{?with_python3} %py3_install -- --install-scripts %{_bindir}%{python3_pkgversion} echo -n "" > py3_bins for f in `ls %{buildroot}%{_bindir}%{python3_pkgversion}`; do mv %{buildroot}%{_bindir}%{python3_pkgversion}/$f %{buildroot}%{_bindir}/$f-%{python3_version} ln -s $f-%{python3_version} %{buildroot}%{_bindir}/$f-3 ln -s $f-%{python3_version} %{buildroot}%{_bindir}/$f echo -e "%{_bindir}/$f\n%{_bindir}/$f-3\n%{_bindir}/$f-%{python3_version}" >> py3_bins done # Integrate bash completion with the bash-completion package cp -f %{buildroot}%{_datadir}/%{srcname}-completion/vcs.bash %{buildroot}%{_datadir}/bash-completion/completions/vcs ln -sf vcs %{buildroot}%{_datadir}/bash-completion/completions/vcs-3 ln -s vcs %{buildroot}%{_datadir}/bash-completion/completions/vcs-%{python3_version} %endif %check # We skip two classes of test: # 1. Code style # 2. Tests which require network access %define pytest_options \\\ --ignore=test/test_flake8.py \\\ --ignore test/test_commands.py \\\ test %if 0%{?with_python2} %{__python2} -m pytest %pytest_options %endif %if 0%{?with_python3} %{__python3} -m pytest %pytest_options %endif %if 0%{?with_python2} %files -n python2-%{srcname} -f py2_bins %license LICENSE %doc CONTRIBUTING.md README.rst %{python2_sitelib}/%{srcname}/ %{python2_sitelib}/%{srcname}-%{version}-py%{python2_version}.egg-info/ %{_datadir}/%{srcname}-completion %{_datadir}/bash-completion/completions/vcs %{_datadir}/bash-completion/completions/vcs-2 %{_datadir}/bash-completion/completions/vcs-%{python2_version} %endif %if 0%{?with_python3} %files -n python%{python3_pkgversion}-%{srcname} -f py3_bins %license LICENSE %doc CONTRIBUTING.md README.rst %{python3_sitelib}/%{srcname}/ %{python3_sitelib}/%{srcname}-%{version}-py%{python3_version}.egg-info/ %{_datadir}/%{srcname}-completion %{_datadir}/bash-completion/completions/vcs %{_datadir}/bash-completion/completions/vcs-3 %{_datadir}/bash-completion/completions/vcs-%{python3_version} %endif %changelog * Sun May 10 2020 Scott K Logan - 0.2.8-1 - Update to 0.2.8 (rhbz#1833742) * Wed Apr 15 2020 Scott K Logan - 0.2.7-1 - Update to 0.2.7 (rhbz#1787844) * Wed Oct 30 2019 Scott K Logan - 0.2.4-1 - Update to 0.2.4 (rhbz#1764143) * Thu Aug 08 2019 Scott K Logan - 0.2.3-1 - Update to 0.2.3 * Fri Jul 26 2019 Fedora Release Engineering - 0.2.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild * Wed Jul 17 2019 Scott K Logan - 0.2.2-1 - Update to 0.2.2 * Mon Jun 10 2019 Scott K Logan - 0.2.1-1 - Update to 0.2.1 (rhbz#1718722) * Mon Mar 18 2019 Scott K Logan - 0.1.40-1 - Update to 0.1.40 - Drop python3_other subpackage * Tue Feb 19 2019 Scott K Logan - 0.1.39-1 - Update to 0.1.39 * Thu Jan 17 2019 Scott K Logan - 0.1.38-1 - Update to 0.1.38 * Tue Oct 16 2018 Scott K Logan - 0.1.37-1 - Initial package