Bump to fix bug #525494 proc_exec on pax enable kernel
authorMagnus Granberg <zorry@gentoo.org>
Sat, 28 Feb 2015 23:51:10 +0000 (23:51 +0000)
committerMagnus Granberg <zorry@gentoo.org>
Sat, 28 Feb 2015 23:51:10 +0000 (23:51 +0000)
Package-Manager: portage-2.2.17/cvs/Linux x86_64
Manifest-Sign-Key: 0xFD79807F

dev-python/cffi/ChangeLog
dev-python/cffi/Manifest
dev-python/cffi/cffi-0.8.6-r1.ebuild [new file with mode: 0644]
dev-python/cffi/files/issue177_prot_exec.patch [new file with mode: 0644]

index 169829aee6ee892ede1371e45cf609dcd7ebe8af..685d92da50fc445761e7d3ecb80071910970470b 100644 (file)
@@ -1,6 +1,12 @@
 # ChangeLog for dev-python/cffi
 # Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-python/cffi/ChangeLog,v 1.46 2015/02/07 15:35:12 ago Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-python/cffi/ChangeLog,v 1.47 2015/02/28 23:50:59 zorry Exp $
+
+*cffi-0.8.6-r1 (28 Feb 2015)
+
+  28 Feb 2015; Magnus Granberg <zorry@gentoo.org> +cffi-0.8.6-r1.ebuild,
+  +files/issue177_prot_exec.patch:
+  Add fix for bug #525494 proc_exec on pax enable kernel
 
   07 Feb 2015; Agostino Sarubbo <ago@gentoo.org> cffi-0.8.6.ebuild:
   Stable for ppc, wrt bug #530592
index 8ddf439a752a3b7f5d3a5fd6a906b3734e956b6c..b11daf955eb6375f11fd5a5046d5da6ef8321657 100644 (file)
@@ -1,28 +1,20 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA256
 
+AUX issue177_prot_exec.patch 2511 SHA256 fe1e3c85836177953672746655613ada020ac48b207825cf744c8ddb1ca31e91 SHA512 70d4edc3e5f1e95dbee6772e50499f0b1e46730b5b386f58d3ce6f84a7702e67c83b2520cd1aff7cccb417f99c6211faa588d200d3f9f946de749017307ed428 WHIRLPOOL 3bac4815ccbb1c365a3e7dc1ee5b3f906a3254e301583c6f190722ab0ce7286d1d403303fffe4146d18c639a982d224b5510c29f2f9d2264cd6042056991692b
 DIST cffi-0.8.1.tar.gz 195206 SHA256 1db1eff2093e31eaaa83b274f8c6d5d2dad2908d43a301185d205e5d256d6818 SHA512 bed5cd911a58efd95721d75ff1925e210ccd9b373f8d38cc4a86ddd2b529d757390abf51bbf5b9e583f4ecdc27710560bb6c31679cd8c45d34b3562a91eac136 WHIRLPOOL eb1907e6d603749ad7717d6d211a29a2d47582d6f22bd1ed68f1c455f04b3c9d688161b70bad8653f4027a013c1dafafde7acbe83421677c8aa018400f7af791
 DIST cffi-0.8.2.tar.gz 197622 SHA256 8192393640f7bc304ce82669b35eb90592566a30abbb4924456f52079afc18e2 SHA512 13495601340244944ca5185d450e99f1f8627dbcf013bee5e1f8049572f707cce4284e2a2e1a9b609b9715065d6ffb4b3eb1d8193d6e55277f1cf73b1903a66e WHIRLPOOL ffccf9bc81e697d7de9ba2dbbccda36be9d3b80e02c99d89ee44c3bfbf76397caa48dd80b8ff0e58801af025461e458274fec8f886ec1decf72426038a75e6c0
 DIST cffi-0.8.6.tar.gz 196835 SHA256 2532d9e3af9e3c6d0f710fc98b0295b563c7f39cfd97dd2242bd36fbf4900610 SHA512 b913d459bf0d355f0cb42fa0587a940c227d6765450033b14ab4d5281173cd1875cd6872911bb4f0b567cc1c5b0ca330615ec5f6ba205b25c41b683ae8c77790 WHIRLPOOL 4a03a077f15f943e0f06acf1bc10572b19680379e36805dbfc3dfffb8a5d735d28d9bab38e2d233f3a347fc03cede8126cc2ce017c6e3a0896b9baecddfae39f
 EBUILD cffi-0.8.1.ebuild 1076 SHA256 3a1f842574f38edf081a8f782229fee4c198409abf08474f63b56f99f8bf54c9 SHA512 34652b91d99cfbc947067acbf5706ad20d8d6dbebcb1f8de7ad3178a148f0068fcf736d8e25cd3f88f29ddf84fe6aba0354d493adfec399fe8425b208cc53369 WHIRLPOOL ba386990c7406adfcb7e1199ac42fa1a899cc25c2ad217dbfcc684aaa63878c7429081ba948933d45c2cec5baca45395fadabf333ba72955463e18660abada35
 EBUILD cffi-0.8.2.ebuild 1082 SHA256 d17d38050ffecdd9aa1ef8ae6329ac97c9cadb7bbfa7b67f503843bc18ecb656 SHA512 d58f38b48097e1940b09754902bac4426cddf4a0be50e9a0b346cf4e183e315c0f9923b3088acd8eece9081464e97e6dcf7461e76174d3503546d95713f92fc9 WHIRLPOOL da8474d46c32b1876069290ca5dae1ba385989ff8069b960c91913b16148f3823ceadd4dead94d5342cf85e996bc8d1aefaf57e72eae89fac096270d44202230
