diff --git a/distutils.ext/obidistutils/command/build.py b/distutils.ext/obidistutils/command/build.py index 6996b88..7434afd 100644 --- a/distutils.ext/obidistutils/command/build.py +++ b/distutils.ext/obidistutils/command/build.py @@ -10,33 +10,29 @@ from obidistutils.serenity.checksystem import is_mac_system class build(ori_build): - def has_ctools(self): - return self.distribution.has_ctools() - - def has_files(self): - return self.distribution.has_files() - - def has_executables(self): - return self.distribution.has_executables() - def has_ext_modules(self): return self.distribution.has_ext_modules() - def has_littlebigman(self): - return True - def has_pidname(self): return is_mac_system() def has_doc(self): return True + def has_littlebigman(self): + return True - sub_commands = [('littlebigman', has_littlebigman), - ('pidname',has_pidname), - ('build_ctools', has_ctools), - ('build_files', has_files), - ('build_cexe', has_executables)] \ - + ori_build.sub_commands + \ - [('build_sphinx',has_doc)] - + try: + from obidistutils.command.build_sphinx import build_sphinx # @UnusedImport + + sub_commands = [("littlebigman",has_littlebigman), + ('pidname',has_pidname) + ] \ + + ori_build.sub_commands + \ + [('build_sphinx',has_doc)] + except ImportError: + sub_commands = [("littlebigman",has_littlebigman), + ('pidname',has_pidname) + ] \ + + ori_build.sub_commands + diff --git a/distutils.ext/obidistutils/command/build_cexe.py b/distutils.ext/obidistutils/command/build_cexe.py index a39e661..b3907f1 100644 --- a/distutils.ext/obidistutils/command/build_cexe.py +++ b/distutils.ext/obidistutils/command/build_cexe.py @@ -4,10 +4,11 @@ Created on 20 oct. 2012 @author: coissac ''' -from obidistutils.command.build_ctools import build_ctools +from .build_ctools import build_ctools +from .build_exe import build_exe from distutils.errors import DistutilsSetupError from distutils import log - +import os class build_cexe(build_ctools): @@ -38,7 +39,9 @@ class build_cexe(build_ctools): self.set_undefined_options('build_files', ('files', 'built_files')) - self.executables = self.distribution.executables + self.executables = self.distribution.executables +# self.build_cexe = os.path.join(os.path.dirname(self.build_cexe),'cbinaries') +# self.mkpath(self.build_cexe) if self.executables: self.check_executable_list(self.executables) @@ -70,4 +73,13 @@ class build_cexe(build_ctools): log.info("%s ok",message) return sources - + + def run(self): + + for cmd_name in self.get_sub_commands(): + self.run_command(cmd_name) + + build_exe.run(self) + + + diff --git a/distutils.ext/obidistutils/command/build_ctools.py b/distutils.ext/obidistutils/command/build_ctools.py index 103d8c7..38996be 100644 --- a/distutils.ext/obidistutils/command/build_ctools.py +++ b/distutils.ext/obidistutils/command/build_ctools.py @@ -5,7 +5,8 @@ Created on 20 oct. 2012 ''' -from obidistutils.command.build_exe import build_exe +from .build_exe import build_exe +from distutils import log class build_ctools(build_exe): description = "build C/C++ executable not distributed with Python extensions" @@ -37,19 +38,26 @@ class build_ctools(build_exe): self.executables = self.distribution.ctools self.check_executable_list(self.executables) + if self.littlebigman =='-DLITTLE_END': if self.define is None: self.define=[('LITTLE_END',None)] else: self.define.append('LITTLE_END',None) + + log.info('Look for CPU architecture... %s',self.define) self.ctools = set() def run(self): + + for cmd_name in self.get_sub_commands(): + self.run_command(cmd_name) + build_exe.run(self) + for e,p in self.executables: # @UnusedVariable self.ctools.add(e) - diff --git a/distutils.ext/obidistutils/command/build_exe.py b/distutils.ext/obidistutils/command/build_exe.py index 5fcd6a5..12cdde5 100644 --- a/distutils.ext/obidistutils/command/build_exe.py +++ b/distutils.ext/obidistutils/command/build_exe.py @@ -208,3 +208,4 @@ class build_exe(Command): output_dir=self.build_cexe, debug=self.debug) + diff --git a/distutils.ext/obidistutils/command/build_ext.py b/distutils.ext/obidistutils/command/build_ext.py index 1bc7f7e..fc31d96 100644 --- a/distutils.ext/obidistutils/command/build_ext.py +++ b/distutils.ext/obidistutils/command/build_ext.py @@ -8,12 +8,16 @@ from distutils import log import os from Cython.Distutils import build_ext as ori_build_ext # @UnresolvedImport - + +from Cython.Compiler import Options as cython_options # @UnresolvedImport + from distutils.errors import DistutilsSetupError class build_ext(ori_build_ext): + + def modifyDocScripts(self): - build_dir_file=open("doc/build_dir.txt","w") + build_dir_file=open("doc/sphinx/build_dir.txt","w") print(self.build_lib,file=build_dir_file) build_dir_file.close() @@ -84,9 +88,25 @@ class build_ext(ori_build_ext): def run(self): self.modifyDocScripts() + + for cmd_name in self.get_sub_commands(): + self.run_command(cmd_name) + + cython_options.annotate = True ori_build_ext.run(self) # @UndefinedVariable + def has_files(self): + return self.distribution.has_files() + + def has_executables(self): + return self.distribution.has_executables() + + sub_commands = [('build_files',has_files), + ('build_cexe', has_executables) + ] + \ + ori_build_ext.sub_commands + diff --git a/distutils.ext/obidistutils/command/build_files.py b/distutils.ext/obidistutils/command/build_files.py index 2adafef..656b5a8 100644 --- a/distutils.ext/obidistutils/command/build_files.py +++ b/distutils.ext/obidistutils/command/build_files.py @@ -28,6 +28,10 @@ class build_files(Command): self.files = {} def run(self): + + for cmd_name in self.get_sub_commands(): + self.run_command(cmd_name) + for dest,prog,command in self.distribution.files: destfile = os.path.join(self.build_temp,dest) @@ -48,6 +52,12 @@ class build_files(Command): log.info("Done.\n") + def has_ctools(self): + return self.distribution.has_ctools() + + + sub_commands = [('build_ctools', has_ctools)] + \ + Command.sub_commands diff --git a/distutils.ext/obidistutils/command/build_scripts.py b/distutils.ext/obidistutils/command/build_scripts.py index 68a4feb..0d0fa43 100644 --- a/distutils.ext/obidistutils/command/build_scripts.py +++ b/distutils.ext/obidistutils/command/build_scripts.py @@ -6,14 +6,14 @@ Created on 20 oct. 2012 import os.path -from distutils.command.build_scripts import build_scripts as ori_build_scripts,\ - first_line_re +from distutils.command.build_scripts import build_scripts as ori_build_scripts from distutils.util import convert_path from distutils import log, sysconfig from distutils.dep_util import newer from stat import ST_MODE +import re - +first_line_re = re.compile('^#!.*python[0-9.]*([ \t].*)?$') class build_scripts(ori_build_scripts): diff --git a/distutils.ext/obidistutils/command/build_sphinx.py b/distutils.ext/obidistutils/command/build_sphinx.py index 48a4402..e349083 100644 --- a/distutils.ext/obidistutils/command/build_sphinx.py +++ b/distutils.ext/obidistutils/command/build_sphinx.py @@ -4,23 +4,24 @@ Created on 10 mars 2015 @author: coissac ''' -from sphinx.setup_command import BuildDoc as ori_build_sphinx # @UnresolvedImport +try: + from sphinx.setup_command import BuildDoc as ori_build_sphinx # @UnresolvedImport + + class build_sphinx(ori_build_sphinx): + '''Build Sphinx documentation in html, epub and man formats + ''' -class build_sphinx(ori_build_sphinx): - ''' - Build Sphinx documentation in html, epub and man formats - ''' - - description = __doc__ - - def run(self): - self.builder='html' - self.finalize_options() - ori_build_sphinx.run(self) - self.builder='epub' - self.finalize_options() - ori_build_sphinx.run(self) - self.builder='man' - self.finalize_options() - ori_build_sphinx.run(self) - \ No newline at end of file + description = __doc__ + + def run(self): + self.builder='html' + self.finalize_options() + ori_build_sphinx.run(self) + self.builder='epub' + self.finalize_options() + ori_build_sphinx.run(self) + self.builder='man' + self.finalize_options() + ori_build_sphinx.run(self) +except ImportError: + pass \ No newline at end of file diff --git a/distutils.ext/obidistutils/command/install.py b/distutils.ext/obidistutils/command/install.py index 62bf05e..1befe1a 100644 --- a/distutils.ext/obidistutils/command/install.py +++ b/distutils.ext/obidistutils/command/install.py @@ -4,11 +4,16 @@ Created on 6 oct. 2014 @author: coissac ''' +# try: +# from setuptools.command.install import install as install_ori +# except ImportError: +# from distutils.command.install import install as install_ori + from distutils.command.install import install as install_ori class install(install_ori): def __init__(self,dist): install_ori.__init__(self, dist) - self.sub_commands.insert(0, ('build',lambda self: True)) +# self.sub_commands.insert(0, ('build',lambda self: True)) self.sub_commands.append(('install_sphinx',lambda self: self.distribution.serenity)) diff --git a/distutils.ext/obidistutils/command/install_scripts.py b/distutils.ext/obidistutils/command/install_scripts.py index 50b03fd..0a91ffd 100644 --- a/distutils.ext/obidistutils/command/install_scripts.py +++ b/distutils.ext/obidistutils/command/install_scripts.py @@ -3,6 +3,12 @@ Created on 20 oct. 2012 @author: coissac ''' + +# try: +# from setuptools.command.install_scripts import install_scripts as ori_install_scripts +# except ImportError: +# from distutils.command.install_scripts import install_scripts as ori_install_scripts + from distutils.command.install_scripts import install_scripts as ori_install_scripts import os.path @@ -18,12 +24,10 @@ class install_scripts(ori_install_scripts): def install_public_link(self): self.mkpath(self.public_dir) for file in self.get_outputs(): - if self.dry_run: - log.info("changing mode of %s", file) - else: - log.info("exporting file %s -> %s", file,os.path.join(self.public_dir, - os.path.split(file)[1] - )) + log.info("exporting file %s -> %s", file,os.path.join(self.public_dir, + os.path.split(file)[1] + )) + if not self.dry_run: dest = os.path.join(self.public_dir, os.path.split(file)[1] ) diff --git a/distutils.ext/obidistutils/command/install_sphinx.py b/distutils.ext/obidistutils/command/install_sphinx.py index 1c631d9..96549d8 100644 --- a/distutils.ext/obidistutils/command/install_sphinx.py +++ b/distutils.ext/obidistutils/command/install_sphinx.py @@ -43,4 +43,19 @@ class install_sphinx(Command): self.copy_file(os.path.join(epub), os.path.join(self.install_doc,os.path.split(epub)[1])) + def get_outputs(self): + directory=os.path.join(self.install_doc,'html') + files = [os.path.join(self.install_doc,'html', f) + for dp, dn, filenames in os.walk(directory) for f in filenames] # @UnusedVariable + + directory=os.path.join(self.build_dir,'man') + files.append(os.path.join(self.install_doc,'man','man1', f) + for dp, dn, filenames in os.walk(directory) for f in filenames) # @UnusedVariable + + directory=os.path.join(self.build_dir,'epub') + files.append(os.path.join(self.install_doc, f) + for dp, dn, filenames in os.walk(directory) # @UnusedVariable + for f in glob.glob(os.path.join(dp, '*.epub')) ) + + return files \ No newline at end of file diff --git a/distutils.ext/obidistutils/command/littlebigman.py b/distutils.ext/obidistutils/command/littlebigman.py index 572ecf6..65f2dad 100644 --- a/distutils.ext/obidistutils/command/littlebigman.py +++ b/distutils.ext/obidistutils/command/littlebigman.py @@ -49,7 +49,7 @@ class littlebigman(build_exe): shell=True, stdout=subprocess.PIPE) little = p.communicate()[0] - return little + return little.decode('latin1') def run(self): build_exe.run(self) diff --git a/distutils.ext/obidistutils/command/pidname.py b/distutils.ext/obidistutils/command/pidname.py index 327af8a..871e1ab 100644 --- a/distutils.ext/obidistutils/command/pidname.py +++ b/distutils.ext/obidistutils/command/pidname.py @@ -41,6 +41,10 @@ class pidname(build_exe): else: self.executables = [] +# self.build_cexe = os.path.join(os.path.dirname(self.build_cexe),'cbinaries') +# self.mkpath(self.build_cexe) + + def run(self): if is_mac_system(): diff --git a/distutils.ext/obidistutils/core.py b/distutils.ext/obidistutils/core.py index 97f891c..a0a1900 100644 --- a/distutils.ext/obidistutils/core.py +++ b/distutils.ext/obidistutils/core.py @@ -9,8 +9,11 @@ import os.path import glob import sys +# try: +# from setuptools.extension import Extension +# except ImportError: +# from distutils.extension import Extension -from distutils.core import setup as ori_setup from distutils.extension import Extension from obidistutils.serenity.checkpackage import install_requirements,\ @@ -22,6 +25,7 @@ from obidistutils.serenity.rerun import rerun_with_anothe_python from distutils import log from obidistutils.dist import Distribution +from obidistutils.serenity import is_serenity def findPackage(root,base=None): @@ -62,7 +66,10 @@ def findCython(root,base=None,pyrexs=None): cfiles = [x for x in cfiles if x[-2:]==".c"] pyrexs[-1].sources.extend(cfiles) pyrexs[-1].include_dirs.extend(incdir) - pyrexs[-1].extra_compile_args.extend(['-msse2','-Wno-unused-function']) + pyrexs[-1].extra_compile_args.extend(['-msse2', + '-Wno-unused-function', + '-Wmissing-braces', + '-Wchar-subscripts']) except IOError: pass @@ -78,8 +85,8 @@ def rootname(x): def prepare_commands(): from obidistutils.command.build import build from obidistutils.command.littlebigman import littlebigman +# from obidistutils.command.serenity import serenity from obidistutils.command.build_cexe import build_cexe - from obidistutils.command.build_sphinx import build_sphinx from obidistutils.command.build_ext import build_ext from obidistutils.command.build_ctools import build_ctools from obidistutils.command.build_files import build_files @@ -89,8 +96,11 @@ def prepare_commands(): from obidistutils.command.install import install from obidistutils.command.pidname import pidname from obidistutils.command.sdist import sdist - + + + COMMANDS = {'build':build, +# 'serenity':serenity, 'littlebigman':littlebigman, 'pidname':pidname, 'build_ctools':build_ctools, @@ -98,12 +108,22 @@ def prepare_commands(): 'build_cexe':build_cexe, 'build_ext': build_ext, 'build_scripts':build_scripts, - 'build_sphinx':build_sphinx, 'install_scripts':install_scripts, 'install_sphinx':install_sphinx, 'install':install, 'sdist':sdist} +# try: +# from setuptools.commands import egg_info +# COMMANDS['egg_info']=egg_info +# except ImportError: +# pass + try: + from obidistutils.command.build_sphinx import build_sphinx + COMMANDS['build_sphinx']=build_sphinx + except ImportError: + pass + return COMMANDS @@ -139,19 +159,21 @@ def setup(**attrs): del attrs['requirements'] except KeyError: pass - - enforce_good_python(minversion, maxversion, fork) + if is_serenity(): - if (install_requirements(requirementfile)): - rerun_with_anothe_python(sys.executable,minversion,maxversion,fork) + + enforce_good_python(minversion, maxversion, fork) + + if (install_requirements(requirementfile)): + rerun_with_anothe_python(sys.executable,minversion,maxversion,fork) - try: - check_requirements(requirementfile) - except RequirementError as e : - log.error(e) - sys.exit(1) + try: + check_requirements(requirementfile) + except RequirementError as e : + log.error(e) + sys.exit(1) if 'distclass' not in attrs: attrs['distclass']=Distribution @@ -193,5 +215,12 @@ def setup(**attrs): if 'ext_modules' not in attrs: attrs['ext_modules'] = EXTENTION + +# try: +# from setuptools.core import setup as ori_setup +# except ImportError: +# from distutils.core import setup as ori_setup + + from distutils.core import setup as ori_setup ori_setup(**attrs) diff --git a/distutils.ext/obidistutils/dist.py b/distutils.ext/obidistutils/dist.py index 39c30cd..63d0393 100644 --- a/distutils.ext/obidistutils/dist.py +++ b/distutils.ext/obidistutils/dist.py @@ -4,6 +4,11 @@ Created on 20 oct. 2012 @author: coissac ''' +# try: +# from setuptools.dist import Distribution as ori_Distribution +# except ImportError: +# from distutils.dist import Distribution as ori_Distribution + from distutils.dist import Distribution as ori_Distribution class Distribution(ori_Distribution): @@ -29,6 +34,14 @@ class Distribution(ori_Distribution): "By default the name is PACKAGE-VERSION" )) + def run_commands(self): + """Run each command that was seen on the setup script command line. + Uses the list of commands found and cache of command objects + created by 'get_command_obj()'. + """ +# self.run_command('littlebigman') + ori_Distribution.run_commands(self) + def has_executables(self): return self.executables is not None and self.executables diff --git a/distutils.ext/obidistutils/serenity/__init__.py b/distutils.ext/obidistutils/serenity/__init__.py index 02763fa..5a3adae 100644 --- a/distutils.ext/obidistutils/serenity/__init__.py +++ b/distutils.ext/obidistutils/serenity/__init__.py @@ -11,8 +11,7 @@ import re from distutils.errors import DistutilsError import tempfile -import importlib -import imp +from importlib.util import spec_from_file_location # @UnresolvedImport import zipimport import argparse @@ -106,3 +105,8 @@ def serenity_mode(package,version): return args.serenity +def getVersion(source,main,version): + path = os.path.join(source,main,'%s.py' % version) + spec = spec_from_file_location('version',path) + return spec.loader.load_module().version.strip() + diff --git a/distutils.ext/obidistutils/serenity/checkpackage.py b/distutils.ext/obidistutils/serenity/checkpackage.py index 4727433..91a2411 100644 --- a/distutils.ext/obidistutils/serenity/checkpackage.py +++ b/distutils.ext/obidistutils/serenity/checkpackage.py @@ -83,6 +83,8 @@ def install_requirements(requirementfile='requirements.txt'): log.info(" Installing requirement : %s" % x) pip_install_package(x) install_something=True + if x[0:3]=='pip': + return True return install_something @@ -134,7 +136,9 @@ def get_package_requirement(package,requirementfile='requirements.txt'): def pip_install_package(package,directory=None,upgrade=True): - log.info('installing %s in directory %s' % (package,str(directory))) + if directory is not None: + log.info(' installing %s in directory %s' % (package,str(directory))) + if 'http_proxy' in os.environ and 'https_proxy' not in os.environ: os.environ['https_proxy']=os.environ['http_proxy'] @@ -144,8 +148,8 @@ def pip_install_package(package,directory=None,upgrade=True): if upgrade: args.append('--upgrade') - if 'http_proxy' in os.environ: - args.append('--proxy=%s' % os.environ['http_proxy']) + if 'https_proxy' in os.environ: + args.append('--proxy=%s' % os.environ['https_proxy']) if directory is not None: args.append('--target=%s' % directory) diff --git a/distutils.ext/obidistutils/serenity/checkpython.py b/distutils.ext/obidistutils/serenity/checkpython.py index 333c28e..7b6e057 100644 --- a/distutils.ext/obidistutils/serenity/checkpython.py +++ b/distutils.ext/obidistutils/serenity/checkpython.py @@ -37,7 +37,7 @@ def is_python_version(path=None,minversion='3.4',maxversion=None): stdout=subprocess.PIPE) pythonversion=str(p.communicate()[0],'utf8').strip() pythonversion = StrictVersion(pythonversion) - + return ( pythonversion >=StrictVersion(minversion) and ( maxversion is None or pythonversion < StrictVersion(maxversion)) @@ -91,9 +91,9 @@ def is_a_virtualenv_python(path=None): ''' if path is None: - rep = sys.base_exec_prefix == sys.exec_prefix + rep = sys.base_exec_prefix != sys.exec_prefix else: - command = """'%s' -c 'import sys; print(sys.base_exec_prefix == sys.exec_prefix)'""" % path + command = """'%s' -c 'import sys; print(sys.base_exec_prefix != sys.exec_prefix)'""" % path p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE) diff --git a/distutils.ext/obidistutils/serenity/virtual.py b/distutils.ext/obidistutils/serenity/virtual.py index bd83949..6e8e2c9 100644 --- a/distutils.ext/obidistutils/serenity/virtual.py +++ b/distutils.ext/obidistutils/serenity/virtual.py @@ -9,10 +9,10 @@ import sys import venv from distutils.errors import DistutilsError -from obidistutils.serenity.globals import local_virtualenv # @UnusedImport -from obidistutils.serenity.checkpython import which_virtualenv,\ - is_python_version, \ - is_a_virtualenv_python +from .globals import local_virtualenv # @UnusedImport +from .checkpython import which_virtualenv,\ + is_python_version, \ + is_a_virtualenv_python @@ -39,6 +39,7 @@ def serenity_virtualenv(envname,package,version,minversion='3.4',maxversion=None maxversion=maxversion) and is_a_virtualenv_python(python)) + # # The virtualenv already exist but it is not ok #