Hello community,

here is the log from the commit of package fail2ban for openSUSE:Factory 
checked in at 2015-09-24 06:16:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fail2ban (Old)
 and      /work/SRC/openSUSE:Factory/.fail2ban.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "fail2ban"

Changes:
--------
--- /work/SRC/openSUSE:Factory/fail2ban/fail2ban.changes        2015-09-08 
18:05:10.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.fail2ban.new/fail2ban.changes   2015-09-24 
06:16:24.000000000 +0200
@@ -1,0 +2,10 @@
+Wed Sep 23 10:10:17 UTC 2015 - jweberho...@weberhofer.at
+
+- Added fail2ban-upstream-fix-ExecuteTimeoutWithNastyChildren-test.patch
+  to fix the former failing test and removed
+  fail2ban-exclude-ExecuteTimeoutWithNastyChildren-test.patch
+
+- Do not longer create test-package. Developers should not use the packaged
+  version of fail2ban.
+
+-------------------------------------------------------------------

Old:
----
  fail2ban-exclude-ExecuteTimeoutWithNastyChildren-test.patch

New:
----
  fail2ban-upstream-fix-ExecuteTimeoutWithNastyChildren-test.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ fail2ban.spec ++++++
--- /var/tmp/diff_new_pack.5WOvpz/_old  2015-09-24 06:16:25.000000000 +0200
+++ /var/tmp/diff_new_pack.5WOvpz/_new  2015-09-24 06:16:25.000000000 +0200
@@ -37,8 +37,8 @@
 Patch100:       fail2ban-opensuse-locations.patch
 # PATCH-FIX-OPENSUSE fail2ban-opensuse-service.patch jweberho...@weberhofer.at 
-- openSUSE modifications to the service file
 Patch101:       fail2ban-opensuse-service.patch
-# PATCH-FIX-OPENSUSE 
fail2ban-exclude-ExecuteTimeoutWithNastyChildren-test.patch 
jweberho...@weberhofer.at -- disable test which currently fails on some systems
-Patch102:       fail2ban-exclude-ExecuteTimeoutWithNastyChildren-test.patch
+# PATCH-FIX-UPSTREAM 
fail2ban-upstream-fix-ExecuteTimeoutWithNastyChildren-test.patch 
jweberho...@weberhofer.at -- fix failing test
+Patch102:       
fail2ban-upstream-fix-ExecuteTimeoutWithNastyChildren-test.patch
 # PATCH-FIX-OPENSUSE fail2ban-disable-iptables-w-option.patch 
jweberho...@weberhofer.at -- disable iptables "-w" option for older releases
 Patch200:       fail2ban-disable-iptables-w-option.patch
 # PATCH-FIX-OPENSUSE fail2ban-exclude-dev-log-tests.patch 
jweberho...@weberhofer.at -- remove tests that can't work on opensuse < 13.3
@@ -82,13 +82,6 @@
 can be defined by the user. Fail2Ban can read multiple log files such as sshd
 or Apache web server ones.
 
-%package tests
-Summary:        Test-cases for fail2ban
-Group:          System/Monitoring
-
-%description tests
-This package contains fail2ban's testcases
-
 %package -n SuSEfirewall2-fail2ban
 Summary:        Files for integrating fail2ban into SuSEfirewall2 via systemd
 Group:          Productivity/Networking/Security