+EBUILD cffi-0.8.6-r1.ebuild 1229 SHA256 d72f48ceb0e4a421c0156e83ca3208fd8112bb9e57cad4f8fdbc8651e17cceae SHA512 731ec5d971b9cbebe70a8f1a675eac259250ce8e305469513c91d9cdbbdd26ea207ad152eea0c73fa697615b0cccc4975b413c8f02cd8313d183250ed2aacfd9 WHIRLPOOL 7c12c73dbc85882ae575ee8ea225851c298ce16c0127eef4a66c1ce74468d2f3ca90119efa92401196121d9a5299d7d2601c41a3dc92e4c64d88e1edda5e32b4
 EBUILD cffi-0.8.6.ebuild 1167 SHA256 bede33a6f20579d41752daf677aba70e3ea29dfe9d061a17cc8c8bade608a509 SHA512 ba6543dcc7d47603d8cf1ddb28de2883fe142e16007e1320e01ebb13f7208c6fde42a2327c69f151e54cfca7496ab4b068493993156938e6dcc9b6c5abacfe18 WHIRLPOOL 42dab2866b3ae59cfa77b6fe6b772c51ec22d9e9a396be905d52fccc68c96a509d4fcd270033801b3318b235f61bd2515094c45d8585392f9f6ffb60f8dea51e
