diff --git a/etckeeper-1.18.21-bz2203408.patch b/etckeeper-1.18.21-bz2203408.patch deleted file mode 100644 index 537192b..0000000 --- a/etckeeper-1.18.21-bz2203408.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/post-install.d/50vcs-commit 2023-12-05 10:45:18.967497833 +0100 -+++ b/post-install.d/50vcs-commit 2023-12-05 10:46:00.848138455 +0100 -@@ -6,7 +6,7 @@ - # Parent process is etckeeper - # (Only procps ps is currently supported, others will fail, - # so this may end up empty.) --ETCKEEPER_PID=$( ps --no-headers -o ppid "${PPID}" 2>/dev/null | sed 's/^ *//' ) -+ETCKEEPER_PID=$( ps --no-headers -o ppid "$$" 2>/dev/null | sed 's/^ *//' ) - - # Find the parent of etckeeper and get the command line of the process - if ! [ -z "${ETCKEEPER_PID}" ]; then diff --git a/etckeeper.actions b/etckeeper.actions deleted file mode 100644 index f654e21..0000000 --- a/etckeeper.actions +++ /dev/null @@ -1,4 +0,0 @@ -# to be placed in /etc/dnf/libdnf5-plugins/actions.d -# requires dnf5 5.2.11.0 or later -pre_base_setup:::raise_error=1:/usr/bin/sh -c /usr/bin/etckeeper\ pre-install\ \|\ /usr/bin/sed\ -e\ 's/^/log.INFO=/' -post_transaction::::/usr/bin/sh -c /usr/bin/etckeeper\ post-install\ \|\ /usr/bin/sed\ -e\ 's/^/log.INFO=/' diff --git a/etckeeper.spec b/etckeeper.spec index 7893c0c..6e53213 100644 --- a/etckeeper.spec +++ b/etckeeper.spec @@ -1,21 +1,30 @@ %{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}} +%if 0%{?rhel} && 0%{?rhel} <= 7 +%global with_yum 1 +%global with_bzr 1 +%global bazaar bzr +%endif + %if 0%{?fedora} %global with_brz 1 -%global with_dnf5 1 +%global bazaar brz +%endif + +%if 0%{?fedora} || 0%{?rhel} >= 8 +%global dnf_is_mandatory 1 +%global dnf_uses_python3 1 %endif Name: etckeeper Version: 1.18.22 -Release: 6%{?dist} +Release: 1%{?dist} Summary: Store /etc in a SCM system (git, mercurial, bzr or darcs) -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later +License: GPLv2+ URL: https://etckeeper.branchable.com/ Source0: https://git.joeyh.name/index.cgi/etckeeper.git/snapshot/%{name}-%{version}.tar.gz Source1: README.fedora Source2: cron.daily -Source3: etckeeper.actions # build plugins separately Patch0: etckeeper-makefile-remove-python-plugins.patch # see rhbz#1460461 @@ -27,10 +36,7 @@ Patch3: etckeeper-add-breezy-python3-plugin.patch # see rhbz#1762693 and https://github.com/ansible/ansible/issues/54949 # see also rhbz#1917461 Patch4: etckeeper-1.18.18-fix-output-for-ansible.patch -# see rhbz#2203408 and pr#7 -Patch5: etckeeper-1.18.21-bz2203408.patch BuildArch: noarch -BuildRequires: make BuildRequires: %{_bindir}/markdown_py Requires: git-core Requires: perl-interpreter @@ -38,10 +44,9 @@ Requires: crontabs Requires: findutils Requires: hostname Requires: which +%if 0%{?dnf_is_mandatory} Requires: %{name}-dnf = %{version}-%{release} -%if 0%{?with_dnf5} -Requires: %{name}-dnf5 = %{version}-%{release} -%endif # with_dnf5 +%endif # dnf_is_mandatory BuildRequires: systemd Requires(post): systemd Requires(preun): systemd @@ -58,15 +63,30 @@ understand the basics of working with version control. The default backend is git, if want to use a another backend please install the appropriate tool (mercurial, darcs or bzr). -%{?with_brz: To use breezy as bzr backend, please also install the %{name}-brz package.} +%{?bazaar: To use bazaar/breezy as backend, please also install the %{name}-%{bazaar} package.} To start using the package please read %{_pkgdocdir}/README. +%if 0%{?with_bzr} +%package bzr +Summary: Support for bzr with etckeeper +BuildRequires: python2-devel +BuildRequires: bzr +Requires: %{name} = %{version}-%{release} +Requires: bzr + +%description bzr +This package provides a bzr backend for etckeeper, if you want to use +etckeeper with bzr backend, install this package. +%endif # with_bzr + + %if 0%{?with_brz} %package brz Summary: Support for bzr with etckeeper (via breezy) BuildRequires: python3-devel +BuildRequires: (python3-setuptools if python3-devel >= 3.12) BuildRequires: brz Requires: %{name} = %{version}-%{release} Requires: brz @@ -79,11 +99,17 @@ etckeeper with (bzr) bazaar repositories, install this package. %package dnf Summary: DNF plugin for etckeeper support +%if 0%{?dnf_uses_python3} BuildRequires: python3-devel -BuildRequires: python3-dnf -Requires: python3-dnf +BuildRequires: (python3-setuptools if python3-devel >= 3.12) +%else +BuildRequires: python2-devel +%endif # dnf_uses_python3 +BuildRequires: dnf BuildRequires: dnf-plugins-core +BuildRequires: make Requires: %{name} = %{version}-%{release} +Requires: dnf Requires: dnf-plugins-core %description dnf @@ -91,22 +117,15 @@ This package provides a DNF plugin for etckeeper. If you want to use etckeeper with DNF, install this package. -%if 0%{?with_dnf5} -%package dnf5 -Summary: DNF5 plugin for etckeeper support -Requires: %{name} = %{version}-%{release} -Requires: libdnf5-plugin-actions >= 5.2.11.0 -Requires: sed - -%description dnf5 -This package provides a DNF5 plugin for etckeeper. If you want to use -etckeeper with DNF5, install this package. -%endif # with_dnf5 - - %prep %autosetup -p1 +%if 0%{?with_yum} +# we set yum here, so the yum plugin gets built, and change that to +# dnf later, if needed +sed -e 's|HIGHLEVEL_PACKAGE_MANAGER=.*|HIGHLEVEL_PACKAGE_MANAGER=yum|' \ +%else sed -e 's|HIGHLEVEL_PACKAGE_MANAGER=.*|HIGHLEVEL_PACKAGE_MANAGER=dnf|' \ +%endif # with_yum -e 's|LOWLEVEL_PACKAGE_MANAGER=.*|LOWLEVEL_PACKAGE_MANAGER=rpm|' \ -i etckeeper.conf sed -e 's|^prefix=.*|prefix=%{_prefix}|' \ @@ -120,41 +139,37 @@ sed -e 's|^prefix=.*|prefix=%{_prefix}|' \ -i Makefile # move each plugin in its own subdirectory, so each has its own build/ # directory -mkdir brz-plugin -mv etckeeper-brz brz-plugin -ln -snf etckeeper-brz/__init__.py brz-plugin/setup.py - -mkdir dnf-plugin -mv etckeeper-dnf dnf-plugin -ln -snf etckeeper-dnf/etckeeper.py dnf-plugin/setup.py - +mkdir bzr-plugin ; mv etckeeper-bzr bzr-plugin +mkdir brz-plugin ; mv etckeeper-brz brz-plugin +mkdir dnf-plugin ; mv etckeeper-dnf dnf-plugin cp -av %{SOURCE1} . -%generate_buildrequires -%if 0%{?with_brz} -cd brz-plugin -%pyproject_buildrequires -cd .. -%endif # with_brz - -cd dnf-plugin -%pyproject_buildrequires -cd .. - - %build %make_build +%if 0%{?with_bzr} +pushd bzr-plugin +%define py_setup etckeeper-bzr/__init__.py +%py2_build +popd +%endif # with_bzr + %if 0%{?with_brz} -cd brz-plugin -%pyproject_wheel -cd .. +pushd brz-plugin +%define py_setup etckeeper-brz/__init__.py +%py3_build +popd %endif # with_brz -cd dnf-plugin -%pyproject_wheel -cd .. +pushd dnf-plugin +%define py_setup etckeeper-dnf/etckeeper.py build +%if 0%{?dnf_uses_python3} +%py3_build +%else +%py2_build +%endif # dnf_uses_python3 +popd markdown_py -f README.html README.md @@ -162,23 +177,37 @@ markdown_py -f README.html README.md %install %make_install +%if 0%{?with_bzr} +pushd bzr-plugin +%define py_setup etckeeper-bzr/__init__.py +%py2_install +popd +%endif # with_bzr + %if 0%{?with_brz} -cd brz-plugin -%pyproject_install -cd .. +pushd brz-plugin +%define py_setup etckeeper-brz/__init__.py +%py3_install +popd %endif # with_brz -cd dnf-plugin -%pyproject_install -cd .. +pushd dnf-plugin +%define py_setup etckeeper-dnf/etckeeper.py build +%if 0%{?dnf_uses_python3} +%py3_install +%else +%py2_install +%endif # dnf_uses_python3 +popd + +%if 0%{?dnf_is_mandatory} +sed -e 's|HIGHLEVEL_PACKAGE_MANAGER=.*|HIGHLEVEL_PACKAGE_MANAGER=dnf|' \ + -i %{buildroot}%{_sysconfdir}/%{name}/%{name}.conf +%endif # dnf_is_mandatory install -D -p %{SOURCE2} %{buildroot}%{_sysconfdir}/cron.daily/%{name} install -d %{buildroot}%{_localstatedir}/cache/%{name} -%if 0%{?with_dnf5} -install -D -p %{SOURCE3} %{buildroot}%{_sysconfdir}/dnf/libdnf5-plugins/actions.d/%{name}.actions -%endif # with_dnf5 - %post if [ $1 -gt 1 ] ; then @@ -214,11 +243,25 @@ fi %dir %{_datadir}/zsh %dir %{_datadir}/zsh/vendor-completions %{_datadir}/zsh/vendor-completions/_%{name} +%if 0%{?with_yum} +%dir %{_prefix}/lib/yum-plugins +%{_prefix}/lib/yum-plugins/%{name}.* +%dir %{_sysconfdir}/yum/pluginconf.d +%config(noreplace) %{_sysconfdir}/yum/pluginconf.d/%{name}.conf +%endif # with_yum %{_localstatedir}/cache/%{name} %{_unitdir}/%{name}.service %{_unitdir}/%{name}.timer +%if 0%{?with_bzr} +%files bzr +%{python2_sitelib}/bzrlib/plugins/%{name} +# exclude egg-info dir, doesn't contain meaningful information +%exclude %{python2_sitelib}/bzr_%{name}-*.egg-info +%endif # with_bzr + + %if 0%{?with_brz} %files brz # co-own the plugins directories @@ -227,97 +270,39 @@ fi %dir %{python3_sitelib}/breezy/plugins/ %{python3_sitelib}/breezy/plugins/%{name}/ # exclude egg-info dir, doesn't contain meaningful information -%exclude %{python3_sitelib}/brz_%{name}-*.dist-info +%exclude %{python3_sitelib}/brz_%{name}-*.egg-info %endif # with_brz %files dnf +%if 0%{?dnf_uses_python3} %{python3_sitelib}/dnf-plugins/%{name}.py %exclude %{python3_sitelib}/dnf-plugins/__init__.py %{python3_sitelib}/dnf-plugins/__pycache__/%{name}.* %exclude %{python3_sitelib}/dnf-plugins/__pycache__/__init__.* # exclude egg-info dir, doesn't contain meaningful information -%exclude %{python3_sitelib}/dnf_%{name}-*.dist-info - - -%if 0%{?with_dnf5} -%files dnf5 -%{_sysconfdir}/dnf/libdnf5-plugins/actions.d/%{name}.actions -%endif # with_dnf5 +%exclude %{python3_sitelib}/dnf_%{name}-*.egg-info +%else +%{python2_sitelib}/dnf-plugins/%{name}.py* +%exclude %{python2_sitelib}/dnf-plugins/__init__.py* +# exclude egg-info dir, doesn't contain meaningful information +%exclude %{python2_sitelib}/dnf_%{name}-*.egg-info +%endif # dnf_uses_python3 %changelog -* Fri Sep 19 2025 Python Maint - 1.18.22-6 -- Rebuilt for Python 3.14.0rc3 bytecode - -* Fri Aug 15 2025 Python Maint - 1.18.22-5 -- Rebuilt for Python 3.14.0rc2 bytecode - -* Wed Jul 23 2025 Fedora Release Engineering - 1.18.22-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Tue Jul 15 2025 Thomas Moschny - 1.18.22-3 -- Fix conditional. - -* Tue Jul 15 2025 Thomas Moschny - 1.18.22-2 -- Update action file to produce expected action output. - -* Mon Jul 14 2025 Thomas Moschny - 1.18.22-1 +* Tue Jul 15 2025 Thomas Moschny - 1.18.22-1 - Update to 1.18.22. -- Remove all EL7-related conditionals and parts. -- Update for current Python packaging guidelines (rhbz#2377253). -- Add support for DNF5 (rhbz#2326283). - -* Tue Jun 03 2025 Python Maint - 1.18.21-6 -- Rebuilt for Python 3.14 - -* Thu Jan 16 2025 Fedora Release Engineering - 1.18.21-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Thu Jul 25 2024 Miroslav Suchý - 1.18.21-4 -- convert license to SPDX - -* Wed Jul 17 2024 Fedora Release Engineering - 1.18.21-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Fri Jun 07 2024 Python Maint - 1.18.21-2 -- Rebuilt for Python 3.13 - -* Wed May 1 2024 Thomas Moschny - 1.18.21-1 -- Update to 1.18.21. -- Add patch for rhbz#2203408 from pr#7. -- Depend on python3-dnf, not dnf (pr#6). - -* Wed Jan 24 2024 Fedora Release Engineering - 1.18.20-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 19 2024 Fedora Release Engineering - 1.18.20-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Tue Jul 25 2023 Python Maint - 1.18.20-3 -- Rebuilt for Python 3.12 - -* Wed Jul 19 2023 Fedora Release Engineering - 1.18.20-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild * Sat Jan 28 2023 Thomas Moschny - 1.18.20-1 - Update to 1.18.20. -* Thu Jan 19 2023 Fedora Release Engineering - 1.18.18-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - * Fri Dec 2 2022 Thomas Moschny - 1.18.18-1 - Update to 1.18.18. - Rebase patches. - Update patch to fix logging with Ansible (#1917461). - BuildRequire setuptools when Python >= 3.12. -* Thu Jul 21 2022 Fedora Release Engineering - 1.18.17-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Wed Jun 15 2022 Python Maint - 1.18.17-2 -- Rebuilt for Python 3.11 - * Tue Mar 8 2022 Thomas Moschny - 1.18.17-1 - Update to 1.18.17. @@ -327,36 +312,15 @@ fi * Mon Jan 31 2022 Thomas Moschny - 1.18.16-5 - Exclude egg-info directories for dnf, bzr and brz plugins (#2048085). -* Thu Jan 20 2022 Fedora Release Engineering - 1.18.16-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Wed Jul 21 2021 Fedora Release Engineering - 1.18.16-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Fri Jun 04 2021 Python Maint - 1.18.16-2 -- Rebuilt for Python 3.10 - * Tue Feb 9 2021 Thomas Moschny - 1.18.16-1 - Update to 1.18.16. - Update spec file, remove obsolete conditionals. -* Tue Jan 26 2021 Fedora Release Engineering - 1.18.14-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Mon Jul 27 2020 Fedora Release Engineering - 1.18.14-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Tue May 26 2020 Miro Hrončok - 1.18.14-2 -- Rebuilt for Python 3.9 - * Sat Mar 14 2020 Thomas Moschny - 1.18.14-1 - Update to 1.18.14. - Include zsh completion. - Mark cron file as config file. -* Tue Jan 28 2020 Fedora Release Engineering - 1.18.12-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - * Sun Dec 1 2019 Thomas Moschny - 1.18.12-1 - Update to 1.18.12. - New version of patch to fix logging with Ansible (#1762693).