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