-MISC ChangeLog 6239 SHA256 f72d2812a957649a8374e5bd90751a93e57b29c1e816cb3ccc43bfdde5c7704f SHA512 120dcda1ddfd32b3135712175ea3942024470aa9a8e460407e54bc0cfba012722461f0f99ddc325770942ca43ae7e034f0bcec7e061c3aace6af18ab5e598652 WHIRLPOOL 94de4fc542ad245e644008390e3d7f6fa039a0b4023789fb23c5f19e8e8de1464bd02e37405edc18aca4bf97d2f87c937f9e60f355f2c3114533ab0fecd11896
+MISC ChangeLog 6437 SHA256 542da902c2269fec0f1d242072c010417577ad74aff3eaa4774147de1ccefa42 SHA512 a98bb66841bcd8ce90bebd837370d910b440b14ed1322f8e848591b392b37fdd09eac1e9b5259493f82256c62c74099c92c335516cc77b2acb919394936472a0 WHIRLPOOL c47effc60bbc393ca12c5acc6070f7d84d7b863dfc273bfaeee1b6efed9d4bbc8c9c053b1626d8345feae894a5c5079dc942ccdd26085cacf76271bb3e14c6d9
 MISC metadata.xml 227 SHA256 1e76d484d45147b1b13e20c4b24f361111b0c32973f536f1812f7109a511a254 SHA512 1ce4b99355b37566c5674c6e3c626373da74b495c04e3f17b1844cd448c999da4193ef8475e3d2413f54aeab9a5a73fb5ec31ec8da19714f94d93496a775c9f9 WHIRLPOOL 728a0330dd4542c2c0d79273d57bc3690d929218dceb4ff0a0743aeb4833162333f528707c13971a6b221cc374745d700e5b9a4385bd558eb56ab247c75b1a12
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
-iQIcBAEBCAAGBQJU1jCxAAoJELp701BxlEWf54cQAK49u5flIzyvlVoRwSLhZtmI
-HnwJW7HpJw3+0zcFeidsU/CHZKidRMXx4ufYNYHSySf8B1u5WumvTyla5D+D0IRu
-/DEy6FpYZ+bUTSm1AHERvrb3wvAgC4amsOH6QElhxsukhGMKBvctihSwD2/MMtl4
-tGdn4poQ0lU5Zdbzfpj1u1IcFuCXwnG/MdsmpR4UA+sjE3RMAksNCsH479UnRqq5
-0l+raL1HcFMklrDBpkJiiJlxLu1n+sZ5c2GmsJLjvtpMWCGDVuVbf4UbsOt8agst
-GJnyMBG5e+n95PR7dg7TU/fr+Av//iDLUg5b6/v8WhusQZqy9tI/SLrXXJPEo/3P
-MIUV+yJePL8DeP/6WrHse8wySTD8qAT1d5Z7RlWj7DLjW9Isx/FKWNdXW2Tu7XNp
-xN8XoLQaGREILiPvls8LCK1EgGd5rP7KRZK99mJaVf5KPJd4uSRXDSZIt8cbz3Te
-IvYXH6pvAzCQ1c83z8PCNdKvr/K39Mc/9aKsO3hm+hXCUWqom1x7zs0gfmdJzcXH
-7rLnFK37gpi3ZMCcQABJSOVHgWaftYPb1K/XKy7FcKunLHXZOjqsEI982o1HNoo6
-eiR0cNIpuq+Ut7sNmvOLm61BV02aSNsFFz1qlP2PC7ygAF4y+yJSulQtzqirD4Wc
-BZPxE/QhPkzfD6xTnE5Y
-=KASi
+iEYEAREIAAYFAlTyVGcACgkQe6JQqv15gH9LCQCeOFafMuxcm9p6II/1uxz79H/K
+gOEAn2DEAk/AkENsc5+1fXpXCdBrGvZv
+=erdk
 -----END PGP SIGNATURE-----
