diff --git a/etckeeper-1.18.21-bz2203408.patch b/etckeeper-1.18.21-bz2203408.patch new file mode 100644 index 0000000..537192b --- /dev/null +++ b/etckeeper-1.18.21-bz2203408.patch @@ -0,0 +1,11 @@ +--- 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 new file mode 100644 index 0000000..f654e21 --- /dev/null +++ b/etckeeper.actions @@ -0,0 +1,4 @@ +# 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 6e53213..7893c0c 100644 --- a/etckeeper.spec +++ b/etckeeper.spec @@ -1,30 +1,21 @@ %{!?_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 bazaar brz -%endif - -%if 0%{?fedora} || 0%{?rhel} >= 8 -%global dnf_is_mandatory 1 -%global dnf_uses_python3 1 +%global with_dnf5 1 %endif Name: etckeeper Version: 1.18.22 -Release: 1%{?dist} +Release: 6%{?dist} Summary: Store /etc in a SCM system (git, mercurial, bzr or darcs) -License: GPLv2+ +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later 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 @@ -36,7 +27,10 @@ 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 @@ -44,9 +38,10 @@ Requires: crontabs Requires: findutils Requires: hostname Requires: which -%if 0%{?dnf_is_mandatory} Requires: %{name}-dnf = %{version}-%{release} -%endif # dnf_is_mandatory +%if 0%{?with_dnf5} +Requires: %{name}-dnf5 = %{version}-%{release} +%endif # with_dnf5 BuildRequires: systemd Requires(post): systemd Requires(preun): systemd @@ -63,30 +58,15 @@ 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). -%{?bazaar: To use bazaar/breezy as backend, please also install the %{name}-%{bazaar} package.} +%{?with_brz: To use breezy as bzr backend, please also install the %{name}-brz 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 @@ -99,17 +79,11 @@ 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-setuptools if python3-devel >= 3.12) -%else -BuildRequires: python2-devel -%endif # dnf_uses_python3 -BuildRequires: dnf +BuildRequires: python3-dnf +Requires: python3-dnf BuildRequires: dnf-plugins-core -BuildRequires: make Requires: %{name} = %{version}-%{release} -Requires: dnf Requires: dnf-plugins-core %description dnf @@ -117,15 +91,22 @@ 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}|' \ @@ -139,37 +120,41 @@ sed -e 's|^prefix=.*|prefix=%{_prefix}|' \ -i Makefile # move each plugin in its own subdirectory, so each has its own build/ # directory -mkdir bzr-plugin ; mv etckeeper-bzr bzr-plugin -mkdir brz-plugin ; mv etckeeper-brz brz-plugin -mkdir dnf-plugin ; mv etckeeper-dnf dnf-plugin +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 + 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} -pushd brz-plugin -%define py_setup etckeeper-brz/__init__.py -%py3_build -popd +cd brz-plugin +%pyproject_wheel +cd .. %endif # with_brz -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 +cd dnf-plugin +%pyproject_wheel +cd .. markdown_py -f README.html README.md @@ -177,37 +162,23 @@ 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} -pushd brz-plugin -%define py_setup etckeeper-brz/__init__.py -%py3_install -popd +cd brz-plugin +%pyproject_install +cd .. %endif # with_brz -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 +cd dnf-plugin +%pyproject_install +cd .. 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 @@ -243,25 +214,11 @@ 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 @@ -270,39 +227,97 @@ 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}-*.egg-info +%exclude %{python3_sitelib}/brz_%{name}-*.dist-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}-*.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 +%exclude %{python3_sitelib}/dnf_%{name}-*.dist-info + + +%if 0%{?with_dnf5} +%files dnf5 +%{_sysconfdir}/dnf/libdnf5-plugins/actions.d/%{name}.actions +%endif # with_dnf5 %changelog -* Tue Jul 15 2025 Thomas Moschny - 1.18.22-1 +* 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 - 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. @@ -312,15 +327,36 @@ 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).