@@ -265,6 +258,10 @@
 %{_mandir}/man5/*
 %doc README.md TODO ChangeLog COPYING doc/*.txt
 
+# do not include tests as they are executed during the build process
+%exclude %{_bindir}/fail2ban-testcases
+%exclude %{python_sitelib}/%{name}/tests
+
 %if 0%{?_unitdir:1}
 %files -n SuSEfirewall2-fail2ban
 %defattr(-,root,root)
@@ -272,11 +269,6 @@
 %{_unitdir}/fail2ban.service.d
 %endif
 
-%files tests
-%defattr(-,root,root)
-%{_bindir}/fail2ban-testcases
-%{python_sitelib}/%{name}/tests
-
 %files -n nagios-plugins-fail2ban
 %defattr(-,root,root)
 %doc files/nagios/README COPYING

++++++ fail2ban-upstream-fix-ExecuteTimeoutWithNastyChildren-test.patch ++++++
Only in fail2ban-0.9.3/: ChangeLog.orig
diff -ur fail2ban-0.9.3.orig/fail2ban/server/action.py 
fail2ban-0.9.3/fail2ban/server/action.py
--- fail2ban-0.9.3.orig/fail2ban/server/action.py       2015-08-01 
03:32:13.000000000 +0200
+++ fail2ban-0.9.3/fail2ban/server/action.py    2015-09-23 11:54:38.066927465 
+0200
@@ -560,32 +560,33 @@
                        return True
 
                _cmd_lock.acquire()
-               try: # Try wrapped within another try needed for python version 
< 2.5
+               try:
+                       retcode = None  # to guarantee being defined upon early 
except
                        stdout = tempfile.TemporaryFile(suffix=".stdout", 
prefix="fai2ban_")
                        stderr = tempfile.TemporaryFile(suffix=".stderr", 
prefix="fai2ban_")
-                       try:
-                               popen = subprocess.Popen(
-                                       realCmd, stdout=stdout, stderr=stderr, 
shell=True,
-                                       preexec_fn=os.setsid  # so that killpg 
does not kill our process
-                               )
-                               stime = time.time()
+
+                       popen = subprocess.Popen(
+                               realCmd, stdout=stdout, stderr=stderr, 
shell=True,
+                               preexec_fn=os.setsid  # so that killpg does not 
kill our process
+                       )
+                       stime = time.time()
+                       retcode = popen.poll()
+                       while time.time() - stime <= timeout and retcode is 
None:
+                               time.sleep(0.1)
                                retcode = popen.poll()
-                               while time.time() - stime <= timeout and 
retcode is None:
-                                       time.sleep(0.1)
-                                       retcode = popen.poll()
-                               if retcode is None:
-                                       logSys.error("%s -- timed out after %i 
seconds." %
-                                               (realCmd, timeout))
-                                       pgid = os.getpgid(popen.pid)
-                                       os.killpg(pgid, signal.SIGTERM)  # 
Terminate the process
+                       if retcode is None:
+                               logSys.error("%s -- timed out after %i 
seconds." %
+                                   (realCmd, timeout))
+                               pgid = os.getpgid(popen.pid)
+                               os.killpg(pgid, signal.SIGTERM)  # Terminate 
the process
+                               time.sleep(0.1)
+                               retcode = popen.poll()
+                               if retcode is None:  # Still going...
+                                       os.killpg(pgid, signal.SIGKILL)  # Kill 
the process
                                        time.sleep(0.1)
                                        retcode = popen.poll()
-                                       if retcode is None: # Still going...
-                                               os.killpg(pgid, signal.SIGKILL) 
 # Kill the process
-                                               time.sleep(0.1)
-                                               retcode = popen.poll()
-                       except OSError, e:
-                               logSys.error("%s -- failed with %s" % (realCmd, 
e))
+               except OSError as e:
+                       logSys.error("%s -- failed with %s" % (realCmd, e))
                finally:
                        _cmd_lock.release()
 
@@ -603,15 +604,16 @@
                        return True
                elif retcode is None:
                        logSys.error("%s -- unable to kill PID %i" % (realCmd, 
popen.pid))
-               elif retcode < 0:
-                       logSys.error("%s -- killed with %s" %
-                               (realCmd, signame.get(-retcode, "signal %i" % 
-retcode)))
+               elif retcode < 0 or retcode > 128:
+                       # dash would return negative while bash 128 + n
+                       sigcode = -retcode if retcode < 0 else retcode - 128
+                       logSys.error("%s -- killed with %s (return code: %s)" %
+                               (realCmd, signame.get(sigcode, "signal %i" % 
sigcode), retcode))
                else:
                        msg = _RETCODE_HINTS.get(retcode, None)
                        logSys.error("%s -- returned %i" % (realCmd, retcode))
                        if msg:
                                logSys.info("HINT on %i: %s"
                                                        % (retcode, msg % 
locals()))
-                       return False
-               raise RuntimeError("Command execution failed: %s" % realCmd)
+               return False
 
diff -ur fail2ban-0.9.3.orig/fail2ban/tests/actiontestcase.py 
fail2ban-0.9.3/fail2ban/tests/actiontestcase.py
--- fail2ban-0.9.3.orig/fail2ban/tests/actiontestcase.py        2015-08-01 
03:32:13.000000000 +0200
+++ fail2ban-0.9.3/fail2ban/tests/actiontestcase.py     2015-09-23 
11:54:38.074927626 +0200
@@ -196,11 +196,10 @@
        def testExecuteTimeout(self):
                stime = time.time()
                # Should take a minute
-               self.assertRaises(
-                       RuntimeError, CommandAction.executeCmd, 'sleep 60', 
timeout=2)
+               self.assertFalse(CommandAction.executeCmd('sleep 60', 
timeout=2))
                # give a test still 1 second, because system could be too busy
                self.assertTrue(time.time() >= stime + 2 and time.time() <= 
stime + 3)
-               self.assertTrue(self._is_logged('sleep 60 -- timed out after 2 
seconds') 
+               self.assertTrue(self._is_logged('sleep 60 -- timed out after 2 
seconds')
                        or self._is_logged('sleep 60 -- timed out after 3 
seconds'))
                self.assertTrue(self._is_logged('sleep 60 -- killed with 
SIGTERM'))
 
@@ -222,17 +221,16 @@
                                return int(f.read())
 
                # First test if can kill the bastard
-               self.assertRaises(
-                       RuntimeError, CommandAction.executeCmd, 'bash %s' % 
tmpFilename, timeout=.1)
+               self.assertFalse(CommandAction.executeCmd(
+                                'bash %s' % tmpFilename, timeout=.1))
                # Verify that the proccess itself got killed
                self.assertFalse(pid_exists(getnastypid()))  # process should 
have been killed
                self.assertTrue(self._is_logged('timed out'))
                self.assertTrue(self._is_logged('killed with SIGTERM'))
 
                # A bit evolved case even though, previous test already tests 
killing children processes
-               self.assertRaises(
-                       RuntimeError, CommandAction.executeCmd, 'out=`bash %s`; 
echo ALRIGHT' % tmpFilename,
-                       timeout=.2)
+               self.assertFalse(CommandAction.executeCmd(
+                       'out=`bash %s`; echo ALRIGHT' % tmpFilename, 
timeout=.2))
                # Verify that the proccess itself got killed
                self.assertFalse(pid_exists(getnastypid()))
                self.assertTrue(self._is_logged('timed out'))

Reply via email to