- Merge-review cleanup by Parag Nemade (#226335)

- New upstream release
epel9
Tomas Mraz 14 years ago
parent ec5ecc4cda
commit 42ea8f0360

1
.gitignore vendored

@ -1 +1,2 @@
pyOpenSSL-0.9.tar.gz pyOpenSSL-0.9.tar.gz
/pyOpenSSL-0.10.tar.gz

@ -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 = []

@ -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 <pthread.h>
+
+#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);

@ -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 Summary: Python wrapper module around the OpenSSL library
Name: pyOpenSSL Name: pyOpenSSL
Version: 0.9 Version: 0.10
Release: 2%{?dist} Release: 1%{?dist}
Source0: http://pyopenssl.sf.net/%{name}-%{version}.tar.gz Source0: http://pypi.python.org/packages/source/p/pyOpenSSL/%{name}-%{version}.tar.gz
Patch0: pyOpenSSL-0.7-openssl.patch
# Fedora specific patches
Patch2: pyOpenSSL-elinks.patch Patch2: pyOpenSSL-elinks.patch
Patch3: pyOpenSSL-nopdfout.patch Patch3: pyOpenSSL-nopdfout.patch
# Hopefully the following patch is unnecessary now
#Patch4: pyOpenSSL-threadsafe.patch
License: LGPLv2+ License: LGPLv2+
Group: Development/Libraries Group: Development/Libraries
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
Url: http://pyopenssl.sourceforge.net/ Url: http://pyopenssl.sourceforge.net/
BuildRequires: elinks openssl-devel python-devel BuildRequires: elinks openssl-devel python-devel
BuildRequires: tetex-dvips tetex-latex latex2html 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 %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 * SSL.Connection objects, wrapping the methods of Python's portable
sockets sockets
* Callbacks written in Python * Callbacks written in Python
* Extensive error-handling mechanism, mirroring OpenSSL's error codes * Extensive error-handling mechanism, mirroring OpenSSL's error codes
... and much more ;)
%prep %prep
%setup -q %setup -q
%patch0 -p1 -b .posixIncludes
%patch2 -p1 -b .elinks %patch2 -p1 -b .elinks
%patch3 -p1 -b .nopdfout %patch3 -p1 -b .nopdfout
# Fix permissions for debuginfo package # Fix permissions for debuginfo package
%{__chmod} -x src/ssl/connection.c %{__chmod} -x src/ssl/connection.c
%build %build
CFLAGS="%{optflags}" %{__python} setup.py build CFLAGS="%{optflags} -fno-strict-aliasing" %{__python} setup.py build
%{__make} -C doc ps %{__make} -C doc ps
%{__make} -C doc text html %{__make} -C doc text html
find doc/ -name pyOpenSSL.\* find doc/ -name pyOpenSSL.\*
%install %install
%{__rm} -rf %{buildroot}
%{__python} setup.py install -O1 --skip-build --root %{buildroot} %{__python} setup.py install -O1 --skip-build --root %{buildroot}
%clean
%{__rm} -rf %{buildroot}
%files %files
%defattr(-,root,root,-) %defattr(-,root,root,-)
@ -53,6 +51,10 @@ find doc/ -name pyOpenSSL.\*
%{python_sitearch}/%{name}*.egg-info %{python_sitearch}/%{name}*.egg-info
%changelog %changelog
* Mon Oct 4 2010 Tomas Mraz <tmraz@redhat.com> - 0.10-1
- Merge-review cleanup by Parag Nemade (#226335)
- New upstream release
* Wed Jul 21 2010 David Malcolm <dmalcolm@redhat.com> - 0.9-2 * Wed Jul 21 2010 David Malcolm <dmalcolm@redhat.com> - 0.9-2
- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild - Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild

@ -1 +1 @@
5bf282b2d6a03af921920c34079580f2 pyOpenSSL-0.9.tar.gz 34db8056ec53ce80c7f5fc58bee9f093 pyOpenSSL-0.10.tar.gz

Loading…
Cancel
Save