Compare commits
29 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c99b0692f0 | ||
|
|
1753022904 | ||
|
|
308dfc9c2a | ||
|
|
fa46cc7b0c | ||
|
|
5c5e2591b2 | ||
|
|
b0bd45069e | ||
|
|
cb78c6e477 | ||
|
|
e0589d4bdf | ||
|
|
9bb9852468 | ||
|
|
79b07d68a8 | ||
|
|
4958724e4d | ||
|
|
fde6b6dbd9 | ||
|
|
922d9a0613 | ||
|
|
c40275ea18 | ||
|
|
4482a1283a | ||
|
|
589409b24c | ||
|
|
f01b9f8030 | ||
|
|
d1ea1e7de6 | ||
|
|
7daca89518 | ||
|
|
a5bc565075 | ||
|
|
42f89e1794 | ||
|
|
02c3e185a7 | ||
|
|
87aff6b5d0 | ||
|
|
c9ab258fe6 | ||
|
|
1b9858c84c | ||
|
|
271a95d1f0 | ||
|
|
7a7d0e9726 | ||
|
|
c1c0ae2a94 | ||
|
|
b4e7dcf856 |
7 changed files with 216 additions and 281 deletions
|
|
@ -1,162 +0,0 @@
|
|||
From 8266a4fb45621e08085c58537a531f33fc7eca74 Mon Sep 17 00:00:00 2001
|
||||
From: Alan Jenkins <alan.christopher.jenkins@gmail.com>
|
||||
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 <alan.christopher.jenkins@gmail.com>
|
||||
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
|
||||
|
||||
|
|
@ -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
|
||||
52
etckeeper-1.18.18-fix-output-for-ansible.patch
Normal file
52
etckeeper-1.18.18-fix-output-for-ansible.patch
Normal file
|
|
@ -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
|
||||
11
etckeeper-1.18.21-bz2203408.patch
Normal file
11
etckeeper-1.18.21-bz2203408.patch
Normal file
|
|
@ -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
|
||||
4
etckeeper.actions
Normal file
4
etckeeper.actions
Normal file
|
|
@ -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=/'
|
||||
262
etckeeper.spec
262
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 <python-maint@redhat.com> - 1.18.22-6
|
||||
- Rebuilt for Python 3.14.0rc3 bytecode
|
||||
|
||||
* Fri Aug 15 2025 Python Maint <python-maint@redhat.com> - 1.18.22-5
|
||||
- Rebuilt for Python 3.14.0rc2 bytecode
|
||||
|
||||
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.18.22-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
||||
|
||||
* Tue Jul 15 2025 Thomas Moschny <thomas.moschny@gmx.de> - 1.18.22-3
|
||||
- Fix conditional.
|
||||
|
||||
* Tue Jul 15 2025 Thomas Moschny <thomas.moschny@gmx.de> - 1.18.22-2
|
||||
- Update action file to produce expected action output.
|
||||
|
||||
* Mon Jul 14 2025 Thomas Moschny <thomas.moschny@gmx.de> - 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 <python-maint@redhat.com> - 1.18.21-6
|
||||
- Rebuilt for Python 3.14
|
||||
|
||||
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.18.21-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
|
||||
|
||||
* Thu Jul 25 2024 Miroslav Suchý <msuchy@redhat.com> - 1.18.21-4
|
||||
- convert license to SPDX
|
||||
|
||||
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.18.21-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
||||
|
||||
* Fri Jun 07 2024 Python Maint <python-maint@redhat.com> - 1.18.21-2
|
||||
- Rebuilt for Python 3.13
|
||||
|
||||
* Wed May 1 2024 Thomas Moschny <thomas.moschny@gmx.de> - 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 <releng@fedoraproject.org> - 1.18.20-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.18.20-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Tue Jul 25 2023 Python Maint <python-maint@redhat.com> - 1.18.20-3
|
||||
- Rebuilt for Python 3.12
|
||||
|
||||
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.18.20-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Sat Jan 28 2023 Thomas Moschny <thomas.moschny@gmx.de> - 1.18.20-1
|
||||
- Update to 1.18.20.
|
||||
|
||||
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.18.18-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Fri Dec 2 2022 Thomas Moschny <thomas.moschny@gmx.de> - 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 <releng@fedoraproject.org> - 1.18.17-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Wed Jun 15 2022 Python Maint <python-maint@redhat.com> - 1.18.17-2
|
||||
- Rebuilt for Python 3.11
|
||||
|
||||
* Tue Mar 8 2022 Thomas Moschny <thomas.moschny@gmx.de> - 1.18.17-1
|
||||
- Update to 1.18.17.
|
||||
|
||||
|
|
|
|||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (etckeeper-1.18.17.tar.gz) = 6e75d0f38c8d27ba290ab6e1a51d50ca7a736c958da7a1edb792a5c7f1eedd4848adbb43571425f127bf2c5fe39d5b7887968b09178ca5385ec0abeaeb6cfa00
|
||||
SHA512 (etckeeper-1.18.22.tar.gz) = e35ab90862c1f4426c17aec4d9ffe5975c652b290645ac333e9f27fcc157b9eba5e0efe73553a400464102c939f085f4e08f4b04564a015ad6941b1d50dbbe76
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue