diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..71a9bb1 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/vcstool-0.1.39.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 1e0d114..0000000 --- a/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# python-vcstool - -The python-vcstool package \ No newline at end of file diff --git a/python-vcstool-0.1.37-older_git_syntax.sed b/python-vcstool-0.1.37-older_git_syntax.sed new file mode 100644 index 0000000..4e0de81 --- /dev/null +++ b/python-vcstool-0.1.37-older_git_syntax.sed @@ -0,0 +1,21 @@ +s/^\( *\)git checkout -b $/\1git checkout -b new_branch_name/ +s/^(HEAD detached at \([0-9a-f\.]*\))$/(detached from \1)/ +s/^\(HEAD detached at [0-9a-f\.]*\)$/# \1/ +/^Your branch is up to date with 'origin\/.*'\.$/d +/^On branch master$/{ + N + /^On branch master\nYour branch is up to date with 'origin\/.*'\.$/{ + N + /^On branch master\nYour branch is up to date with 'origin\/.*'\.\n$/{ + N + s/^\(On branch master\)\nYour branch is up to date with 'origin\/.*'\.\n\n\(nothing to commit, working tree clean\)$/# \1\n\2/ + } + } +} +/^You are not currently on a branch\.$/{ + N + /^You are not currently on a branch\.\nPlease specify which branch you want to merge with\.$/{ + N + s/^You are not currently on a branch\.\nPlease specify which branch you want to merge with\.\nSee git-pull(1) for details\.$/You are not currently on a branch\. Please specify which\nbranch you want to merge with\. See git-pull(1) for details\./ + } +} diff --git a/python-vcstool-0.1.39-argparse.patch b/python-vcstool-0.1.39-argparse.patch new file mode 100644 index 0000000..555002d --- /dev/null +++ b/python-vcstool-0.1.39-argparse.patch @@ -0,0 +1,23 @@ +From f00daaef3e49bfcdc4a00603d0ed0ca2a21be277 Mon Sep 17 00:00:00 2001 +From: Scott K Logan +Date: Wed, 20 Feb 2019 11:15:51 -0800 +Subject: [PATCH] Fix argparse requirement for Python 2.7 (#85) + +argparse is part of the standard library since Python 2.7 +--- + setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 980cf66..b47ab9b 100755 +--- a/setup.py ++++ b/setup.py +@@ -7,7 +7,7 @@ + from vcstool import __version__ + + install_requires = ['PyYAML', 'setuptools'] +-if sys.version_info[0] == 2: ++if sys.version_info[0] == 2 and sys.version_info[1] < 7: + install_requires.append('argparse') + + setup( diff --git a/python-vcstool.rpmlintrc b/python-vcstool.rpmlintrc new file mode 100644 index 0000000..29dbf35 --- /dev/null +++ b/python-vcstool.rpmlintrc @@ -0,0 +1,6 @@ +# MANUAL PAGES +addFilter(r'no-manual-page-for-binary (vcs|vcs-.*)( |$)') + +# SPELLING ERRORS +addFilter(r'spelling-error .* en_US (vcstools)( |$)') +addFilter(r'spelling-error Summary\(en_US\) (vcs)( |$)') diff --git a/python-vcstool.spec b/python-vcstool.spec new file mode 100644 index 0000000..0238216 --- /dev/null +++ b/python-vcstool.spec @@ -0,0 +1,309 @@ +%{?!_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}/%{srcname}-%{version}.tar.gz + +# Used only for testing +Source1: %{name}-0.1.37-older_git_syntax.sed + +# Merged upstream, removes argparse requirement for py2.7 +Patch0: %{name}-0.1.39-argparse.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} +%{?python_provide:%python_provide python2-%{srcname}} +BuildRequires: git +BuildRequires: python2-devel +BuildRequires: python2-pytest +BuildRequires: python2-pyyaml +BuildRequires: python2-setuptools + +%if %{undefined python_disable_dependency_generator} +Requires: python2-pyyaml +Requires: python2-setuptools +%endif # python_disable_dependency_generator + +%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 + +%if %{undefined python_disable_dependency_generator} +Requires: python%{python3_pkgversion}-PyYAML +Requires: python%{python3_pkgversion}-setuptools +%endif # python_disable_dependency_generator + +%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 + +%if %{undefined python_disable_dependency_generator} +Requires: python%{python3_other_pkgversion}-PyYAML +Requires: python%{python3_other_pkgversion}-setuptools +%endif # python_disable_dependency_generator + +%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 -p1 -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 diff --git a/sources b/sources new file mode 100644 index 0000000..c4721fd --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (vcstool-0.1.39.tar.gz) = a9910f9c986b1946fb72f1fdbe5143817714d17ae91e263253d4234ce8cf72641dcb4b2eb3a240aaa2bd6c300284731a5916dde4c462578a1cb3fe170f0c8b1e