From 02a24ac541df68033d4efd7e2f8a1b92dc49328d Mon Sep 17 00:00:00 2001
From: Li xin <lixin.fnst@cn.fujitsu.com>
Date: Mon, 27 Jul 2015 05:06:20 +0900
Subject: [PATCH] M2Crypto: Error fix.

After swig upgrade from 3.0.2 to 3.0.6,build the recipes which
depends on python-m2crypto will occur errors like this:
SALT_LEN = m2.PKCS5_SALT_LEN
AttributeError: 'module' object has no attribute 'PKCS5_SALT_LEN'
since python-m2crypto depends on swig-native

Ref:
https://github.com/martinpaljak/M2Crypto/issues/60#issuecomment-75735489

This patch is from:
http://pkgs.fedoraproject.org/cgit/m2crypto.git/tree/m2crypto-0.21.1-swig-3.0.5.patch

Upstream-Status: pending

Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
---
 M2Crypto/__init__.py |  4 ++--
 M2Crypto/m2.py       |  2 +-
 SWIG/_lib.i          |  4 ++++
 SWIG/_pkcs7.i        |  1 +
 setup.py             | 26 +++++++++++++++++++++++++-
 5 files changed, 33 insertions(+), 4 deletions(-)

diff --git a/M2Crypto/__init__.py b/M2Crypto/__init__.py
index e7acfe7..02f4d28 100644
--- a/M2Crypto/__init__.py
+++ b/M2Crypto/__init__.py
@@ -19,7 +19,7 @@ Copyright 2008-2011 Heikki Toivonen. All rights reserved.
 version_info = (0, 21, 1)
 version = '.'.join([str(_v) for _v in version_info])
 
-import __m2crypto
+import _m2crypto
 import m2
 import ASN1
 import AuthCookie
@@ -57,4 +57,4 @@ import util
 encrypt=1
 decrypt=0
 
-__m2crypto.lib_init()
+_m2crypto.lib_init()
diff --git a/M2Crypto/m2.py b/M2Crypto/m2.py
index e4bb695..822143f 100644
--- a/M2Crypto/m2.py
+++ b/M2Crypto/m2.py
@@ -25,7 +25,7 @@ Portions created by Open Source Applications Foundation (OSAF) are
 Copyright (C) 2004 OSAF. All Rights Reserved.
 """
 
-from __m2crypto import *
+from _m2crypto import *
 lib_init()
 
 
diff --git a/SWIG/_lib.i b/SWIG/_lib.i
index 42dc180..47a53b8 100644
--- a/SWIG/_lib.i
+++ b/SWIG/_lib.i
@@ -100,6 +100,7 @@ int ssl_verify_callback(int ok, X509_STORE_CTX *ctx) {
     int cret;
     int new_style_callback = 0, warning_raised_exception=0;
     PyGILState_STATE gilstate;
+    PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
 
     ssl = (SSL *)X509_STORE_CTX_get_app_data(ctx);
 
@@ -185,6 +186,7 @@ int ssl_verify_callback(int ok, X509_STORE_CTX *ctx) {
 void ssl_info_callback(const SSL *s, int where, int ret) {
     PyObject *argv, *retval, *_SSL;
     PyGILState_STATE gilstate;
+    PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
 
     gilstate = PyGILState_Ensure();
 
@@ -204,6 +206,7 @@ DH *ssl_set_tmp_dh_callback(SSL *ssl, int is_export, int keylength) {
     PyObject *argv, *ret, *_ssl;
     DH *dh;
     PyGILState_STATE gilstate;
+    PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
 
     gilstate = PyGILState_Ensure();
 
@@ -227,6 +230,7 @@ RSA *ssl_set_tmp_rsa_callback(SSL *ssl, int is_export, int keylength) {
     PyObject *argv, *ret, *_ssl;
     RSA *rsa;
     PyGILState_STATE gilstate;
+    PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
 
     gilstate = PyGILState_Ensure();
 
diff --git a/SWIG/_pkcs7.i b/SWIG/_pkcs7.i
index 174f40a..7bffbfc 100644
--- a/SWIG/_pkcs7.i
+++ b/SWIG/_pkcs7.i
@@ -157,6 +157,7 @@ PyObject *smime_read_pkcs7(BIO *bio) {
     BIO *bcont = NULL;
     PKCS7 *p7;
     PyObject *tuple, *_p7, *_BIO;
+    PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
 
     if (BIO_method_type(bio) == BIO_TYPE_MEM) {
         /* OpenSSL FAQ explains that this is needed for mem BIO to return EOF,
diff --git a/setup.py b/setup.py
index e7c49eb..b98abe0 100644
--- a/setup.py
+++ b/setup.py
@@ -20,6 +20,7 @@ except ImportError:
     from distutils.command import build_ext
 
 from distutils.core import Extension
+from distutils.file_util import copy_file
 
 
 class _M2CryptoBuildExt(build_ext.build_ext):
@@ -57,7 +58,17 @@ class _M2CryptoBuildExt(build_ext.build_ext):
         self.swig_opts.append('-includeall')
         #self.swig_opts.append('-D__i386__') # Uncomment for early OpenSSL 0.9.7 versions, or on Fedora Core if build fails
         #self.swig_opts.append('-DOPENSSL_NO_EC') # Try uncommenting if you can't build with EC disabled
-        
+        self.swig_opts.append('-modern')
+        self.swig_opts.append('-builtin')
+
+        # These two lines are a workaround for
+        # http://bugs.python.org/issue2624 , hard-coding that we are only
+        # building a single extension with a known path; a proper patch to
+        # distutils would be in the run phase, when extension name and path are
+        # known.
+        self.swig_opts.append('-outdir')
+        self.swig_opts.append(os.path.join(self.build_lib, 'M2Crypto'))
+
         self.include_dirs += [os.path.join(self.openssl, opensslIncludeDir),
                               os.path.join(os.getcwd(), 'SWIG')]        
             
@@ -71,6 +82,19 @@ class _M2CryptoBuildExt(build_ext.build_ext):
                
         self.library_dirs += [os.path.join(self.openssl, opensslLibraryDir)]
 
+    def run(self):
+        '''Overloaded build_ext implementation to allow inplace=1 to work,
+        which is needed for (python setup.py test).'''
+        # This is another workaround for http://bugs.python.org/issue2624 + the
+        # corresponding lack of support in setuptools' test command. Note that
+        # just using self.inplace in finalize_options() above does not work
+        # because swig is not rerun if the __m2crypto.so extension exists.
+        # Again, hard-coding our extension name and location.
+        build_ext.build_ext.run(self)
+        if self.inplace:
+            copy_file(os.path.join(self.build_lib, 'M2Crypto', '_m2crypto.py'),
+                      os.path.join('M2Crypto', '_m2crypto.py'),
+                      verbose=self.verbose, dry_run=self.dry_run)
 
 if sys.version_info < (2,4):
 
-- 
1.8.4.2

