public inbox for ipfire-scm@lists.ipfire.org
 help / color / mirror / Atom feed
* [git.ipfire.org] IPFire 3.x development tree branch, master, updated. 7dcf09a681fba7e1b5d511e92caea9b59dcea8b1
@ 2016-10-12 17:33 git
  0 siblings, 0 replies; only message in thread
From: git @ 2016-10-12 17:33 UTC (permalink / raw)
  To: ipfire-scm

[-- Attachment #1: Type: text/plain, Size: 64094 bytes --]

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "IPFire 3.x development tree".

The branch, master has been updated
       via  7dcf09a681fba7e1b5d511e92caea9b59dcea8b1 (commit)
       via  4034c523117d03861162c0b66cdc5f07c66b4b27 (commit)
       via  c552562aea45eb921e4635fc55ba8fe7071690bf (commit)
       via  7f27ab78b2229383a276d5eaa7ae3e51fec2e2c5 (commit)
       via  cb87081b3f6c6aeffc571a672da7d3c7790cba8c (commit)
       via  a309947b04557d6e92c9e3319dcd1626e95fe538 (commit)
      from  fdaf9476f6a493fef43d90d6cf3149e4702c9f26 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 7dcf09a681fba7e1b5d511e92caea9b59dcea8b1
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date:   Wed Oct 12 14:40:01 2016 +0200

    smartmontools: Rework package.
    
    * Enable useage of libcap-ng.
    * Drop support for SELinux.
    * Replace hardcoded path values.
    * Enable testsuite.
    * Add scriptlet for systemd.
    
    Fixes #11229.
    
    Signed-off-by: Stefan Schantl <stefan.schantl(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 4034c523117d03861162c0b66cdc5f07c66b4b27
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date:   Wed Oct 12 13:41:12 2016 +0200

    python: Update to 2.7.12.
    
    This is a minor update to the lastest available version of
    the python 2.7 series.
    
    * Drop support for SELinux.
    
    Fixes #11226.
    
    Signed-off-by: Stefan Schantl <stefan.schantl(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit c552562aea45eb921e4635fc55ba8fe7071690bf
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date:   Wed Oct 12 11:10:37 2016 +0200

    pam: Update to 1.3.0
    
    This is a major update to the latest available version of pam.
    
    * Adjust source download location.
    * Replace various hardcode path.
    * Enable testsuite.
    * Drop SELinux support.
    
    Fixes #11219.
    
    Signed-off-by: Stefan Schantl <stefan.schantl(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 7f27ab78b2229383a276d5eaa7ae3e51fec2e2c5
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date:   Wed Oct 12 11:01:03 2016 +0200

    sudo: Enable testsuite.
    
    Signed-off-by: Stefan Schantl <stefan.schantl(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit cb87081b3f6c6aeffc571a672da7d3c7790cba8c
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date:   Wed Oct 12 08:11:04 2016 +0200

    sudo: Update to 1.8.18p1.
    
    This is a minor update to the latest available version of sudo.
    
    * Replace hardcoded path.
    * Drop SELinux support.
    
    Fixes #11230.
    
    Signed-off-by: Stefan Schantl <stefan.schantl(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit a309947b04557d6e92c9e3319dcd1626e95fe538
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date:   Wed Oct 5 13:40:33 2016 +0200

    parted: Update to 3.2.
    
    This is an major update to the latest stable version of parted.
    
    * Drop SELinux support.
    * Enable testsuite.
    
    Fixes #11220.
    
    Signed-off-by: Stefan Schantl <stefan.schantl(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

-----------------------------------------------------------------------

Summary of changes:
 pam/pam.nm                                         |  25 ++-
 pam/patches/pam-1.1.5-unix-no-fallback.patch       |  69 ------
 parted/parted.nm                                   |  27 ++-
 ...0134-fix-COUNT_ALLOCS-failure-in-test_sys.patch |  14 +-
 ...6-skip-tests-of-seeking-stdin-in-rpmbuild.patch |  25 +--
 python/patches/00157-uid-gid-overflows.patch       |  76 +++----
 python/patches/00170-gc-assertions.patch           |   4 +-
 ...00173-workaround-ENOPROTOOPT-in-bind_port.patch |   7 +-
 ...-4238-hostname-check-bypass-in-SSL-module.patch | 247 ---------------------
 python/patches/00186-memory-leak-marshalc.patch    |  57 -----
 python/patches/05000-autotool-intermediates.patch  |  13 +-
 python/patches/python-2.5.1-plural-fix.patch       |   2 +-
 python/patches/python-2.6-rpath.patch              |   2 +-
 python/patches/python-2.7rc1-binutils-no-dep.patch |  14 --
 ...2.7.3-lib64.patch => python-2.7.12-lib64.patch} | 140 ++++++------
 python/python.nm                                   |   7 +-
 smartmontools/smartmontools.nm                     |  55 ++++-
 sudo/sudo.nm                                       |  26 ++-
 18 files changed, 234 insertions(+), 576 deletions(-)
 delete mode 100644 pam/patches/pam-1.1.5-unix-no-fallback.patch
 delete mode 100644 python/patches/00185-CVE-2013-4238-hostname-check-bypass-in-SSL-module.patch
 delete mode 100644 python/patches/00186-memory-leak-marshalc.patch
 delete mode 100644 python/patches/python-2.7rc1-binutils-no-dep.patch
 rename python/{python-2.7.3-lib64.patch => python-2.7.12-lib64.patch} (63%)

Difference in files:
diff --git a/pam/pam.nm b/pam/pam.nm
index 54be8d0..1f4da19 100644
--- a/pam/pam.nm
+++ b/pam/pam.nm
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = pam
-version    = 1.1.6
+version    = 1.3.0
 release    = 1
 thisapp    = Linux-PAM-%{version}
 
@@ -22,7 +22,7 @@ end
 # This is the old location that might be revived in future
 # source_dl = http://ftp.us.kernel.org/pub/linux/libs/pam/library/
 
-source_dl  = https://fedorahosted.org/releases/l/i/linux-pam/
+source_dl  = http://www.linux-pam.org/library/
 
 build
 	requires
@@ -30,24 +30,35 @@ build
 		bison
 		cracklib-devel
 		flex
-		libselinux-devel
 	end
 
+	export LD_LIBRARY_PATH = %{DIR_APP}/libpam/.libs
+
 	configure_options += \
 		--includedir=%{includedir}/security \
 		--docdir=/usr/share/doc/Linux-PAM-%{version} \
 		--enable-read-both-confs \
 		--disable-rpath
 
+	test
+		# Temporary copy our pam config files to the sysconfdir
+		# the chroot environment. They are required by various tests
+		# of the testsuite.
+		cp -avf %{DIR_SOURCE}/pam.d %{sysconfdir}
+
+		# Run the testsuite.
+		make check
+	end
+
 	install_cmds
 		#useradd -D -b /home
 		#sed -i 's/yes/no/' %{BUILDROOT}/etc/default/useradd
-		mkdir -pv %{BUILDROOT}/etc/security
+		mkdir -pv %{BUILDROOT}%{sysconfdir}/security
 		install -v -m644 %{DIR_SOURCE}/pam_env.conf \
-			%{BUILDROOT}/etc/security/pam_env.conf
+			%{BUILDROOT}%{sysconfdir}/security/pam_env.conf
 
 		# Included in setup package
-		rm -f %{BUILDROOT}/etc/environment
+		rm -f %{BUILDROOT}%{sysconfdir}/environment
 
 		# Install man pages.
 		mkdir -pv %{BUILDROOT}%{mandir}/man5
@@ -61,7 +72,7 @@ end
 packages
 	package %{name}
 		configfiles
-			/etc/pam.d
+			%{sysconfdir}/pam.d
 		end
 	end
 
diff --git a/pam/patches/pam-1.1.5-unix-no-fallback.patch b/pam/patches/pam-1.1.5-unix-no-fallback.patch
deleted file mode 100644
index 7857196..0000000
--- a/pam/patches/pam-1.1.5-unix-no-fallback.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-diff -up Linux-PAM-1.1.5/modules/pam_unix/pam_unix.8.xml.no-fallback Linux-PAM-1.1.5/modules/pam_unix/pam_unix.8.xml
---- Linux-PAM-1.1.5/modules/pam_unix/pam_unix.8.xml.no-fallback	2011-06-21 11:04:56.000000000 +0200
-+++ Linux-PAM-1.1.5/modules/pam_unix/pam_unix.8.xml	2012-05-09 11:54:34.442036404 +0200
-@@ -265,11 +265,10 @@
-         <listitem>
-           <para>
-             When a user changes their password next,
--            encrypt it with the SHA256 algorithm. If the
--            SHA256 algorithm is not known to the <citerefentry>
-+            encrypt it with the SHA256 algorithm. The
-+            SHA256 algorithm must be supported by the <citerefentry>
- 	    <refentrytitle>crypt</refentrytitle><manvolnum>3</manvolnum>
--            </citerefentry> function,
--            fall back to MD5.
-+            </citerefentry> function.
-           </para>
-         </listitem>
-       </varlistentry>
-@@ -280,11 +279,10 @@
-         <listitem>
-           <para>
-             When a user changes their password next,
--            encrypt it with the SHA512 algorithm. If the
--            SHA512 algorithm is not known to the <citerefentry>
-+            encrypt it with the SHA512 algorithm. The
-+            SHA512 algorithm must be supported by the <citerefentry>
- 	    <refentrytitle>crypt</refentrytitle><manvolnum>3</manvolnum>
--            </citerefentry> function,
--            fall back to MD5.
-+            </citerefentry> function.
-           </para>
-         </listitem>
-       </varlistentry>
-@@ -295,11 +293,10 @@
-         <listitem>
-           <para>
-             When a user changes their password next,
--            encrypt it with the blowfish algorithm. If the
--            blowfish algorithm is not known to the <citerefentry>
-+            encrypt it with the blowfish algorithm. The
-+            blowfish algorithm must be supported by the <citerefentry>
- 	    <refentrytitle>crypt</refentrytitle><manvolnum>3</manvolnum>
--            </citerefentry> function,
--            fall back to MD5.
-+            </citerefentry> function.
-           </para>
-         </listitem>
-       </varlistentry>
-diff -up Linux-PAM-1.1.5/modules/pam_unix/passverify.c.no-fallback Linux-PAM-1.1.5/modules/pam_unix/passverify.c
---- Linux-PAM-1.1.5/modules/pam_unix/passverify.c.no-fallback	2012-05-09 11:48:12.409632377 +0200
-+++ Linux-PAM-1.1.5/modules/pam_unix/passverify.c	2012-05-09 11:48:36.953172291 +0200
-@@ -427,15 +427,14 @@ PAMH_ARG_DECL(char * create_password_has
- 	if (!sp || strncmp(algoid, sp, strlen(algoid)) != 0) {
- 		/* libxcrypt/libc doesn't know the algorithm, use MD5 */
- 		pam_syslog(pamh, LOG_ERR,
--			   "Algo %s not supported by the crypto backend, "
--			   "falling back to MD5\n",
-+			   "Algo %s not supported by the crypto backend.\n",
- 			   on(UNIX_BLOWFISH_PASS, ctrl) ? "blowfish" :
- 			   on(UNIX_SHA256_PASS, ctrl) ? "sha256" :
- 			   on(UNIX_SHA512_PASS, ctrl) ? "sha512" : algoid);
- 		if(sp) {
- 		   memset(sp, '\0', strlen(sp));
- 		}
--		return crypt_md5_wrapper(password);
-+		return NULL;
- 	}
- 
- 	return x_strdup(sp);
diff --git a/parted/parted.nm b/parted/parted.nm
index 3beb58a..a37b1f8 100644
--- a/parted/parted.nm
+++ b/parted/parted.nm
@@ -4,7 +4,7 @@
 ###############################################################################
 
 name       = parted
-version    = 3.1
+version    = 3.2
 release    = 1
 
 groups     = Applications/System
@@ -24,18 +24,37 @@ sources    = %{thisapp}.tar.xz
 
 build
 	requires
+		# Testsuite
+		/usr/sbin/mkswap
+		/usr/bin/udevadm
+
+		# Build dependencies
 		libdevmapper-devel
-		libselinux-devel
-		libsepol-devel
 		libuuid-devel
 		ncurses-devel
 		pkg-config
 		readline-devel
 	end
 
+	export LD_LIBRARY_PATH=%{DIR_APP}/libparted/.libs:%{DIR_APP}/libparted/fs/.libs
+
 	configure_options += \
-		--enable-selinux \
 		--disable-Werror
+
+	test
+		# Disable test because it needs a locale C.UTF-8.
+		sed -i '/t0251-gpt-unicode.sh/d' tests/Makefile
+
+		# Disable tests because they force to require loopback devices.
+		sed -i '/t6001-psep.sh/d' tests/Makefile
+		sed -i '/t6002-dm-busy.sh/d' tests/Makefile
+		sed -i '/t6003-dm-hide.sh/d' tests/Makefile
+		sed -i '/t6004-dm-many-partitions.sh/d' tests/Makefile
+		sed -i '/t6005-dm-uuid.sh/d' tests/Makefile
+
+		# Run testsuite.
+		make check
+	end
 end
 
 packages
diff --git a/python/patches/00134-fix-COUNT_ALLOCS-failure-in-test_sys.patch b/python/patches/00134-fix-COUNT_ALLOCS-failure-in-test_sys.patch
index 38381ef..71e7f68 100644
--- a/python/patches/00134-fix-COUNT_ALLOCS-failure-in-test_sys.patch
+++ b/python/patches/00134-fix-COUNT_ALLOCS-failure-in-test_sys.patch
@@ -1,9 +1,11 @@
---- Python-2.7.2/Lib/test/test_sys.py.mark-tests-that-fail-in-rpmbuild	2011-09-08 18:02:31.627362039 -0400
-+++ Python-2.7.2/Lib/test/test_sys.py	2011-09-08 18:15:29.450308851 -0400
-@@ -734,6 +734,11 @@ class SizeofTest(unittest.TestCase):
-         # (PyTypeObject + PyNumberMethods +  PyMappingMethods +
-         #  PySequenceMethods + PyBufferProcs)
-         s = vsize('P2P15Pl4PP9PP11PI') + struct.calcsize('41P 10P 3P 6P')
+diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
+index 0dd4258..d9b3267 100644
+--- a/Lib/test/test_sys.py
++++ b/Lib/test/test_sys.py
+@@ -769,6 +769,11 @@ class SizeofTest(unittest.TestCase):
+                   '10P'                 # PySequenceMethods
+                   '6P'                  # PyBufferProcs
+                   '2P')
 +
 +        # COUNT_ALLOCS adds further fields to the end of a PyTypeObject:
 +        if hasattr(sys, 'getcounts'):
diff --git a/python/patches/00136-skip-tests-of-seeking-stdin-in-rpmbuild.patch b/python/patches/00136-skip-tests-of-seeking-stdin-in-rpmbuild.patch
index 845fb2a..4d7626f 100644
--- a/python/patches/00136-skip-tests-of-seeking-stdin-in-rpmbuild.patch
+++ b/python/patches/00136-skip-tests-of-seeking-stdin-in-rpmbuild.patch
@@ -1,22 +1,11 @@
-diff -up Python-2.7.2/Lib/test/test_file2k.py.skip-tests-of-seeking-stdin-in-rpmbuild Python-2.7.2/Lib/test/test_file2k.py
---- Python-2.7.2/Lib/test/test_file2k.py.skip-tests-of-seeking-stdin-in-rpmbuild	2011-09-08 17:23:50.922520729 -0400
-+++ Python-2.7.2/Lib/test/test_file2k.py	2011-09-08 17:24:41.368517277 -0400
-@@ -213,6 +213,7 @@ class OtherFileTests(unittest.TestCase):
+diff -up Python-2.7.6/Lib/test/test_file2k.py.stdin-test Python-2.7.6/Lib/test/test_file2k.py
+--- Python-2.7.6/Lib/test/test_file2k.py.stdin-test	2013-11-10 08:36:40.000000000 +0100
++++ Python-2.7.6/Lib/test/test_file2k.py	2014-01-29 14:28:01.029488055 +0100
+@@ -223,6 +223,7 @@ class OtherFileTests(unittest.TestCase):
              else:
                  f.close()
  
 +    @unittest._skipInRpmBuild('seems not to raise the exception when run in Koji')
-     def testStdin(self):
-         # This causes the interpreter to exit on OSF1 v5.1.
-         if sys.platform != 'osf1V5':
-diff -up Python-2.7.2/Lib/test/test_file.py.skip-tests-of-seeking-stdin-in-rpmbuild Python-2.7.2/Lib/test/test_file.py
---- Python-2.7.2/Lib/test/test_file.py.skip-tests-of-seeking-stdin-in-rpmbuild	2011-09-08 17:20:31.146534389 -0400
-+++ Python-2.7.2/Lib/test/test_file.py	2011-09-08 17:24:45.016517030 -0400
-@@ -154,6 +154,7 @@ class OtherFileTests(unittest.TestCase):
-                 f.close()
-                 self.fail('%r is an invalid file mode' % mode)
- 
-+    @unittest._skipInRpmBuild('seems not to raise the exception when run in Koji')
-     def testStdin(self):
-         # This causes the interpreter to exit on OSF1 v5.1.
-         if sys.platform != 'osf1V5':
+     def testStdinSeek(self):
+         if sys.platform == 'osf1V5':
+             # This causes the interpreter to exit on OSF1 v5.1.
diff --git a/python/patches/00157-uid-gid-overflows.patch b/python/patches/00157-uid-gid-overflows.patch
index 13546bb..a31c98a 100644
--- a/python/patches/00157-uid-gid-overflows.patch
+++ b/python/patches/00157-uid-gid-overflows.patch
@@ -2,48 +2,48 @@ diff -up Python-2.7.3/Lib/test/test_os.py.uid-gid-overflows Python-2.7.3/Lib/tes
 --- Python-2.7.3/Lib/test/test_os.py.uid-gid-overflows	2012-04-09 19:07:32.000000000 -0400
 +++ Python-2.7.3/Lib/test/test_os.py	2012-06-26 14:51:36.000817929 -0400
 @@ -677,30 +677,36 @@ if sys.platform != 'win32':
-             def test_setuid(self):
-                 if os.getuid() != 0:
-                     self.assertRaises(os.error, os.setuid, 0)
-+                self.assertRaises(TypeError, os.setuid, 'not an int')
-                 self.assertRaises(OverflowError, os.setuid, 1<<32)
+     def test_setuid(self):
+         if os.getuid() != 0:
+             self.assertRaises(os.error, os.setuid, 0)
++        self.assertRaises(TypeError, os.setuid, 'not an int')
+         self.assertRaises(OverflowError, os.setuid, 1<<32)
  
-         if hasattr(os, 'setgid'):
-             def test_setgid(self):
-                 if os.getuid() != 0:
-                     self.assertRaises(os.error, os.setgid, 0)
-+                self.assertRaises(TypeError, os.setgid, 'not an int')
-                 self.assertRaises(OverflowError, os.setgid, 1<<32)
+     @unittest.skipUnless(hasattr(os, 'setgid'), 'test needs os.setgid()')
+     def test_setgid(self):
+         if os.getuid() != 0:
+             self.assertRaises(os.error, os.setgid, 0)
++        self.assertRaises(TypeError, os.setgid, 'not an int')
+         self.assertRaises(OverflowError, os.setgid, 1<<32)
  
-         if hasattr(os, 'seteuid'):
-             def test_seteuid(self):
-                 if os.getuid() != 0:
-                     self.assertRaises(os.error, os.seteuid, 0)
-+                self.assertRaises(TypeError, os.seteuid, 'not an int')
-                 self.assertRaises(OverflowError, os.seteuid, 1<<32)
+     @unittest.skipUnless(hasattr(os, 'seteuid'), 'test needs os.seteuid()')
+     def test_seteuid(self):
+         if os.getuid() != 0:
+             self.assertRaises(os.error, os.seteuid, 0)
++        self.assertRaises(TypeError, os.seteuid, 'not an int')
+         self.assertRaises(OverflowError, os.seteuid, 1<<32)
  
-         if hasattr(os, 'setegid'):
-             def test_setegid(self):
-                 if os.getuid() != 0:
-                     self.assertRaises(os.error, os.setegid, 0)
-+                self.assertRaises(TypeError, os.setegid, 'not an int')
-                 self.assertRaises(OverflowError, os.setegid, 1<<32)
+     @unittest.skipUnless(hasattr(os, 'setegid'), 'test needs os.setegid()')
+     def test_setegid(self):
+         if os.getuid() != 0:
+             self.assertRaises(os.error, os.setegid, 0)
++        self.assertRaises(TypeError, os.setegid, 'not an int')
+         self.assertRaises(OverflowError, os.setegid, 1<<32)
  
-         if hasattr(os, 'setreuid'):
-             def test_setreuid(self):
-                 if os.getuid() != 0:
-                     self.assertRaises(os.error, os.setreuid, 0, 0)
-+                self.assertRaises(TypeError, os.setreuid, 'not an int', 0)
-+                self.assertRaises(TypeError, os.setreuid, 0, 'not an int')
-                 self.assertRaises(OverflowError, os.setreuid, 1<<32, 0)
-                 self.assertRaises(OverflowError, os.setreuid, 0, 1<<32)
+     @unittest.skipUnless(hasattr(os, 'setreuid'), 'test needs os.setreuid()')
+     def test_setreuid(self):
+         if os.getuid() != 0:
+             self.assertRaises(os.error, os.setreuid, 0, 0)
++        self.assertRaises(TypeError, os.setreuid, 'not an int', 0)
++        self.assertRaises(TypeError, os.setreuid, 0, 'not an int')
+         self.assertRaises(OverflowError, os.setreuid, 1<<32, 0)
+         self.assertRaises(OverflowError, os.setreuid, 0, 1<<32)
  
 @@ -715,6 +721,8 @@ if sys.platform != 'win32':
-             def test_setregid(self):
-                 if os.getuid() != 0:
-                     self.assertRaises(os.error, os.setregid, 0, 0)
-+                self.assertRaises(TypeError, os.setregid, 'not an int', 0)
-+                self.assertRaises(TypeError, os.setregid, 0, 'not an int')
-                 self.assertRaises(OverflowError, os.setregid, 1<<32, 0)
-                 self.assertRaises(OverflowError, os.setregid, 0, 1<<32)
+     def test_setregid(self):
+         if os.getuid() != 0:
+             self.assertRaises(os.error, os.setregid, 0, 0)
++        self.assertRaises(TypeError, os.setregid, 'not an int', 0)
++        self.assertRaises(TypeError, os.setregid, 0, 'not an int')
+         self.assertRaises(OverflowError, os.setregid, 1<<32, 0)
+         self.assertRaises(OverflowError, os.setregid, 0, 1<<32)
  
diff --git a/python/patches/00170-gc-assertions.patch b/python/patches/00170-gc-assertions.patch
index 3fb37ff..f3a0838 100644
--- a/python/patches/00170-gc-assertions.patch
+++ b/python/patches/00170-gc-assertions.patch
@@ -3,8 +3,8 @@ diff -up Python-2.7.3/Lib/test/test_gc.py.gc-assertions Python-2.7.3/Lib/test/te
 +++ Python-2.7.3/Lib/test/test_gc.py	2013-02-20 16:39:52.720489297 -0500
 @@ -1,6 +1,7 @@
  import unittest
--from test.test_support import verbose, run_unittest
-+from test.test_support import verbose, run_unittest, import_module
+-from test.test_support import verbose, run_unittest, start_threads
++from test.test_support import verbose, run_unittest, start_threads, import_module
  import sys
 +import sysconfig
  import time
diff --git a/python/patches/00173-workaround-ENOPROTOOPT-in-bind_port.patch b/python/patches/00173-workaround-ENOPROTOOPT-in-bind_port.patch
index eb34610..3e83d67 100644
--- a/python/patches/00173-workaround-ENOPROTOOPT-in-bind_port.patch
+++ b/python/patches/00173-workaround-ENOPROTOOPT-in-bind_port.patch
@@ -8,6 +8,7 @@ diff -up Python-2.7.3/Lib/test/test_support.py.rhbz913732 Python-2.7.3/Lib/test/
 -        if hasattr(socket, 'SO_REUSEPORT'):
 +        if hasattr(socket, 'SO_REUSEPORT') \
 +                and 'WITHIN_PYTHON_RPM_BUILD' not in os.environ: # rhbz#913732
-             if sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT) == 1:
-                 raise TestFailed("tests should never set the SO_REUSEPORT "   \
-                                  "socket option on TCP/IP sockets!")
+             try:
+                 if sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT) == 1:
+                     raise TestFailed("tests should never set the SO_REUSEPORT "   \
+                                      "socket option on TCP/IP sockets!")
diff --git a/python/patches/00185-CVE-2013-4238-hostname-check-bypass-in-SSL-module.patch b/python/patches/00185-CVE-2013-4238-hostname-check-bypass-in-SSL-module.patch
deleted file mode 100644
index e215589..0000000
--- a/python/patches/00185-CVE-2013-4238-hostname-check-bypass-in-SSL-module.patch
+++ /dev/null
@@ -1,247 +0,0 @@
-diff -r 9ddc63c039ba Lib/test/nullbytecert.pem
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/Lib/test/nullbytecert.pem	Sun Aug 11 18:13:17 2013 +0200
-@@ -0,0 +1,90 @@
-+Certificate:
-+    Data:
-+        Version: 3 (0x2)
-+        Serial Number: 0 (0x0)
-+    Signature Algorithm: sha1WithRSAEncryption
-+        Issuer: C=US, ST=Oregon, L=Beaverton, O=Python Software Foundation, OU=Python Core Development, CN=null.python.org\x00example.org/emailAddress=python-dev(a)python.org
-+        Validity
-+            Not Before: Aug  7 13:11:52 2013 GMT
-+            Not After : Aug  7 13:12:52 2013 GMT
-+        Subject: C=US, ST=Oregon, L=Beaverton, O=Python Software Foundation, OU=Python Core Development, CN=null.python.org\x00example.org/emailAddress=python-dev(a)python.org
-+        Subject Public Key Info:
-+            Public Key Algorithm: rsaEncryption
-+                Public-Key: (2048 bit)
-+                Modulus:
-+                    00:b5:ea:ed:c9:fb:46:7d:6f:3b:76:80:dd:3a:f3:
-+                    03:94:0b:a7:a6:db:ec:1d:df:ff:23:74:08:9d:97:
-+                    16:3f:a3:a4:7b:3e:1b:0e:96:59:25:03:a7:26:e2:
-+                    88:a9:cf:79:cd:f7:04:56:b0:ab:79:32:6e:59:c1:
-+                    32:30:54:eb:58:a8:cb:91:f0:42:a5:64:27:cb:d4:
-+                    56:31:88:52:ad:cf:bd:7f:f0:06:64:1f:cc:27:b8:
-+                    a3:8b:8c:f3:d8:29:1f:25:0b:f5:46:06:1b:ca:02:
-+                    45:ad:7b:76:0a:9c:bf:bb:b9:ae:0d:16:ab:60:75:
-+                    ae:06:3e:9c:7c:31:dc:92:2f:29:1a:e0:4b:0c:91:
-+                    90:6c:e9:37:c5:90:d7:2a:d7:97:15:a3:80:8f:5d:
-+                    7b:49:8f:54:30:d4:97:2c:1c:5b:37:b5:ab:69:30:
-+                    68:43:d3:33:78:4b:02:60:f5:3c:44:80:a1:8f:e7:
-+                    f0:0f:d1:5e:87:9e:46:cf:62:fc:f9:bf:0c:65:12:
-+                    f1:93:c8:35:79:3f:c8:ec:ec:47:f5:ef:be:44:d5:
-+                    ae:82:1e:2d:9a:9f:98:5a:67:65:e1:74:70:7c:cb:
-+                    d3:c2:ce:0e:45:49:27:dc:e3:2d:d4:fb:48:0e:2f:
-+                    9e:77:b8:14:46:c0:c4:36:ca:02:ae:6a:91:8c:da:
-+                    2f:85
-+                Exponent: 65537 (0x10001)
-+        X509v3 extensions:
-+            X509v3 Basic Constraints: critical
-+                CA:FALSE
-+            X509v3 Subject Key Identifier:
-+                88:5A:55:C0:52:FF:61:CD:52:A3:35:0F:EA:5A:9C:24:38:22:F7:5C
-+            X509v3 Key Usage:
-+                Digital Signature, Non Repudiation, Key Encipherment
-+            X509v3 Subject Alternative Name:
-+                *************************************************************
-+                WARNING: The values for DNS, email and URI are WRONG. OpenSSL
-+                         doesn't print the text after a NULL byte.
-+                *************************************************************
-+                DNS:altnull.python.org, email:null(a)python.org, URI:http://null.python.org, IP Address:192.0.2.1, IP Address:2001:DB8:0:0:0:0:0:1
-+    Signature Algorithm: sha1WithRSAEncryption
-+         ac:4f:45:ef:7d:49:a8:21:70:8e:88:59:3e:d4:36:42:70:f5:
-+         a3:bd:8b:d7:a8:d0:58:f6:31:4a:b1:a4:a6:dd:6f:d9:e8:44:
-+         3c:b6:0a:71:d6:7f:b1:08:61:9d:60:ce:75:cf:77:0c:d2:37:
-+         86:02:8d:5e:5d:f9:0f:71:b4:16:a8:c1:3d:23:1c:f1:11:b3:
-+         56:6e:ca:d0:8d:34:94:e6:87:2a:99:f2:ae:ae:cc:c2:e8:86:
-+         de:08:a8:7f:c5:05:fa:6f:81:a7:82:e6:d0:53:9d:34:f4:ac:
-+         3e:40:fe:89:57:7a:29:a4:91:7e:0b:c6:51:31:e5:10:2f:a4:
-+         60:76:cd:95:51:1a:be:8b:a1:b0:fd:ad:52:bd:d7:1b:87:60:
-+         d2:31:c7:17:c4:18:4f:2d:08:25:a3:a7:4f:b7:92:ca:e2:f5:
-+         25:f1:54:75:81:9d:b3:3d:61:a2:f7:da:ed:e1:c6:6f:2c:60:
-+         1f:d8:6f:c5:92:05:ab:c9:09:62:49:a9:14:ad:55:11:cc:d6:
-+         4a:19:94:99:97:37:1d:81:5f:8b:cf:a3:a8:96:44:51:08:3d:
-+         0b:05:65:12:eb:b6:70:80:88:48:72:4f:c6:c2:da:cf:cd:8e:
-+         5b:ba:97:2f:60:b4:96:56:49:5e:3a:43:76:63:04:be:2a:f6:
-+         c1:ca:a9:94
-+-----BEGIN CERTIFICATE-----
-+MIIE2DCCA8CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBxTELMAkGA1UEBhMCVVMx
-+DzANBgNVBAgMBk9yZWdvbjESMBAGA1UEBwwJQmVhdmVydG9uMSMwIQYDVQQKDBpQ
-+eXRob24gU29mdHdhcmUgRm91bmRhdGlvbjEgMB4GA1UECwwXUHl0aG9uIENvcmUg
-+RGV2ZWxvcG1lbnQxJDAiBgNVBAMMG251bGwucHl0aG9uLm9yZwBleGFtcGxlLm9y
-+ZzEkMCIGCSqGSIb3DQEJARYVcHl0aG9uLWRldkBweXRob24ub3JnMB4XDTEzMDgw
-+NzEzMTE1MloXDTEzMDgwNzEzMTI1MlowgcUxCzAJBgNVBAYTAlVTMQ8wDQYDVQQI
-+DAZPcmVnb24xEjAQBgNVBAcMCUJlYXZlcnRvbjEjMCEGA1UECgwaUHl0aG9uIFNv
-+ZnR3YXJlIEZvdW5kYXRpb24xIDAeBgNVBAsMF1B5dGhvbiBDb3JlIERldmVsb3Bt
-+ZW50MSQwIgYDVQQDDBtudWxsLnB5dGhvbi5vcmcAZXhhbXBsZS5vcmcxJDAiBgkq
-+hkiG9w0BCQEWFXB5dGhvbi1kZXZAcHl0aG9uLm9yZzCCASIwDQYJKoZIhvcNAQEB
-+BQADggEPADCCAQoCggEBALXq7cn7Rn1vO3aA3TrzA5QLp6bb7B3f/yN0CJ2XFj+j
-+pHs+Gw6WWSUDpybiiKnPec33BFawq3kyblnBMjBU61ioy5HwQqVkJ8vUVjGIUq3P
-+vX/wBmQfzCe4o4uM89gpHyUL9UYGG8oCRa17dgqcv7u5rg0Wq2B1rgY+nHwx3JIv
-+KRrgSwyRkGzpN8WQ1yrXlxWjgI9de0mPVDDUlywcWze1q2kwaEPTM3hLAmD1PESA
-+oY/n8A/RXoeeRs9i/Pm/DGUS8ZPINXk/yOzsR/XvvkTVroIeLZqfmFpnZeF0cHzL
-+08LODkVJJ9zjLdT7SA4vnne4FEbAxDbKAq5qkYzaL4UCAwEAAaOB0DCBzTAMBgNV
-+HRMBAf8EAjAAMB0GA1UdDgQWBBSIWlXAUv9hzVKjNQ/qWpwkOCL3XDALBgNVHQ8E
-+BAMCBeAwgZAGA1UdEQSBiDCBhYIeYWx0bnVsbC5weXRob24ub3JnAGV4YW1wbGUu
-+Y29tgSBudWxsQHB5dGhvbi5vcmcAdXNlckBleGFtcGxlLm9yZ4YpaHR0cDovL251
-+bGwucHl0aG9uLm9yZwBodHRwOi8vZXhhbXBsZS5vcmeHBMAAAgGHECABDbgAAAAA
-+AAAAAAAAAAEwDQYJKoZIhvcNAQEFBQADggEBAKxPRe99SaghcI6IWT7UNkJw9aO9
-+i9eo0Fj2MUqxpKbdb9noRDy2CnHWf7EIYZ1gznXPdwzSN4YCjV5d+Q9xtBaowT0j
-+HPERs1ZuytCNNJTmhyqZ8q6uzMLoht4IqH/FBfpvgaeC5tBTnTT0rD5A/olXeimk
-+kX4LxlEx5RAvpGB2zZVRGr6LobD9rVK91xuHYNIxxxfEGE8tCCWjp0+3ksri9SXx
-+VHWBnbM9YaL32u3hxm8sYB/Yb8WSBavJCWJJqRStVRHM1koZlJmXNx2BX4vPo6iW
-+RFEIPQsFZRLrtnCAiEhyT8bC2s/Njlu6ly9gtJZWSV46Q3ZjBL4q9sHKqZQ=
-+-----END CERTIFICATE-----
-diff -r 9ddc63c039ba Lib/test/test_ssl.py
---- a/Lib/test/test_ssl.py	Sun Aug 11 13:04:50 2013 +0300
-+++ b/Lib/test/test_ssl.py	Sun Aug 11 18:13:17 2013 +0200
-@@ -25,6 +25,7 @@
- HOST = test_support.HOST
- CERTFILE = None
- SVN_PYTHON_ORG_ROOT_CERT = None
-+NULLBYTECERT = None
- 
- def handle_error(prefix):
-     exc_format = ' '.join(traceback.format_exception(*sys.exc_info()))
-@@ -123,6 +124,27 @@
-                           ('DNS', 'projects.forum.nokia.com'))
-                         )
- 
-+    def test_parse_cert_CVE_2013_4073(self):
-+        p = ssl._ssl._test_decode_cert(NULLBYTECERT)
-+        if test_support.verbose:
-+            sys.stdout.write("\n" + pprint.pformat(p) + "\n")
-+        subject = ((('countryName', 'US'),),
-+                   (('stateOrProvinceName', 'Oregon'),),
-+                   (('localityName', 'Beaverton'),),
-+                   (('organizationName', 'Python Software Foundation'),),
-+                   (('organizationalUnitName', 'Python Core Development'),),
-+                   (('commonName', 'null.python.org\x00example.org'),),
-+                   (('emailAddress', 'python-dev(a)python.org'),))
-+        self.assertEqual(p['subject'], subject)
-+        self.assertEqual(p['issuer'], subject)
-+        self.assertEqual(p['subjectAltName'],
-+                         (('DNS', 'altnull.python.org\x00example.com'),
-+                         ('email', 'null(a)python.org\x00user(a)example.org'),
-+                         ('URI', 'http://null.python.org\x00http://example.org'),
-+                         ('IP Address', '192.0.2.1'),
-+                         ('IP Address', '2001:DB8:0:0:0:0:0:1\n'))
-+                        )
-+
-     def test_DER_to_PEM(self):
-         with open(SVN_PYTHON_ORG_ROOT_CERT, 'r') as f:
-             pem = f.read()
-@@ -1360,7 +1382,7 @@
- 
- 
- def test_main(verbose=False):
--    global CERTFILE, SVN_PYTHON_ORG_ROOT_CERT, NOKIACERT
-+    global CERTFILE, SVN_PYTHON_ORG_ROOT_CERT, NOKIACERT, NULLBYTECERT
-     CERTFILE = os.path.join(os.path.dirname(__file__) or os.curdir,
-                             "keycert.pem")
-     SVN_PYTHON_ORG_ROOT_CERT = os.path.join(
-@@ -1368,10 +1390,13 @@
-         "https_svn_python_org_root.pem")
-     NOKIACERT = os.path.join(os.path.dirname(__file__) or os.curdir,
-                              "nokia.pem")
-+    NULLBYTECERT = os.path.join(os.path.dirname(__file__) or os.curdir,
-+                                "nullbytecert.pem")
- 
-     if (not os.path.exists(CERTFILE) or
-         not os.path.exists(SVN_PYTHON_ORG_ROOT_CERT) or
--        not os.path.exists(NOKIACERT)):
-+        not os.path.exists(NOKIACERT) or
-+        not os.path.exists(NULLBYTECERT)):
-         raise test_support.TestFailed("Can't read certificate files!")
- 
-     tests = [BasicTests, BasicSocketTests]
-diff -r 9ddc63c039ba Modules/_ssl.c
---- a/Modules/_ssl.c	Sun Aug 11 13:04:50 2013 +0300
-+++ b/Modules/_ssl.c	Sun Aug 11 18:13:17 2013 +0200
-@@ -741,8 +741,13 @@
- 
-             /* get a rendering of each name in the set of names */
- 
-+            int gntype;
-+            ASN1_STRING *as = NULL;
-+
-             name = sk_GENERAL_NAME_value(names, j);
--            if (name->type == GEN_DIRNAME) {
-+            gntype = name-> type;
-+            switch (gntype) {
-+            case GEN_DIRNAME:
- 
-                 /* we special-case DirName as a tuple of tuples of attributes */
- 
-@@ -764,11 +769,61 @@
-                     goto fail;
-                 }
-                 PyTuple_SET_ITEM(t, 1, v);
-+                break;
- 
--            } else {
-+            case GEN_EMAIL:
-+            case GEN_DNS:
-+            case GEN_URI:
-+                /* GENERAL_NAME_print() doesn't handle NUL bytes in ASN1_string
-+                   correctly. */
-+                t = PyTuple_New(2);
-+                if (t == NULL)
-+                    goto fail;
-+                switch (gntype) {
-+                case GEN_EMAIL:
-+                    v = PyUnicode_FromString("email");
-+                    as = name->d.rfc822Name;
-+                    break;
-+                case GEN_DNS:
-+                    v = PyUnicode_FromString("DNS");
-+                    as = name->d.dNSName;
-+                    break;
-+                case GEN_URI:
-+                    v = PyUnicode_FromString("URI");
-+                    as = name->d.uniformResourceIdentifier;
-+                    break;
-+                }
-+                if (v == NULL) {
-+                    Py_DECREF(t);
-+                    goto fail;
-+                }
-+                PyTuple_SET_ITEM(t, 0, v);
-+                v = PyString_FromStringAndSize((char *)ASN1_STRING_data(as),
-+                                               ASN1_STRING_length(as));
-+                if (v == NULL) {
-+                    Py_DECREF(t);
-+                    goto fail;
-+                }
-+                PyTuple_SET_ITEM(t, 1, v);
-+                break;
- 
-+            default:
-                 /* for everything else, we use the OpenSSL print form */
--
-+                switch (gntype) {
-+                    /* check for new general name type */
-+                    case GEN_OTHERNAME:
-+                    case GEN_X400:
-+                    case GEN_EDIPARTY:
-+                    case GEN_IPADD:
-+                    case GEN_RID:
-+                        break;
-+                    default:
-+                        if (PyErr_Warn(PyExc_RuntimeWarning,
-+				       "Unknown general name type") == -1) {
-+                            goto fail;
-+                        }
-+                        break;
-+                }
-                 (void) BIO_reset(biobuf);
-                 GENERAL_NAME_print(biobuf, name);
-                 len = BIO_gets(biobuf, buf, sizeof(buf)-1);
-@@ -794,6 +849,7 @@
-                     goto fail;
-                 }
-                 PyTuple_SET_ITEM(t, 1, v);
-+		break;
-             }
- 
-             /* and add that rendering to the list */
diff --git a/python/patches/00186-memory-leak-marshalc.patch b/python/patches/00186-memory-leak-marshalc.patch
deleted file mode 100644
index 19fb175..0000000
--- a/python/patches/00186-memory-leak-marshalc.patch
+++ /dev/null
@@ -1,57 +0,0 @@
---- Python-2.7.5/Python/marshal.c	2013-05-12 05:32:53.000000000 +0200
-+++ /home/rkuska/hg/cpython/Python/marshal.c	2013-07-18 10:33:26.392486235 +0200
-@@ -88,7 +88,7 @@
- }
- 
- static void
--w_string(char *s, Py_ssize_t n, WFILE *p)
-+w_string(const char *s, Py_ssize_t n, WFILE *p)
- {
-     if (p->fp != NULL) {
-         fwrite(s, 1, n, p->fp);
-@@ -141,6 +141,13 @@
- # define W_SIZE  w_long
- #endif
- 
-+static void
-+w_pstring(const char *s, Py_ssize_t n, WFILE *p)
-+{
-+        W_SIZE(n, p);
-+        w_string(s, n, p);
-+}
-+
- /* We assume that Python longs are stored internally in base some power of
-    2**15; for the sake of portability we'll always read and write them in base
-    exactly 2**15. */
-@@ -338,9 +345,7 @@
-         else {
-             w_byte(TYPE_STRING, p);
-         }
--        n = PyString_GET_SIZE(v);
--        W_SIZE(n, p);
--        w_string(PyString_AS_STRING(v), n, p);
-+        w_pstring(PyBytes_AS_STRING(v), PyString_GET_SIZE(v), p);
-     }
- #ifdef Py_USING_UNICODE
-     else if (PyUnicode_CheckExact(v)) {
-@@ -352,9 +357,7 @@
-             return;
-         }
-         w_byte(TYPE_UNICODE, p);
--        n = PyString_GET_SIZE(utf8);
--        W_SIZE(n, p);
--        w_string(PyString_AS_STRING(utf8), n, p);
-+        w_pstring(PyString_AS_STRING(utf8), PyString_GET_SIZE(utf8), p);
-         Py_DECREF(utf8);
-     }
- #endif
-@@ -441,8 +444,7 @@
-         PyBufferProcs *pb = v->ob_type->tp_as_buffer;
-         w_byte(TYPE_STRING, p);
-         n = (*pb->bf_getreadbuffer)(v, 0, (void **)&s);
--        W_SIZE(n, p);
--        w_string(s, n, p);
-+        w_pstring(s, n, p);
-     }
-     else {
-         w_byte(TYPE_UNKNOWN, p);
diff --git a/python/patches/05000-autotool-intermediates.patch b/python/patches/05000-autotool-intermediates.patch
index cfedc25..dfe0257 100644
--- a/python/patches/05000-autotool-intermediates.patch
+++ b/python/patches/05000-autotool-intermediates.patch
@@ -43,15 +43,6 @@ diff -up ./configure.autotool-intermediates ./configure
    --with-wctype-functions use wctype.h functions
    --with-fpectl           enable SIGFPE catching
    --with-libm=STRING      math library
-@@ -5171,7 +5181,7 @@ esac
- $as_echo_n "checking LIBRARY... " >&6; }
- if test -z "$LIBRARY"
- then
--	LIBRARY='libpython$(VERSION).a'
-+	LIBRARY='libpython$(VERSION)$(DEBUG_EXT).a'
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBRARY" >&5
- $as_echo "$LIBRARY" >&6; }
 @@ -5343,8 +5353,8 @@ $as_echo "#define Py_ENABLE_SHARED 1" >>
  	  INSTSONAME="$LDLIBRARY".$SOVERSION
            ;;
