%{?!_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} %{?!_without_python3_other:%global with_python3_other 0%{?_with_python3_other:1} || 0%{?rhel} == 7} %global srcname vcstool Name: python-%{srcname} Version: 0.1.39 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}/%{name}-%{version}.tar.gz # Used only for testing Source1: %{name}-0.1.37-older_git_syntax.sed 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} %{?python_provide:%python_provide python2-%{srcname}} BuildRequires: git BuildRequires: python2-devel BuildRequires: python2-pytest BuildRequires: python2-pyyaml BuildRequires: python2-setuptools Requires: python2-pyyaml Requires: python2-setuptools %if 0%{?fedora} Recommends: git %endif # fedora %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 # with_python2 %if 0%{?with_python3} %package -n python%{python3_pkgversion}-%{srcname} Summary: %{summary} %{?python_provide:%python_provide python%{python3_pkgversion}-%{srcname}} BuildRequires: git BuildRequires: python%{python3_pkgversion}-devel BuildRequires: python%{python3_pkgversion}-pytest BuildRequires: python%{python3_pkgversion}-PyYAML BuildRequires: python%{python3_pkgversion}-setuptools Requires: python%{python3_pkgversion}-PyYAML Requires: python%{python3_pkgversion}-setuptools %if 0%{?fedora} Recommends: git %endif # fedora %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 # with_python3 %if 0%{?with_python3_other} %package -n python%{python3_other_pkgversion}-%{srcname} Summary: %{summary} %{?python_provide:%python_provide python%{python3_other_pkgversion}-%{srcname}} BuildRequires: git BuildRequires: python%{python3_other_pkgversion}-devel BuildRequires: python%{python3_other_pkgversion}-pytest BuildRequires: python%{python3_other_pkgversion}-PyYAML BuildRequires: python%{python3_other_pkgversion}-setuptools Requires: python%{python3_other_pkgversion}-PyYAML Requires: python%{python3_other_pkgversion}-setuptools %if 0%{?fedora} Recommends: git %endif # fedora %description -n python%{python3_other_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 # with_python3_other %prep %autosetup -n %{srcname}-%{version} %if 0%{?rhel} && 0%{?rhel} < 8 # Test case touch-ups for older git versions sed -i -f %{SOURCE1} test/*.txt %endif %build %if 0%{?with_python2} %py2_build %endif # with_python2 %if 0%{?with_python3} %py3_build %endif # with_python3 %if 0%{?with_python3_other} %py3_other_build %endif # with_python3_other %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 # with_python3 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 # with_python2 %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 # with_python3 %if 0%{?with_python3_other} %py3_other_install -- --install-scripts %{_bindir}%{python3_other_pkgversion} echo -n "" > py3_other_bins for f in `ls %{buildroot}%{_bindir}%{python3_other_pkgversion}`; do mv %{buildroot}%{_bindir}%{python3_other_pkgversion}/$f %{buildroot}%{_bindir}/$f-%{python3_other_version} %if !(0%{?with_python3}) ln -s $f-%{python3_other_version} %{buildroot}%{_bindir}/$f-3 echo "%{_bindir}/$f-3" >> py3_other_bins %if !(0%{?with_python2}) ln -s $f-%{python3_other_version} %{buildroot}%{_bindir}/$f echo "%{_bindir}/$f" >> py3_other_bins %endif # with_python2 %endif # with_python3 echo "%{_bindir}/$f-%{python3_other_version}" >> py3_other_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_other_version} %endif # with_python3_other %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 # with_python2 %if 0%{?with_python3} %{__python3} -m pytest %pytest_options %endif # with_python3 %if 0%{?with_python3_other} %{__python3_other} -m pytest %pytest_options %endif # with_python3_other %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 # with_python2 %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 # with_python3 %if 0%{?with_python3_other} %files -n python%{python3_other_pkgversion}-%{srcname} -f py3_other_bins %license LICENSE %doc CONTRIBUTING.md README.rst %{python3_other_sitelib}/%{srcname}/ %{python3_other_sitelib}/%{srcname}-%{version}-py%{python3_other_version}.egg-info/ %{_datadir}/%{srcname}-completion %{_datadir}/bash-completion/completions/vcs %{_datadir}/bash-completion/completions/vcs-3 %{_datadir}/bash-completion/completions/vcs-%{python3_other_version} %endif # with_python3_other %changelog * 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