diff --git a/dev-python/cffi/cffi-0.8.6-r1.ebuild b/dev-python/cffi/cffi-0.8.6-r1.ebuild
new file mode 100644 (file)
index 0000000..e312790
--- /dev/null
@@ -0,0 +1,41 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-python/cffi/cffi-0.8.6-r1.ebuild,v 1.1 2015/02/28 23:50:59 zorry Exp $
+
+EAPI="5"
+PYTHON_COMPAT=( python{2_7,3_3,3_4} pypy )
+
+inherit distutils-r1
+
+DESCRIPTION="Foreign Function Interface for Python calling C code"
+HOMEPAGE="http://cffi.readthedocs.org/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris"
+IUSE="doc"
+
+RDEPEND="virtual/libffi
+       dev-python/pycparser[${PYTHON_USEDEP}]
+       dev-python/pytest[${PYTHON_USEDEP}]"
+DEPEND="${RDEPEND}"
+
+# Avoid race on _configtest.c (distutils/command/config.py:_gen_temp_sourcefile)
+DISTUTILS_IN_SOURCE_BUILD=1
+
+PATCHES=(
+       "${FILESDIR}/issue177_prot_exec.patch"
+)
+python_compile_all() {
+       use doc && emake -C doc html
+}
+
+python_test() {
+       py.test -x -v --ignore testing/test_zintegration.py c/ testing/ || die "Testing failed with ${EPYTHON}"
+}
+
+python_install_all() {
+       distutils-r1_python_install_all
+       use doc && dohtml -r doc/build/
+}
diff --git a/dev-python/cffi/files/issue177_prot_exec.patch b/dev-python/cffi/files/issue177_prot_exec.patch
new file mode 100644 (file)
index 0000000..8dbcf07
--- /dev/null
@@ -0,0 +1,79 @@
+# HG changeset patch
+# User Armin Rigo <arigo@tunes.org>
+# Date 1424942568 -3600
+# Node ID c7edb1e84eb3c29cac0674790cb4efcbcf1683b2
+# Parent  95e0563201602a2e1a8d83cc95a6a70048dfeece
+issue #177: workaround for some Linux kernels
+
+diff --git a/c/malloc_closure.h b/c/malloc_closure.h
+--- a/c/malloc_closure.h
++++ b/c/malloc_closure.h
+@@ -14,6 +14,54 @@
+ # endif
+ #endif
+ 
++/* On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC.
++
++   This is, apparently, an undocumented change to ffi_prep_closure():
++   depending on the Linux kernel we're running on, we must give it a
++   mmap that is either PROT_READ|PROT_WRITE|PROT_EXEC or only
++   PROT_READ|PROT_WRITE.  In the latter case, just trying to obtain a
++   mmap with PROT_READ|PROT_WRITE|PROT_EXEC would kill our process(!),
++   but in that situation libffi is fine with only PROT_READ|PROT_WRITE.
++   There is nothing in the libffi API to know that, though, so we have
++   to guess by parsing /proc/self/status.  "Meh."
++ */
++#ifdef __linux__
++#include <stdlib.h>
++
++static int emutramp_enabled = -1;
++
++static int
++emutramp_enabled_check (void)
++{
++    char *buf = NULL;
++    size_t len = 0;
++    FILE *f;
++    int ret;
++    f = fopen ("/proc/self/status", "r");
++    if (f == NULL)
++        return 0;
++    ret = 0;
++
++    while (getline (&buf, &len, f) != -1)
++        if (!strncmp (buf, "PaX:", 4))
++            {
++                char emutramp;
++                if (sscanf (buf, "%*s %*c%c", &emutramp) == 1)
++                    ret = (emutramp == 'E');
++                break;
++            }
++    free (buf);
++    fclose (f);
++    return ret;
++}
++
++#define is_emutramp_enabled() (emutramp_enabled >= 0 ? emutramp_enabled \
++        : (emutramp_enabled = emutramp_enabled_check ()))
++#else
++#define is_emutramp_enabled() 0
++#endif
++
++
+ /* 'allocate_num_pages' is dynamically adjusted starting from one
+    page.  It grows by a factor of PAGE_ALLOCATION_GROWTH_RATE.  This is
+    meant to handle both the common case of not needing a lot of pages,
+@@ -77,9 +125,12 @@
+     if (item == NULL)
+         return;
+ #else
++    int prot = PROT_READ | PROT_WRITE | PROT_EXEC;
++    if (is_emutramp_enabled ())
++        prot &= ~PROT_EXEC;
+     item = (union mmaped_block *)mmap(NULL,
+                         allocate_num_pages * _pagesize,
+-                        PROT_READ | PROT_WRITE | PROT_EXEC,
++                        prot,
+                         MAP_PRIVATE | MAP_ANONYMOUS,
+                         -1,
+                         0);