@@ -60,7 +51,7 @@ diff -up ./configure.autotool-intermediates ./configure
 -	  BLDLIBRARY='-L. -lpython$(VERSION)'
 +	  LDLIBRARY='libpython$(VERSION)$(DEBUG_EXT).so'
 +	  BLDLIBRARY='-L. -lpython$(VERSION)$(DEBUG_EXT)'
- 	  RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
+ 	  RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  	  case $ac_sys_system in
  	      FreeBSD*)
 @@ -5367,7 +5377,7 @@ $as_echo "#define Py_ENABLE_SHARED 1" >>
@@ -69,7 +60,7 @@ diff -up ./configure.autotool-intermediates ./configure
  	  LDLIBRARY='libpython$(VERSION).so'
 -	  BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
 +	  BLDLIBRARY='-L. -lpython$(VERSION)'
- 	  RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
+ 	  RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  	  ;;
      atheos*)
 @@ -5894,6 +5904,14 @@ $as_echo "no" >&6; }
diff --git a/python/patches/python-2.5.1-plural-fix.patch b/python/patches/python-2.5.1-plural-fix.patch
index 040adaf..5002cb2 100644
--- a/python/patches/python-2.5.1-plural-fix.patch
+++ b/python/patches/python-2.5.1-plural-fix.patch
@@ -7,6 +7,6 @@ diff -up Python-2.5.1/Lib/gettext.py.plural Python-2.5.1/Lib/gettext.py
                          continue
 +                    if item.startswith("#"):
 +                        continue
