diff --git a/etckeeper-1.18.12-fix-output-for-ansible.patch b/etckeeper-1.18.12-fix-output-for-ansible.patch deleted file mode 100644 index 7ca4b4f..0000000 --- a/etckeeper-1.18.12-fix-output-for-ansible.patch +++ /dev/null @@ -1,162 +0,0 @@ -From 8266a4fb45621e08085c58537a531f33fc7eca74 Mon Sep 17 00:00:00 2001 -From: Alan Jenkins -Date: Wed, 10 Apr 2019 00:19:14 +0100 -Subject: [PATCH 1/2] DNF: stderr is not ours to log to (and doing so breaks - Ansible) - -stderr does not belong to etckeeper-dnf ---------------------------------------- - -The Ansible dnf module uses the python dnf bindings. In contexts like -these, stdout/stderr is owned by the host app (Ansible). dnf should not -mess with stdout/stderr, unless the host app asks it to log there. - -Specifically, we were breaking the JSON output of the Ansible dnf module. -This was only noticeable when the etckeeper message began with a "[" -character. Ansible has a mechanism to try and skip header messages like -login banners. However, "[" is a valid character to start a JSON document. - -https://unix.stackexchange.com/questions/511210/ansible-dnf-module-module-failure/ - -Solution --------- - -Instead, log any non-zero exit status through the dnf logger. - -For the pre-transaction etckeeper run, this message replaces an exception. -So we now avoid logging a traceback, which did not appear to add anything -useful. (In my testing, dnf was continued to install after the exception -was logged). - -I have also added a warning message for the post-transaction etckeeper run. - -I switched from os.system() to subprocess.call(). The latter interface -supports better error reporting. (When I tested os.system(), it returned -an errno number which was indistinguishable from an exit code). - -etckeeper >/dev/null 2>&1 --------------------------- - -Any specific error messages from etckeeper are now discarded. Because -unfortunately, python conventions about passing text strings have been -somewhat unclear. It is an error to log strings if the encoding settings -of a registered logger cannot handle them. Because a "bad" character -causes the entire string to be discarded, and optionally an exception -printed to stderr. In a previous proposal I showed code that should be -correct in all expected cases. However, the length of comment required to -define "all expected cases" was not very reassuring. - -That was on top of explaining that dnf has a workaround that will avoid -raising exceptions when arbitrary unicode is logged to stdout. My proposal -had to include that explanation, to show that we were not breaking a -system package manager. - -It might sound strange to talk about error messages with characters -we cannot encode. But I have one word for you: "filenames". - -(After the recent python PR #14008[1], logging.basicConfig() defaults -to errors='backslashreplace'. Also, errors= can be manually specified when -creating a lower-level logging "Handler". I think this will resolve the -problem in the future. It means that when programs are written for this -new version of python, it should be the responsibility of the log setup -code to prevent UnicodeEncodeError.) - -[1] https://github.com/python/cpython/pull/14008 ---- - etckeeper-dnf/etckeeper.py | 27 ++++++++++++++++----------- - 1 file changed, 16 insertions(+), 11 deletions(-) - -diff --git a/etckeeper-dnf/etckeeper.py b/etckeeper-dnf/etckeeper.py -index e8a1a51..69edd88 100644 ---- a/etckeeper-dnf/etckeeper.py -+++ b/etckeeper-dnf/etckeeper.py -@@ -9,7 +9,7 @@ - - from dnfpluginscore import logger - --import os -+import subprocess - import dnf - - -@@ -17,20 +17,25 @@ class Etckeeper(dnf.Plugin): - - name = 'etckeeper' - -- def _out(self, msg): -- logger.debug('Etckeeper plugin: %s', msg) -+ def _run_command(self, command): -+ logger.debug('Etckeeper plugin: %s', command) -+ try: -+ with open("/dev/null", "wb") as devnull: -+ ret = subprocess.call(("etckeeper", command), -+ stdout=devnull, stderr=devnull, -+ close_fds=True) -+ if ret > 0: -+ logger.warning('"etckeeper %s" failed (exit code %d)' % (command, ret)) -+ if ret < 0: -+ logger.warning('"etckeeper %s" died (signal %d)' % (command, -ret)) -+ except OSError as err: -+ logger.warning('Failed to run "etckeeper %s": %s' % (command, err)) - - def resolved(self): -- self._out('pre transaction commit') -- command = '%s %s' % ('etckeeper', " pre-install") -- ret = os.system(command) -- if ret != 0: -- raise dnf.exceptions.Error('etckeeper returned %d' % (ret >> 8)) -+ self._run_command("pre-install") - - def transaction(self): -- self._out('post transaction commit') -- command = '%s %s > /dev/null' % ('etckeeper', "post-install") -- os.system(command) -+ self._run_command("post-install") - - if __name__ == "__main__": - from distutils.core import setup --- -2.23.0 - - -From 7cda9678b1e60c0495a2a522721b319843d5fae0 Mon Sep 17 00:00:00 2001 -From: Alan Jenkins -Date: Tue, 23 Apr 2019 20:15:01 +0100 -Subject: [PATCH 2/2] Do not use dnfpluginscore.logger - -dnfpluginscore is not core support for dnf plugins, it is just a -collection of "core plugins" for dnf. There is equally -dnfpluginsextras and dnfpluginsextras.logger. - -A comment in dnf.logger comment says the logger name 'dnf.plugin' is "api". -So we can safely rely on that name. - -Technically you can install etckeeper without the dnfpluginscore package -(at least I managed to run into this for python2, on a Fedora 29 system -which uses python3 for dnf by default). ---- - etckeeper-dnf/etckeeper.py | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/etckeeper-dnf/etckeeper.py b/etckeeper-dnf/etckeeper.py -index 69edd88..d9dd2c3 100644 ---- a/etckeeper-dnf/etckeeper.py -+++ b/etckeeper-dnf/etckeeper.py -@@ -7,11 +7,12 @@ - # Distutils code below was copied from etckeeper-bzr distributed with v1.15 - # - --from dnfpluginscore import logger -- -+import logging - import subprocess - import dnf - -+logger = logging.getLogger('dnf.plugin') -+ - - class Etckeeper(dnf.Plugin): - --- -2.23.0 - diff --git a/etckeeper-1.18.7-fix-hg-warnings.patch b/etckeeper-1.18.18-fix-hg-warnings.patch similarity index 95% rename from etckeeper-1.18.7-fix-hg-warnings.patch rename to etckeeper-1.18.18-fix-hg-warnings.patch index 90c6818..7a74e70 100644 --- a/etckeeper-1.18.7-fix-hg-warnings.patch +++ b/etckeeper-1.18.18-fix-hg-warnings.patch @@ -1,5 +1,5 @@ diff --git a/pre-commit.d/20warn-problem-files b/pre-commit.d/20warn-problem-files -index 6bd5c2b..7899268 100755 +index 43320e4..7899268 100755 --- a/pre-commit.d/20warn-problem-files +++ b/pre-commit.d/20warn-problem-files @@ -1,19 +1,20 @@ @@ -7,7 +7,7 @@ index 6bd5c2b..7899268 100755 set -e -exclude_internal () { -- egrep -v '(^|/)(\.git|\.hg|\.bzr|_darcs)/' +- grep -E -v '(^|/)(\.git|\.hg|\.bzr|_darcs)/' -} +# (Note that when using this, the find expression must end with +# -print or -exec, else the excluded directories will actually be diff --git a/etckeeper-1.18.18-fix-output-for-ansible.patch b/etckeeper-1.18.18-fix-output-for-ansible.patch new file mode 100644 index 0000000..b36af3c --- /dev/null +++ b/etckeeper-1.18.18-fix-output-for-ansible.patch @@ -0,0 +1,52 @@ +diff --git a/etckeeper-dnf/etckeeper.py b/etckeeper-dnf/etckeeper.py +index e8a1a51..7c3210b 100644 +--- a/etckeeper-dnf/etckeeper.py ++++ b/etckeeper-dnf/etckeeper.py +@@ -7,30 +7,34 @@ + # Distutils code below was copied from etckeeper-bzr distributed with v1.15 + # + +-from dnfpluginscore import logger +- +-import os ++import logging ++import subprocess + import dnf + ++logger = logging.getLogger('dnf.plugin') ++ + + class Etckeeper(dnf.Plugin): + + name = 'etckeeper' + +- def _out(self, msg): +- logger.debug('Etckeeper plugin: %s', msg) ++ def _run_command(self, command): ++ logger.debug('Etckeeper plugin: %s', command) ++ try: ++ with open("/dev/null", "wb") as devnull: ++ ret = subprocess.call(("etckeeper", command), ++ stdout=devnull, stderr=devnull, ++ close_fds=True) ++ if ret != 0: ++ raise dnf.exceptions.Error('"etckeeper %s" returned: %d' % (command, ret)) ++ except OSError as err: ++ logger.warning('Failed to run "etckeeper %s": %s' % (command, err)) + + def resolved(self): +- self._out('pre transaction commit') +- command = '%s %s' % ('etckeeper', " pre-install") +- ret = os.system(command) +- if ret != 0: +- raise dnf.exceptions.Error('etckeeper returned %d' % (ret >> 8)) ++ self._run_command("pre-install") + + def transaction(self): +- self._out('post transaction commit') +- command = '%s %s > /dev/null' % ('etckeeper', "post-install") +- os.system(command) ++ self._run_command("post-install") + + if __name__ == "__main__": + from distutils.core import setup 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 17a5813..7893c0c 100644 --- a/etckeeper.spec +++ b/etckeeper.spec @@ -1,41 +1,36 @@ %{!?_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.17 -Release: 1%{?dist} +Version: 1.18.22 +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 Patch1: etckeeper-1.18.7-fix-rpm-ignores.patch # see rhbz#1480843 -Patch2: etckeeper-1.18.7-fix-hg-warnings.patch +Patch2: etckeeper-1.18.18-fix-hg-warnings.patch # From https://bugs.launchpad.net/ubuntu/+source/etckeeper/+bug/1826855 Patch3: etckeeper-add-breezy-python3-plugin.patch # see rhbz#1762693 and https://github.com/ansible/ansible/issues/54949 -Patch4: etckeeper-1.18.12-fix-output-for-ansible.patch +# 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 @@ -43,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 @@ -62,25 +58,11 @@ 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) @@ -97,16 +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 -%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 @@ -114,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}|' \ @@ -136,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 @@ -174,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 @@ -240,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 @@ -267,27 +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 +* 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. diff --git a/sources b/sources index 73fac7e..1412813 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (etckeeper-1.18.17.tar.gz) = 6e75d0f38c8d27ba290ab6e1a51d50ca7a736c958da7a1edb792a5c7f1eedd4848adbb43571425f127bf2c5fe39d5b7887968b09178ca5385ec0abeaeb6cfa00 +SHA512 (etckeeper-1.18.22.tar.gz) = e35ab90862c1f4426c17aec4d9ffe5975c652b290645ac333e9f27fcc157b9eba5e0efe73553a400464102c939f085f4e08f4b04564a015ad6941b1d50dbbe76