From 42ea8f0360ce95b7ac0dd136c48e175f40967e02 Mon Sep 17 00:00:00 2001 From: Tomas Mraz Date: Mon, 4 Oct 2010 15:06:13 +0200 Subject: [PATCH] - Merge-review cleanup by Parag Nemade (#226335) - New upstream release --- .gitignore | 1 + pyOpenSSL-0.7-openssl.patch | 13 --- pyOpenSSL-threadsafe.patch | 197 ------------------------------------ pyOpenSSL.spec | 34 ++++--- sources | 2 +- 5 files changed, 20 insertions(+), 227 deletions(-) delete mode 100644 pyOpenSSL-0.7-openssl.patch delete mode 100644 pyOpenSSL-threadsafe.patch diff --git a/.gitignore b/.gitignore index 3a60f48..03d4011 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ pyOpenSSL-0.9.tar.gz +/pyOpenSSL-0.10.tar.gz diff --git a/pyOpenSSL-0.7-openssl.patch b/pyOpenSSL-0.7-openssl.patch deleted file mode 100644 index 562cf6e..0000000 --- a/pyOpenSSL-0.7-openssl.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up pyOpenSSL-0.9/setup.py.posixIncludes pyOpenSSL-0.9/setup.py ---- pyOpenSSL-0.9/setup.py.posixIncludes 2009-03-07 17:50:11.000000000 +0100 -+++ pyOpenSSL-0.9/setup.py 2009-09-29 17:46:13.449930310 +0200 -@@ -61,6 +61,9 @@ else: - if sys.platform == 'darwin': - IncludeDirs = ['/sw/include'] - LibraryDirs = ['/sw/lib'] -+elif os.name == 'posix': -+ IncludeDirs = ['/usr/kerberos/include'] -+ LibraryDirs = ['/usr/kerberos/lib'] - - # On Windows, make sure the necessary .dll's get added to the egg. - data_files = [] diff --git a/pyOpenSSL-threadsafe.patch b/pyOpenSSL-threadsafe.patch deleted file mode 100644 index ad56567..0000000 --- a/pyOpenSSL-threadsafe.patch +++ /dev/null @@ -1,197 +0,0 @@ -diff -Nur pyOpenSSL-0.7-bad/src/crypto/crypto.c pyOpenSSL-0.7/src/crypto/crypto.c ---- pyOpenSSL-0.7-bad/src/crypto/crypto.c 2008-03-21 17:34:42.000000000 -0500 -+++ pyOpenSSL-0.7/src/crypto/crypto.c 2008-09-19 18:06:08.000000000 -0500 -@@ -694,6 +694,74 @@ - { NULL, NULL } - }; - -+ -+#ifdef WITH_THREAD -+ -+#include -+ -+#define MUTEX_TYPE pthread_mutex_t -+#define MUTEX_SETUP(x) pthread_mutex_init(&(x), NULL) -+#define MUTEX_CLEANUP(x) pthread_mutex_destroy(&(x)) -+#define MUTEX_LOCK(x) pthread_mutex_lock(&(x)) -+#define MUTEX_UNLOCK(x) pthread_mutex_unlock(&(x)) -+#define THREAD_ID pthread_self() -+ -+void handle_error(const char *file, int lineno, const char *msg) -+{ -+ fprintf(stderr, "** %s:%i %s\n", file, lineno, msg); -+ ERR_print_errors_fp(stderr); -+} -+ -+ -+/* This array will store all of the mutexes available to OpenSSL. */ -+static MUTEX_TYPE *mutex_buf = NULL; -+ -+ -+static void locking_function(int mode, int n, const char * file, int line) -+{ -+ if (mode & CRYPTO_LOCK) -+ MUTEX_LOCK(mutex_buf[n]); -+ else -+ MUTEX_UNLOCK(mutex_buf[n]); -+} -+ -+static unsigned long id_function(void) -+{ -+ return ((unsigned long)THREAD_ID); -+} -+ -+int init_openssl_threads(void) -+{ -+ int i; -+ -+ mutex_buf = (MUTEX_TYPE *)malloc(CRYPTO_num_locks() * sizeof(MUTEX_TYPE)); -+ if (!mutex_buf) -+ return 0; -+ for (i = 0; i < CRYPTO_num_locks(); i++) -+ MUTEX_SETUP(mutex_buf[i]); -+ CRYPTO_set_id_callback(id_function); -+ CRYPTO_set_locking_callback(locking_function); -+ return 1; -+} -+ -+int deinit_openssl_threads(void) -+{ -+ int i; -+ -+ if (!mutex_buf) -+ return 0; -+ CRYPTO_set_id_callback(NULL); -+ CRYPTO_set_locking_callback(NULL); -+ for (i = 0; i < CRYPTO_num_locks(); i++) -+ MUTEX_CLEANUP(mutex_buf[i]); -+ free(mutex_buf); -+ mutex_buf = NULL; -+ return 1; -+} -+ -+#endif -+ -+ - /* - * Initialize crypto sub module - * -@@ -739,6 +807,10 @@ - PyModule_AddIntConstant(module, "TYPE_DSA", crypto_TYPE_DSA); - - dict = PyModule_GetDict(module); -+#ifdef WITH_THREAD -+ if (!init_openssl_threads()) -+ goto error; -+#endif - if (!init_crypto_x509(dict)) - goto error; - if (!init_crypto_x509name(dict)) -diff -Nur pyOpenSSL-0.7-bad/src/ssl/context.c pyOpenSSL-0.7/src/ssl/context.c ---- pyOpenSSL-0.7-bad/src/ssl/context.c 2008-03-21 17:34:42.000000000 -0500 -+++ pyOpenSSL-0.7/src/ssl/context.c 2008-09-19 18:27:00.000000000 -0500 -@@ -64,39 +64,33 @@ - static int - global_passphrase_callback(char *buf, int maxlen, int verify, void *arg) - { -- int len; -+ int len = 0; - char *str; - PyObject *argv, *ret = NULL; - ssl_ContextObj *ctx = (ssl_ContextObj *)arg; - -+ if (!ctx->tstate) -+ fprintf (stderr, "ERROR: ctx->tstate == NULL!\n"); -+ MY_END_ALLOW_THREADS(ctx->tstate); -+ - /* The Python callback is called with a (maxlen,verify,userdata) tuple */ - argv = Py_BuildValue("(iiO)", maxlen, verify, ctx->passphrase_userdata); -- if (ctx->tstate != NULL) -- { -- /* We need to get back our thread state before calling the callback */ -- MY_END_ALLOW_THREADS(ctx->tstate); -- ret = PyEval_CallObject(ctx->passphrase_callback, argv); -- MY_BEGIN_ALLOW_THREADS(ctx->tstate); -- } -- else -- { -- ret = PyEval_CallObject(ctx->passphrase_callback, argv); -- } -+ ret = PyEval_CallObject(ctx->passphrase_callback, argv); - Py_DECREF(argv); - - if (ret == NULL) -- return 0; -+ goto out; - - if (!PyObject_IsTrue(ret)) - { - Py_DECREF(ret); -- return 0; -+ goto out; - } - - if (!PyString_Check(ret)) - { - Py_DECREF(ret); -- return 0; -+ goto out; - } - - len = PyString_Size(ret); -@@ -107,6 +101,8 @@ - strncpy(buf, str, len); - Py_XDECREF(ret); - -+out: -+ MY_BEGIN_ALLOW_THREADS(ctx->tstate); - return len; - } - -@@ -173,28 +169,19 @@ - ssl_ConnectionObj *conn = (ssl_ConnectionObj *)SSL_get_app_data(ssl); - PyObject *argv, *ret; - -+ if (!conn->tstate) -+ fprintf (stderr, "ERROR: ctx->tstate == NULL!\n"); -+ MY_END_ALLOW_THREADS(conn->tstate); -+ - argv = Py_BuildValue("(Oii)", (PyObject *)conn, where, _ret); -- if (conn->tstate != NULL) -- { -- /* We need to get back our thread state before calling the callback */ -- MY_END_ALLOW_THREADS(conn->tstate); -- ret = PyEval_CallObject(conn->context->info_callback, argv); -- if (ret == NULL) -- PyErr_Clear(); -- else -- Py_DECREF(ret); -- MY_BEGIN_ALLOW_THREADS(conn->tstate); -- } -+ ret = PyEval_CallObject(conn->context->info_callback, argv); -+ if (ret == NULL) -+ PyErr_Clear(); - else -- { -- ret = PyEval_CallObject(conn->context->info_callback, argv); -- if (ret == NULL) -- PyErr_Clear(); -- else -- Py_DECREF(ret); -- } -+ Py_DECREF(ret); - Py_DECREF(argv); - -+ MY_BEGIN_ALLOW_THREADS(conn->tstate); - return; - } - -@@ -447,6 +434,8 @@ - if (!PyArg_ParseTuple(args, "s|i:use_privatekey_file", &keyfile, &filetype)) - return NULL; - -+ if (self->tstate) -+ fprintf (stderr, "ERROR: ctx->tstate != NULL!\n"); - MY_BEGIN_ALLOW_THREADS(self->tstate); - ret = SSL_CTX_use_PrivateKey_file(self->ctx, keyfile, filetype); - MY_END_ALLOW_THREADS(self->tstate); diff --git a/pyOpenSSL.spec b/pyOpenSSL.spec index aaeed98..1beab81 100644 --- a/pyOpenSSL.spec +++ b/pyOpenSSL.spec @@ -1,50 +1,48 @@ -%{!?python_sitearch: %define python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} - Summary: Python wrapper module around the OpenSSL library Name: pyOpenSSL -Version: 0.9 -Release: 2%{?dist} -Source0: http://pyopenssl.sf.net/%{name}-%{version}.tar.gz -Patch0: pyOpenSSL-0.7-openssl.patch +Version: 0.10 +Release: 1%{?dist} +Source0: http://pypi.python.org/packages/source/p/pyOpenSSL/%{name}-%{version}.tar.gz + +# Fedora specific patches + Patch2: pyOpenSSL-elinks.patch Patch3: pyOpenSSL-nopdfout.patch -# Hopefully the following patch is unnecessary now -#Patch4: pyOpenSSL-threadsafe.patch License: LGPLv2+ Group: Development/Libraries -BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) Url: http://pyopenssl.sourceforge.net/ BuildRequires: elinks openssl-devel python-devel BuildRequires: tetex-dvips tetex-latex latex2html +# we don't want to provide private python extension libs +%{?filter_setup: +%filter_provides_in %{python_sitearch}/.*\.so$ +%filter_setup +} + %description -High-level wrapper around a subset of the OpenSSL library, includes +High-level wrapper around a subset of the OpenSSL library, includes among others * SSL.Connection objects, wrapping the methods of Python's portable sockets * Callbacks written in Python * Extensive error-handling mechanism, mirroring OpenSSL's error codes -... and much more ;) %prep %setup -q -%patch0 -p1 -b .posixIncludes %patch2 -p1 -b .elinks %patch3 -p1 -b .nopdfout # Fix permissions for debuginfo package %{__chmod} -x src/ssl/connection.c %build -CFLAGS="%{optflags}" %{__python} setup.py build +CFLAGS="%{optflags} -fno-strict-aliasing" %{__python} setup.py build %{__make} -C doc ps %{__make} -C doc text html find doc/ -name pyOpenSSL.\* %install -%{__rm} -rf %{buildroot} %{__python} setup.py install -O1 --skip-build --root %{buildroot} -%clean -%{__rm} -rf %{buildroot} %files %defattr(-,root,root,-) @@ -53,6 +51,10 @@ find doc/ -name pyOpenSSL.\* %{python_sitearch}/%{name}*.egg-info %changelog +* Mon Oct 4 2010 Tomas Mraz - 0.10-1 +- Merge-review cleanup by Parag Nemade (#226335) +- New upstream release + * Wed Jul 21 2010 David Malcolm - 0.9-2 - Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild diff --git a/sources b/sources index abc49e4..0e2f1fb 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -5bf282b2d6a03af921920c34079580f2 pyOpenSSL-0.9.tar.gz +34db8056ec53ce80c7f5fc58bee9f093 pyOpenSSL-0.10.tar.gz