python: support .pydistutils.cfg mode
* lang/python/setup.py.in: Do not parse arguments. -- The distutils settings can come from either command-line or configuration file. Parsing parameters is not working in all cases. Signed-off-by: Alon Bar-Lev <alon.barlev@gmail.com>
This commit is contained in:
parent
49195c487e
commit
365c649ad0
@ -19,18 +19,12 @@
|
|||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
from distutils.core import setup, Extension
|
from distutils.core import setup, Extension
|
||||||
import argparse
|
|
||||||
import os, os.path, sys
|
import os, os.path, sys
|
||||||
import glob
|
import glob
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
# We parse a subset of the arguments.
|
|
||||||
parser = argparse.ArgumentParser(add_help=False)
|
|
||||||
parser.add_argument('--build-base', default='')
|
|
||||||
options, _ = parser.parse_known_args()
|
|
||||||
|
|
||||||
# Out-of-tree build of the gpg bindings.
|
# Out-of-tree build of the gpg bindings.
|
||||||
gpg_error_config = ["gpg-error-config"]
|
gpg_error_config = ["gpg-error-config"]
|
||||||
gpgme_config_flags = ["--thread=pthread"]
|
gpgme_config_flags = ["--thread=pthread"]
|
||||||
@ -142,8 +136,6 @@ if uname_s.startswith("MINGW32"):
|
|||||||
|
|
||||||
def in_srcdir(name):
|
def in_srcdir(name):
|
||||||
return os.path.join(os.environ.get("srcdir", ""), name)
|
return os.path.join(os.environ.get("srcdir", ""), name)
|
||||||
def in_build_base(name):
|
|
||||||
return os.path.join(options.build_base, name)
|
|
||||||
def up_to_date(source, target):
|
def up_to_date(source, target):
|
||||||
return (os.path.exists(target)
|
return (os.path.exists(target)
|
||||||
and os.path.getmtime(source) <= os.path.getmtime(target))
|
and os.path.getmtime(source) <= os.path.getmtime(target))
|
||||||
@ -190,6 +182,9 @@ class BuildExtFirstHack(build):
|
|||||||
continue
|
continue
|
||||||
sink.write(rewrite_re.sub(r'%constant long \1 = \1;'+'\n', line.strip()))
|
sink.write(rewrite_re.sub(r'%constant long \1 = \1;'+'\n', line.strip()))
|
||||||
|
|
||||||
|
def _in_build_base(self, name):
|
||||||
|
return os.path.join(self.build_base, name)
|
||||||
|
|
||||||
def _generate(self):
|
def _generate(self):
|
||||||
print("Building python gpg module using {} and {}.".format(gpgme_h, gpg_error_h))
|
print("Building python gpg module using {} and {}.".format(gpgme_h, gpg_error_h))
|
||||||
|
|
||||||
@ -197,18 +192,18 @@ class BuildExtFirstHack(build):
|
|||||||
if not os.path.exists(self.build_base):
|
if not os.path.exists(self.build_base):
|
||||||
os.makedirs(self.build_base)
|
os.makedirs(self.build_base)
|
||||||
|
|
||||||
self._generate_gpgme_h(gpgme_h, in_build_base("gpgme.h"))
|
self._generate_gpgme_h(gpgme_h, self._in_build_base("gpgme.h"))
|
||||||
self._generate_errors_i(gpg_error_h, in_build_base("errors.i"))
|
self._generate_errors_i(gpg_error_h, self._in_build_base("errors.i"))
|
||||||
|
|
||||||
# Keep timestamp to avoid rebuild
|
# Keep timestamp to avoid rebuild
|
||||||
for source, target in ((gpgme_h, in_build_base("gpgme.h")),
|
for source, target in ((gpgme_h, self._in_build_base("gpgme.h")),
|
||||||
(gpg_error_h, in_build_base("errors.i"))):
|
(gpg_error_h, self._in_build_base("errors.i"))):
|
||||||
if not up_to_date(source, target):
|
if not up_to_date(source, target):
|
||||||
shutil.copystat(source, target)
|
shutil.copystat(source, target)
|
||||||
|
|
||||||
# Copy due to http://bugs.python.org/issue2624
|
# Copy due to http://bugs.python.org/issue2624
|
||||||
# Avoid creating in srcdir
|
# Avoid creating in srcdir
|
||||||
for source, target in ((in_srcdir(n), in_build_base(n))
|
for source, target in ((in_srcdir(n), self._in_build_base(n))
|
||||||
for n in ('gpgme.i', 'helpers.c', 'private.h', 'helpers.h')):
|
for n in ('gpgme.i', 'helpers.c', 'private.h', 'helpers.h')):
|
||||||
if not up_to_date(source, target):
|
if not up_to_date(source, target):
|
||||||
shutil.copy2(source, target)
|
shutil.copy2(source, target)
|
||||||
@ -221,7 +216,7 @@ class BuildExtFirstHack(build):
|
|||||||
def run(self):
|
def run(self):
|
||||||
self._generate()
|
self._generate()
|
||||||
|
|
||||||
swig_sources.append(os.path.join(self.build_base, 'gpgme.i'))
|
swig_sources.extend((self._in_build_base('gpgme.i'), self._in_build_base('helpers.c')))
|
||||||
swig_opts.extend(['-I' + self.build_base,
|
swig_opts.extend(['-I' + self.build_base,
|
||||||
'-outdir', os.path.join(self.build_lib, 'gpg')])
|
'-outdir', os.path.join(self.build_lib, 'gpg')])
|
||||||
include_dirs.append(self.build_base)
|
include_dirs.append(self.build_base)
|
||||||
@ -230,7 +225,7 @@ class BuildExtFirstHack(build):
|
|||||||
build.run(self)
|
build.run(self)
|
||||||
|
|
||||||
py3 = [] if sys.version_info.major < 3 else ['-py3']
|
py3 = [] if sys.version_info.major < 3 else ['-py3']
|
||||||
swig_sources = [in_build_base('helpers.c')]
|
swig_sources = []
|
||||||
swig_opts = ['-threads'] + py3 + extra_swig_opts
|
swig_opts = ['-threads'] + py3 + extra_swig_opts
|
||||||
swige = Extension("gpg._gpgme",
|
swige = Extension("gpg._gpgme",
|
||||||
sources = swig_sources,
|
sources = swig_sources,
|
||||||
|
Loading…
Reference in New Issue
Block a user