diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2f78b3f --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/vcstool-0.1.39.tar.gz +/vcstool-0.1.40.tar.gz +/vcstool-0.2.1.tar.gz +/vcstool-0.2.2.tar.gz +/vcstool-0.2.3.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.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..2181c0e --- /dev/null +++ b/python-vcstool.spec @@ -0,0 +1,240 @@ +%{?!_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.3 +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 + +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 # __pythondist_requires + +%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} +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 # __pythondist_requires + +%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 + + +%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 + + +%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 + + +%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_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 + + +%changelog +* 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 diff --git a/sources b/sources new file mode 100644 index 0000000..39bee7b --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (vcstool-0.2.3.tar.gz) = b00c602022e03ae6b817c0c51a9a465016641eef8afea6dfab1e9b85a74b0922b4a91f7291a3b9fa7471226786927137f69d025ab0db555f97023220ab99feea