+                     k = v = None
                      if ':' in item:
                          k, v = item.split(':', 1)
-                         k = k.strip().lower()
diff --git a/python/patches/python-2.6-rpath.patch b/python/patches/python-2.6-rpath.patch
index 43e3ec4..33d7cf6 100644
--- a/python/patches/python-2.6-rpath.patch
+++ b/python/patches/python-2.6-rpath.patch
@@ -7,6 +7,6 @@ diff -up Python-2.6/configure.ac.rpath Python-2.6/configure.ac
  	  LDLIBRARY='libpython$(VERSION).so'
 -	  BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
 +	  BLDLIBRARY='-L. -lpython$(VERSION)'
- 	  RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
+ 	  RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  	  ;;
      atheos*)
diff --git a/python/patches/python-2.7rc1-binutils-no-dep.patch b/python/patches/python-2.7rc1-binutils-no-dep.patch
deleted file mode 100644
index ee6157c..0000000
--- a/python/patches/python-2.7rc1-binutils-no-dep.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up Python-2.7rc1/Lib/ctypes/util.py.binutils-no-dep Python-2.7rc1/Lib/ctypes/util.py
---- Python-2.7rc1/Lib/ctypes/util.py.binutils-no-dep	2010-03-15 09:42:23.000000000 -0400
-+++ Python-2.7rc1/Lib/ctypes/util.py	2010-06-06 05:03:02.155975210 -0400
-@@ -140,7 +140,9 @@ elif os.name == "posix":
-             dump = f.read()
-             rv = f.close()
-             if rv == 10:
--                raise OSError, 'objdump command not found'
-+                return os.path.basename(f) #  This is good for GLibc, I think,
-+                                           # and a dep on binutils is big (for
-+                                           # live CDs).
-             f = os.popen(cmd)
-             try:
-                 data = f.read()
diff --git a/python/python-2.7.12-lib64.patch b/python/python-2.7.12-lib64.patch
new file mode 100644
index 0000000..00c835c
--- /dev/null
+++ b/python/python-2.7.12-lib64.patch
@@ -0,0 +1,184 @@
+diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py
+index b9f1c6c..7b23714 100644
+--- a/Lib/distutils/command/install.py
++++ b/Lib/distutils/command/install.py
+@@ -42,14 +42,14 @@ else:
+ INSTALL_SCHEMES = {
+     'unix_prefix': {
+         'purelib': '$base/lib/python$py_version_short/site-packages',
+-        'platlib': '$platbase/lib/python$py_version_short/site-packages',
++        'platlib': '$platbase/lib64/python$py_version_short/site-packages',
+         'headers': '$base/include/python$py_version_short/$dist_name',
+         'scripts': '$base/bin',
+         'data'   : '$base',
+         },
+     'unix_home': {
+         'purelib': '$base/lib/python',
+-        'platlib': '$base/lib/python',
++        'platlib': '$base/lib64/python',
+         'headers': '$base/include/python/$dist_name',
+         'scripts': '$base/bin',
+         'data'   : '$base',
+diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
+index 068d1ba..3e7f077 100644
+--- a/Lib/distutils/sysconfig.py
++++ b/Lib/distutils/sysconfig.py
+@@ -119,8 +119,12 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
+         prefix = plat_specific and EXEC_PREFIX or PREFIX
+ 
+     if os.name == "posix":
++        if plat_specific or standard_lib:
++            lib = "lib64"
++        else:
++            lib = "lib"
+         libpython = os.path.join(prefix,
+-                                 "lib", "python" + get_python_version())
++                                 lib, "python" + get_python_version())
+         if standard_lib:
+             return libpython
+         else:
+diff --git a/Lib/site.py b/Lib/site.py
+index e8433b4..e8e6b50 100644
+--- a/Lib/site.py
++++ b/Lib/site.py
+@@ -288,12 +288,16 @@ def getsitepackages():
+         if sys.platform in ('os2emx', 'riscos'):
+             sitepackages.append(os.path.join(prefix, "Lib", "site-packages"))
+         elif os.sep == '/':
++            sitepackages.append(os.path.join(prefix, "lib64",
++                                        "python" + sys.version[:3],
++                                        "site-packages"))
+             sitepackages.append(os.path.join(prefix, "lib",
+                                         "python" + sys.version[:3],
+                                         "site-packages"))
+             sitepackages.append(os.path.join(prefix, "lib", "site-python"))
+         else:
+             sitepackages.append(prefix)
++            sitepackages.append(os.path.join(prefix, "lib64", "site-packages"))
+             sitepackages.append(os.path.join(prefix, "lib", "site-packages"))
+         if sys.platform == "darwin":
+             # for framework builds *only* we add the standard Apple
+diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py
+index 78c4809..3b9e74d 100644
+--- a/Lib/test/test_site.py
++++ b/Lib/test/test_site.py
+@@ -246,17 +246,20 @@ class HelperFunctionsTests(unittest.TestCase):
+             self.assertEqual(dirs[2], wanted)
+         elif os.sep == '/':
+             # OS X non-framwework builds, Linux, FreeBSD, etc
+-            self.assertEqual(len(dirs), 2)
+-            wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3],
++            self.assertEqual(len(dirs), 3)
++            wanted = os.path.join('xoxo', 'lib64', 'python' + sys.version[:3],
+                                   'site-packages')
+             self.assertEqual(dirs[0], wanted)
+-            wanted = os.path.join('xoxo', 'lib', 'site-python')
++            wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3],
++                                   'site-packages')
+             self.assertEqual(dirs[1], wanted)
++            wanted = os.path.join('xoxo', 'lib', 'site-python')
++            self.assertEqual(dirs[2], wanted)
+         else:
+             # other platforms
+             self.assertEqual(len(dirs), 2)
+             self.assertEqual(dirs[0], 'xoxo')
+-            wanted = os.path.join('xoxo', 'lib', 'site-packages')
++            wanted = os.path.join('xoxo', 'lib64', 'site-packages')
+             self.assertEqual(dirs[1], wanted)
+ 
+ class PthFile(object):
+diff --git a/Makefile.pre.in b/Makefile.pre.in
+index 5741a4c..0faa5c5 100644
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -111,7 +111,7 @@ LIBDIR=		@libdir@
+ MANDIR=		@mandir@
+ INCLUDEDIR=	@includedir@
+ CONFINCLUDEDIR=	$(exec_prefix)/include
+-SCRIPTDIR=	$(prefix)/lib
++SCRIPTDIR=	$(prefix)/lib64
+ 
+ # Detailed destination directories
+ BINLIBDEST=	$(LIBDIR)/python$(VERSION)
+diff --git a/Modules/Setup.dist b/Modules/Setup.dist
+index c70a0d6..051fd41 100644
+--- a/Modules/Setup.dist
++++ b/Modules/Setup.dist
+@@ -416,7 +416,7 @@ gdbm gdbmmodule.c -lgdbm
+ # Edit the variables DB and DBLIBVERto point to the db top directory
+ # and the subdirectory of PORT where you built it.
+ DBINC=/usr/include/libdb
+-DBLIB=/usr/lib
++DBLIB=/usr/lib64
+ _bsddb _bsddb.c -I$(DBINC) -L$(DBLIB) -ldb
+ 
+ # Historical Berkeley DB 1.85
+@@ -462,7 +462,7 @@ cPickle cPickle.c
+ # Andrew Kuchling's zlib module.
+ # This require zlib 1.1.3 (or later).
+ # See http://www.gzip.org/zlib/
+-zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
++zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib64 -lz
+ 
+ # Interface to the Expat XML parser
+ #
+diff --git a/Modules/getpath.c b/Modules/getpath.c
+index 428684c..9ef6711 100644
+--- a/Modules/getpath.c
++++ b/Modules/getpath.c
+@@ -108,7 +108,7 @@ static char prefix[MAXPATHLEN+1];
+ static char exec_prefix[MAXPATHLEN+1];
+ static char progpath[MAXPATHLEN+1];
+ static char *module_search_path = NULL;
+-static char lib_python[] = "lib/python" VERSION;
++static char lib_python[] = "lib64/python" VERSION;
+ 
+ static void
+ reduce(char *dir)
+@@ -550,7 +550,7 @@ calculate_path(void)
+             fprintf(stderr,
+                 "Could not find platform dependent libraries <exec_prefix>\n");
+         strncpy(exec_prefix, EXEC_PREFIX, MAXPATHLEN);
+-        joinpath(exec_prefix, "lib/lib-dynload");
++        joinpath(exec_prefix, "lib64/lib-dynload");
+     }
+     /* If we found EXEC_PREFIX do *not* reduce it!  (Yet.) */
+ 
+diff --git a/setup.py b/setup.py
+index 55c4f5d..19efe82 100644
+--- a/setup.py
++++ b/setup.py
+@@ -456,7 +456,7 @@ class PyBuildExt(build_ext):
+     def detect_modules(self):
+         # Ensure that /usr/local is always used
+         if not cross_compiling:
+-            add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
++            add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib64')
+             add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+         if cross_compiling:
+             self.add_gcc_paths()
+@@ -782,11 +782,11 @@ class PyBuildExt(build_ext):
+             elif curses_library:
+                 readline_libs.append(curses_library)
+             elif self.compiler.find_library_file(lib_dirs +
+-                                                     ['/usr/lib/termcap'],
++                                                     ['/usr/lib64/termcap'],
+                                                      'termcap'):
+                 readline_libs.append('termcap')
+             exts.append( Extension('readline', ['readline.c'],
+-                                   library_dirs=['/usr/lib/termcap'],
++                                   library_dirs=['/usr/lib64/termcap'],
+                                    extra_link_args=readline_extra_link_args,
+                                    libraries=readline_libs) )
+         else:
+@@ -821,8 +821,8 @@ class PyBuildExt(build_ext):
+             if krb5_h:
+                 ssl_incs += krb5_h
+         ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
+-                                     ['/usr/local/ssl/lib',
+-                                      '/usr/contrib/ssl/lib/'
++                                     ['/usr/local/ssl/lib64',
++                                      '/usr/contrib/ssl/lib64/'
+                                      ] )
+ 
+         if (ssl_incs is not None and
diff --git a/python/python-2.7.3-lib64.patch b/python/python-2.7.3-lib64.patch
deleted file mode 100644
index 71f32c5..0000000
--- a/python/python-2.7.3-lib64.patch
+++ /dev/null
@@ -1,196 +0,0 @@
-diff -up Python-2.7.3/Lib/distutils/command/install.py.lib64 Python-2.7.3/Lib/distutils/command/install.py
---- Python-2.7.3/Lib/distutils/command/install.py.lib64	2012-04-09 19:07:29.000000000 -0400
-+++ Python-2.7.3/Lib/distutils/command/install.py	2013-02-19 13:58:20.446015129 -0500
-@@ -42,14 +42,14 @@ else:
- INSTALL_SCHEMES = {
-     'unix_prefix': {
-         'purelib': '$base/lib/python$py_version_short/site-packages',
--        'platlib': '$platbase/lib/python$py_version_short/site-packages',
-+        'platlib': '$platbase/lib64/python$py_version_short/site-packages',
-         'headers': '$base/include/python$py_version_short/$dist_name',
-         'scripts': '$base/bin',
-         'data'   : '$base',
-         },
-     'unix_home': {
-         'purelib': '$base/lib/python',
--        'platlib': '$base/lib/python',
-+        'platlib': '$base/lib64/python',
-         'headers': '$base/include/python/$dist_name',
-         'scripts': '$base/bin',
-         'data'   : '$base',
-diff -up Python-2.7.3/Lib/distutils/sysconfig.py.lib64 Python-2.7.3/Lib/distutils/sysconfig.py
---- Python-2.7.3/Lib/distutils/sysconfig.py.lib64	2012-04-09 19:07:29.000000000 -0400
-+++ Python-2.7.3/Lib/distutils/sysconfig.py	2013-02-19 13:58:20.446015129 -0500
-@@ -114,8 +114,12 @@ def get_python_lib(plat_specific=0, stan
-         prefix = plat_specific and EXEC_PREFIX or PREFIX
- 
-     if os.name == "posix":
-+        if plat_specific or standard_lib:
-+            lib = "lib64"
-+        else:
-+            lib = "lib"
-         libpython = os.path.join(prefix,
--                                 "lib", "python" + get_python_version())
-+                                 lib, "python" + get_python_version())
-         if standard_lib:
-             return libpython
-         else:
-diff -up Python-2.7.3/Lib/site.py.lib64 Python-2.7.3/Lib/site.py
---- Python-2.7.3/Lib/site.py.lib64	2012-04-09 19:07:31.000000000 -0400
-+++ Python-2.7.3/Lib/site.py	2013-02-19 13:58:20.447015128 -0500
-@@ -300,12 +300,16 @@ def getsitepackages():
-         if sys.platform in ('os2emx', 'riscos'):
-             sitepackages.append(os.path.join(prefix, "Lib", "site-packages"))
-         elif os.sep == '/':
-+            sitepackages.append(os.path.join(prefix, "lib64",
-+                                        "python" + sys.version[:3],
-+                                        "site-packages"))
-             sitepackages.append(os.path.join(prefix, "lib",
-                                         "python" + sys.version[:3],
-                                         "site-packages"))
-             sitepackages.append(os.path.join(prefix, "lib", "site-python"))
-         else:
-             sitepackages.append(prefix)
-+            sitepackages.append(os.path.join(prefix, "lib64", "site-packages"))
-             sitepackages.append(os.path.join(prefix, "lib", "site-packages"))
-         if sys.platform == "darwin":
-             # for framework builds *only* we add the standard Apple
-diff -up Python-2.7.3/Lib/test/test_site.py.lib64 Python-2.7.3/Lib/test/test_site.py
---- Python-2.7.3/Lib/test/test_site.py.lib64	2012-04-09 19:07:32.000000000 -0400
-+++ Python-2.7.3/Lib/test/test_site.py	2013-02-19 13:58:20.447015128 -0500
-@@ -241,17 +241,20 @@ class HelperFunctionsTests(unittest.Test
-             self.assertEqual(dirs[2], wanted)
-         elif os.sep == '/':
-             # OS X non-framwework builds, Linux, FreeBSD, etc
--            self.assertEqual(len(dirs), 2)
--            wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3],
-+            self.assertEqual(len(dirs), 3)
-+            wanted = os.path.join('xoxo', 'lib64', 'python' + sys.version[:3],
-                                   'site-packages')
-             self.assertEqual(dirs[0], wanted)
--            wanted = os.path.join('xoxo', 'lib', 'site-python')
-+            wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3],
-+                                  'site-packages')
-             self.assertEqual(dirs[1], wanted)
-+            wanted = os.path.join('xoxo', 'lib', 'site-python')
-+            self.assertEqual(dirs[2], wanted)
-         else:
-             # other platforms
-             self.assertEqual(len(dirs), 2)
-             self.assertEqual(dirs[0], 'xoxo')
--            wanted = os.path.join('xoxo', 'lib', 'site-packages')
-+            wanted = os.path.join('xoxo', 'lib64', 'site-packages')
-             self.assertEqual(dirs[1], wanted)
- 
- class PthFile(object):
-diff -up Python-2.7.3/Makefile.pre.in.lib64 Python-2.7.3/Makefile.pre.in
---- Python-2.7.3/Makefile.pre.in.lib64	2013-02-19 13:58:20.435015131 -0500
-+++ Python-2.7.3/Makefile.pre.in	2013-02-19 13:58:20.447015128 -0500
-@@ -97,7 +97,7 @@ LIBDIR=		@libdir@
- MANDIR=		@mandir@
- INCLUDEDIR=	@includedir@
- CONFINCLUDEDIR=	$(exec_prefix)/include
--SCRIPTDIR=	$(prefix)/lib
-+SCRIPTDIR=	$(prefix)/lib64
- 
- # Detailed destination directories
- BINLIBDEST=	$(LIBDIR)/python$(VERSION)
-diff -up Python-2.7.3/Modules/getpath.c.lib64 Python-2.7.3/Modules/getpath.c
---- Python-2.7.3/Modules/getpath.c.lib64	2012-04-09 19:07:34.000000000 -0400
-+++ Python-2.7.3/Modules/getpath.c	2013-02-19 13:58:20.448015128 -0500
-@@ -117,8 +117,8 @@
- #endif
- 
- #ifndef PYTHONPATH
--#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \
--              EXEC_PREFIX "/lib/python" VERSION "/lib-dynload"
-+#define PYTHONPATH PREFIX "/lib64/python" VERSION ":" \
-+              EXEC_PREFIX "/lib64/python" VERSION "/lib-dynload"
- #endif
- 
- #ifndef LANDMARK
-@@ -129,7 +129,7 @@ static char prefix[MAXPATHLEN+1];
- static char exec_prefix[MAXPATHLEN+1];
- static char progpath[MAXPATHLEN+1];
- static char *module_search_path = NULL;
--static char lib_python[] = "lib/python" VERSION;
-+static char lib_python[] = "lib64/python" VERSION;
- 
- static void
- reduce(char *dir)
-@@ -528,7 +528,7 @@ calculate_path(void)
-     }
-     else
-         strncpy(zip_path, PREFIX, MAXPATHLEN);
--    joinpath(zip_path, "lib/python00.zip");
-+    joinpath(zip_path, "lib64/python00.zip");
-     bufsz = strlen(zip_path);   /* Replace "00" with version */
-     zip_path[bufsz - 6] = VERSION[0];
-     zip_path[bufsz - 5] = VERSION[2];
-@@ -538,7 +538,7 @@ calculate_path(void)
-             fprintf(stderr,
-                 "Could not find platform dependent libraries <exec_prefix>\n");
-         strncpy(exec_prefix, EXEC_PREFIX, MAXPATHLEN);
--        joinpath(exec_prefix, "lib/lib-dynload");
-+        joinpath(exec_prefix, "lib64/lib-dynload");
-     }
-     /* If we found EXEC_PREFIX do *not* reduce it!  (Yet.) */
- 
-diff -up Python-2.7.3/Modules/Setup.dist.lib64 Python-2.7.3/Modules/Setup.dist
---- Python-2.7.3/Modules/Setup.dist.lib64	2013-02-19 13:58:20.442015131 -0500
-+++ Python-2.7.3/Modules/Setup.dist	2013-02-19 14:02:25.255998391 -0500
-@@ -413,7 +413,7 @@ gdbm gdbmmodule.c -lgdbm
- # Edit the variables DB and DBLIBVERto point to the db top directory
- # and the subdirectory of PORT where you built it.
- DBINC=/usr/include/libdb
--DBLIB=/usr/lib
-+DBLIB=/usr/lib64
- _bsddb _bsddb.c -I$(DBINC) -L$(DBLIB) -ldb
- 
- # Historical Berkeley DB 1.85
-@@ -459,7 +459,7 @@ cPickle cPickle.c
- # Andrew Kuchling's zlib module.
- # This require zlib 1.1.3 (or later).
- # See http://www.gzip.org/zlib/
--zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
-+zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib64 -lz
- 
- # Interface to the Expat XML parser
- #
-diff -up Python-2.7.3/setup.py.lib64 Python-2.7.3/setup.py
---- Python-2.7.3/setup.py.lib64	2012-04-09 19:07:36.000000000 -0400
-+++ Python-2.7.3/setup.py	2013-02-19 13:58:20.449015129 -0500
-@@ -369,7 +369,7 @@ class PyBuildExt(build_ext):
- 
-     def detect_modules(self):
-         # Ensure that /usr/local is always used
--        add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
-+        add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib64')
-         add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
-         self.add_gcc_paths()
-         self.add_multiarch_paths()
-@@ -677,11 +677,11 @@ class PyBuildExt(build_ext):
-             elif curses_library:
-                 readline_libs.append(curses_library)
-             elif self.compiler.find_library_file(lib_dirs +
--                                                     ['/usr/lib/termcap'],
-+                                                     ['/usr/lib64/termcap'],
-                                                      'termcap'):
-                 readline_libs.append('termcap')
-             exts.append( Extension('readline', ['readline.c'],
--                                   library_dirs=['/usr/lib/termcap'],
-+                                   library_dirs=['/usr/lib64/termcap'],
-                                    extra_link_args=readline_extra_link_args,
-                                    libraries=readline_libs) )
-         else:
-@@ -715,8 +715,8 @@ class PyBuildExt(build_ext):
-             if krb5_h:
-                 ssl_incs += krb5_h
-         ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
--                                     ['/usr/local/ssl/lib',
--                                      '/usr/contrib/ssl/lib/'
-+                                     ['/usr/local/ssl/lib64',
-+                                      '/usr/contrib/ssl/lib64/'
-                                      ] )
- 
-         if (ssl_incs is not None and
diff --git a/python/python.nm b/python/python.nm
index 84704b5..0123eb9 100644
--- a/python/python.nm
+++ b/python/python.nm
@@ -5,8 +5,8 @@
 
 name       = python
 major_ver  = 2.7
-version    = %{major_ver}.5
-release    = 2
+version    = %{major_ver}.12
+release    = 1
 thisapp    = Python-%{version}
 
 groups     = Development/Languages
@@ -35,7 +35,6 @@ build
 		glibc-headers >= 2.16-4
 		libdb-devel
 		libffi-devel
-		libselinux-devel
 		ncurses-devel
 		openssl-devel
 		pakfire-builder >= 0.9.23-4
@@ -51,7 +50,7 @@ build
 	export OPT      = %{CFLAGS}
 
 	if "%{lib}" == "lib64"
-		patches += %{DIR_SOURCE}/python-2.7.3-lib64.patch
+		patches += %{DIR_SOURCE}/python-2.7.12-lib64.patch
 		patches += %{DIR_SOURCE}/python-2.7-lib64-sysconfig.patch
 	end
 
diff --git a/smartmontools/smartmontools.nm b/smartmontools/smartmontools.nm
index 222d5d9..9e85375 100644
--- a/smartmontools/smartmontools.nm
+++ b/smartmontools/smartmontools.nm
@@ -5,7 +5,7 @@
 
 name       = smartmontools
 version    = 6.5
-release    = 1
+release    = 2
 
 groups     = System/Statistics
 url        = http://smartmontools.sourceforge.net/
@@ -13,11 +13,11 @@ license    = GPLv2
 summary    = A set of tools that watches HDD S.M.A.R.T status.
 
 description
-	The smartmontools package contains two utility programs (smartctl \
-	and smartd) to control and monitor storage systems using the \
-	Self-Monitoring, Analysis and Reporting Technology System (SMART) \
-	built into most modern ATA and SCSI harddisks. In many cases, \
-	these utilities will provide advanced warning of disk degradation \
+	The smartmontools package contains two utility programs (smartctl
+	and smartd) to control and monitor storage systems using the
+	Self-Monitoring, Analysis and Reporting Technology System (SMART)
+	built into most modern ATA and SCSI harddisks. In many cases,
+	these utilities will provide advanced warning of disk degradation
 	and failure.
 end
 
@@ -26,21 +26,56 @@ source_dl  = http://sourceforge.net/projects/smartmontools/files/smartmontools/%
 build
 	requires
 		gcc-c++
-		libselinux-devel
+		libcap-ng-devel
 	end
 
 	configure_options += \
-		--mandir=/usr/share/man \
-		--sysconfdir=/etc \
-		--with-selinux
+		--mandir=%{mandir} \
+		--sysconfdir=%{sysconfdir}/%{name} \
+		--with-libcap-ng=yes \
+		--with-systemdsystemunitdir=%{unitdir}
+
+	test
+		make check
+	end
 
 	install_cmds
+		# Drop old sysvinit script.
 		rm -rvf %{BUILDROOT}/etc/rc.d
+
+		# Fix sysconfig path in systemd file.
+		sed -i 's|/etc/smartmontools/sysconfig|/etc/sysconfig|g' \
+			%{BUILDROOT}%{unitdir}/smartd.service
 	end
 end
 
 packages
 	package %{name}
+		configfiles
+			%{sysconfdir}/smartmontools/smartd.conf
+		end
+
+		prerequires
+			systemd-units
+		end
+
+		script postin
+			systemctl daemon-reload >/dev/null 2>&1 || :
+		end
+
+		script preun
+			systemctl --no-reload disable smartd.service >/dev/null 2>&1 || :
+			systemctl stop smartd.service >/dev/null 2>&1 || :
+		end
+
+		script postun
+			systemctl daemon-reload >/dev/null 2>&1 || :
+		end
+
+		script postup
+			systemctl daemon-reload >/dev/null 2>&1 || :
+			systemctl try-restart smartd.service >/dev/null 2>&1 || :
+		end
 	end
 
 	package %{name}-debuginfo
diff --git a/sudo/sudo.nm b/sudo/sudo.nm
index 5087c1e..1b2dcb1 100644
--- a/sudo/sudo.nm
+++ b/sudo/sudo.nm
@@ -4,8 +4,8 @@
 ###############################################################################
 
 name       = sudo
-version    = 1.8.17p1
-release    = 1
+version    = 1.8.18p1
+release    = 2
 
 groups     = Applications/System
 url        = http://www.sudo.ws/
@@ -30,29 +30,39 @@ build
 	requires
 		audit-devel
 		cyrus-sasl-devel
-		libselinux-devel
 		openldap-devel
 		pam-devel
 	end
 
+	export LD_LIBRARY_PATH = %{DIR_APP}/lib/util/.libs/
+
 	configure_options += \
 		--libexecdir=%{libdir} \
 		--with-logging=syslog \
 		--with-logfac=authpriv \
 		--with-pam \
 		--with-pam-login \
-		--with-editor=/usr/bin/vi \
+		--with-editor=%{bindir}/vi \
 		--with-env-editor \
 		--with-ignore-dot \
 		--with-tty-tickets \
 		--with-ldap \
 		--with-passprompt="[sudo] password for %p: " \
-		--with-selinux \
 		--with-linux-audit
 
+	prepare_cmds
+		# The tarball contains files owned by a stange uid:gid which will let
+		# the testsuite (testsudoers/test3) fail. Fix the ownership of this files.
+		chown -R 0:0 %{DIR_APP}
+	end
+
+	test
+		make check
+	end
+
 	install_cmds
-		mkdir -pv %{BUILDROOT}/etc
-		cp -vf %{DIR_SOURCE}/sudoers %{BUILDROOT}/etc/sudoers
+		mkdir -pv %{BUILDROOT}%{sysconfdir}
+		cp -vf %{DIR_SOURCE}/sudoers %{BUILDROOT}%{sysconfdir}/sudoers
 	end
 end
 
@@ -61,7 +71,7 @@ packages
 		groups += Base
 
 		configfiles
-			/etc/sudoers
+			%{sysconfdir}/sudoers
 		end
 	end
 


hooks/post-receive
--
IPFire 3.x development tree

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2016-10-12 17:33 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-12 17:33 [git.ipfire.org] IPFire 3.x development tree branch, master, updated. 7dcf09a681fba7e1b5d511e92caea9b59dcea8b1 git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox