diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b43e50f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,13 @@
+.DS_Store
+/obitools.test/
+/OBITools3- 1.01.16/
+/OBITools3-0.00.0/
+/build/
+/testpip/
+/toto.obidms/
+/unittests/
+/setup.py.old
+/3_Hornung_testseq.fastq
+/sample/
+/save.temp/
+/obitmp/
diff --git a/.project b/.project
new file mode 100644
index 0000000..d1235be
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+
+
+ obitools3
+
+
+
+
+
+ org.python.pydev.PyDevBuilder
+
+
+
+
+
+ org.python.pydev.pythonNature
+
+
diff --git a/.pydevproject b/.pydevproject
new file mode 100644
index 0000000..c934917
--- /dev/null
+++ b/.pydevproject
@@ -0,0 +1,20 @@
+
+
+
+
+ python3.6-obitool3
+
+
+ python interpreter
+
+
+
+
+
+ /${PROJECT_DIR_NAME}/python
+
+
+
+
+
+
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 20b0e8d..0000000
--- a/Makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-ifeq ($(CC),gcc)
- LFLAGS = -fopenmp
-else
- LFLAGS =
-endif
-
-SOURCE_DIR := src
-ENV_DIR := $(abspath .)
-OBJ_DIR := $(ENV_DIR)/obi_objdir
-LIB_DIR := $(ENV_DIR)/obi_libdir
-
-SOURCE_FILES = $(SOURCE_DIR)/libecoPCR/libapat/*.c $(SOURCE_DIR)/libecoPCR/libthermo/*.c $(SOURCE_DIR)/libecoPCR/*.c $(SOURCE_DIR)/libjson/*.c $(SOURCE_DIR)/*.c
-OBJ_FILES = $(OBJ_DIR)/*.o
-DYN_LIB_FILES = $(LIB_DIR)/libobi3.so
-
-all: $(DYN_LIB_FILES)
-
-$(LIB_DIR):
- mkdir -p $(LIB_DIR)
-
-$(OBJ_DIR):
- mkdir -p $(OBJ_DIR)
-
-$(DYN_LIB_FILES): $(OBJ_FILES) | $(LIB_DIR)
- $(CC) -shared -o $@ $^
-
-$(OBJ_FILES): | $(OBJ_DIR)
- $(CC) $(LFLAGS) -fpic -c $(SOURCE_FILES)
- mv *.o $(OBJ_DIR)
-
-clean:
- rm -rf $(LIB_DIR)
- rm -rf $(OBJ_DIR)
diff --git a/distutils.ext/obidistutils/__init__.py b/distutils.ext/obidistutils/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/distutils.ext/obidistutils/command/__init__.py b/distutils.ext/obidistutils/command/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/distutils.ext/obidistutils/command/build.py b/distutils.ext/obidistutils/command/build.py
deleted file mode 100644
index 7434afd..0000000
--- a/distutils.ext/obidistutils/command/build.py
+++ /dev/null
@@ -1,38 +0,0 @@
-'''
-Created on 20 oct. 2012
-
-@author: coissac
-'''
-
-from distutils.command.build import build as ori_build
-from obidistutils.serenity.checksystem import is_mac_system
-
-
-class build(ori_build):
-
- def has_ext_modules(self):
- return self.distribution.has_ext_modules()
-
- def has_pidname(self):
- return is_mac_system()
-
- def has_doc(self):
- return True
-
- def has_littlebigman(self):
- return True
-
- 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
deleted file mode 100644
index b3907f1..0000000
--- a/distutils.ext/obidistutils/command/build_cexe.py
+++ /dev/null
@@ -1,85 +0,0 @@
-'''
-Created on 20 oct. 2012
-
-@author: coissac
-'''
-
-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):
-
- description = "build C/C++ executable distributed with Python extensions"
-
-
- def initialize_options(self):
- build_ctools.initialize_options(self)
- self.built_files = None
-
-
- def finalize_options(self):
- # This might be confusing: both build-cexe and build-temp default
- # to build-temp as defined by the "build" command. This is because
- # I think that C libraries are really just temporary build
- # by-products, at least from the point of view of building Python
- # extensions -- but I want to keep my options open.
-
- build_cexe_dir = self.build_cexe
- build_ctools.finalize_options(self)
-
- if build_cexe_dir is None:
- self.build_cexe=None
-
- self.set_undefined_options('build',
- ('build_scripts', 'build_cexe'))
-
- self.set_undefined_options('build_files',
- ('files', 'built_files'))
-
- 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)
-
-
- # XXX same as for build_ext -- what about 'self.define' and
- # 'self.undef' ?
-
- def substitute_sources(self,exe_name,sources):
- """
- Substitutes source file name starting by an @ by the actual
- name of the built file (see --> build_files)
- """
- sources = list(sources)
- for i in range(len(sources)):
- message = "%s :-> %s" % (exe_name,sources[i])
- if sources[i][0]=='@':
- try:
- filename = self.built_files[sources[i][1:]]
- except KeyError:
- raise DistutilsSetupError(
- 'The %s filename declared in the source '
- 'files of the program %s have not been '
- 'built by the installation process' % (sources[i],
- exe_name))
- sources[i]=filename
- log.info("%s changed to %s",message,filename)
- else:
- 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
deleted file mode 100644
index 38996be..0000000
--- a/distutils.ext/obidistutils/command/build_ctools.py
+++ /dev/null
@@ -1,63 +0,0 @@
-'''
-Created on 20 oct. 2012
-
-@author: coissac
-'''
-
-
-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"
-
- def initialize_options(self):
- build_exe.initialize_options(self)
-
- # List of built tools
- self.ctools = None
- self.littlebigman = None
-
-
- def finalize_options(self):
- # This might be confusing: both build-cexe and build-temp default
- # to build-temp as defined by the "build" command. This is because
- # I think that C libraries are really just temporary build
- # by-products, at least from the point of view of building Python
- # extensions -- but I want to keep my options open.
-
- build_exe.finalize_options(self)
-
-
- self.set_undefined_options('build',
- ('build_temp', 'build_cexe'))
-
- self.set_undefined_options('littlebigman',
- ('littlebigman', 'littlebigman'))
-
- 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
deleted file mode 100644
index 0ec6b11..0000000
--- a/distutils.ext/obidistutils/command/build_exe.py
+++ /dev/null
@@ -1,228 +0,0 @@
-'''
-Created on 20 oct. 2012
-
-@author: coissac
-'''
-
-import os
-
-from distutils import sysconfig
-from distutils.core import Command
-from distutils.sysconfig import customize_compiler as customize_compiler_ori
-from distutils.errors import DistutilsSetupError
-from distutils import log
-from distutils.ccompiler import show_compilers
-
-def customize_compiler(compiler):
- customize_compiler_ori(compiler)
- compilername = compiler.compiler[0]
- if ("gcc" in compilername or "g++" in compilername):
- cc_cmd = ' '.join(compiler.compiler + ['-fopenmp'])
- ccshared= ' '.join(x for x in sysconfig.get_config_vars("ccshared") if x is not None)
-
- compiler.set_executables(
- compiler=cc_cmd,
- compiler_so=cc_cmd + ' ' + ccshared
- )
-
-
-
-
-class build_exe(Command):
-
- description = "build an executable -- Abstract command "
-
- user_options = [
- ('build-cexe', 'x',
- "directory to build C/C++ libraries to"),
- ('build-temp', 't',
- "directory to put temporary build by-products"),
- ('debug', 'g',
- "compile with debugging information"),
- ('force', 'f',
- "forcibly build everything (ignore file timestamps)"),
- ('compiler=', 'c',
- "specify the compiler type"),
- ]
-
- boolean_options = ['debug', 'force']
-
- help_options = [
- ('help-compiler', None,
- "list available compilers", show_compilers),
- ]
-
- def initialize_options(self):
- self.build_cexe = None
- self.build_temp = None
-
- # List of executables to build
- self.executables = None
-
- # Compilation options for all libraries
- self.include_dirs = None
- self.define = None
- self.undef = None
- self.extra_compile_args = None
- self.debug = None
- self.force = 0
- self.compiler = None
- self.sse = None
- self.built_files=None
-
- def finalize_options(self):
- # This might be confusing: both build-cexe and build-temp default
- # to build-temp as defined by the "build" command. This is because
- # I think that C libraries are really just temporary build
- # by-products, at least from the point of view of building Python
- # extensions -- but I want to keep my options open.
- self.set_undefined_options('build',
- ('build_temp', 'build_temp'),
- ('compiler', 'compiler'),
- ('debug', 'debug'),
- ('force', 'force'))
-
- if self.include_dirs is None:
- self.include_dirs = self.distribution.include_dirs or []
-
- if isinstance(self.include_dirs, str):
- self.include_dirs = self.include_dirs.split(os.pathsep)
-
- self.sse = self.distribution.sse
-
- if self.sse is not None:
- if self.extra_compile_args is None:
- self.extra_compile_args=['-m%s' % self.sse]
- else:
- self.extra_compile_args.append('-m%s' % self.sse)
-
-
- # XXX same as for build_ext -- what about 'self.define' and
- # 'self.undef' ?
-
- def run(self):
-
- if not self.executables:
- return
-
- self.mkpath(self.build_cexe)
-
- # Yech -- this is cut 'n pasted from build_ext.py!
- from distutils.ccompiler import new_compiler
- self.compiler = new_compiler(compiler=self.compiler,
- dry_run=self.dry_run,
- force=self.force)
- customize_compiler(self.compiler)
-
- if self.include_dirs is not None:
- self.compiler.set_include_dirs(self.include_dirs)
- if self.define is not None:
- # 'define' option is a list of (name,value) tuples
- for (name,value) in self.define:
- self.compiler.define_macro(name, value)
-
- if self.undef is not None:
- for macro in self.undef:
- self.compiler.undefine_macro(macro)
-
- self.build_executables(self.executables)
-
-
- def check_executable_list(self, executables):
- """Ensure that the list of executables is valid.
-
- `executable` is presumably provided as a command option 'executables'.
- This method checks that it is a list of 2-tuples, where the tuples
- are (executable_name, build_info_dict).
-
- Raise DistutilsSetupError if the structure is invalid anywhere;
- just returns otherwise.
- """
- if not isinstance(executables, list):
- raise DistutilsSetupError("'executables' option must be a list of tuples")
-
- for exe in executables:
- if not isinstance(exe, tuple) and len(exe) != 2:
- raise DistutilsSetupError("each element of 'executables' must a 2-tuple")
-
- name, build_info = exe
-
- if not isinstance(name, str):
- raise DistutilsSetupError(
- "first element of each tuple in 'executables' "
- "must be a string (the executables name)")
-
- if '/' in name or (os.sep != '/' and os.sep in name):
- raise DistutilsSetupError(
- "bad executable name '%s': "
- "may not contain directory separators" % exe[0])
-
- if not isinstance(build_info, dict):
- raise DistutilsSetupError(
- "second element of each tuple in 'executables' "
- "must be a dictionary (build info)")
-
- def get_executable_names(self):
- # Assume the executables list is valid -- 'check_executable_list()' is
- # called from 'finalize_options()', so it should be!
- if not self.executables:
- return None
-
- exe_names = []
- for (exe_name, build_info) in self.executables: # @UnusedVariable
- exe_names.append(exe_name)
- return exe_names
-
-
- def get_source_files(self):
- self.check_executable_list(self.executables)
- filenames = []
- for (exe_name, build_info) in self.executables: # @UnusedVariable
- sources = build_info.get('sources')
- if sources is None or not isinstance(sources, (list, tuple)):
- raise DistutilsSetupError(
- "in 'executables' option (library '%s'), "
- "'sources' must be present and must be "
- "a list of source filenames" % exe_name)
-
- filenames.extend(sources)
- return filenames
-
- def substitute_sources(self,exe_name,sources):
- return list(sources)
-
- def build_executables(self, executables):
- for (exe_name, build_info) in executables:
- sources = build_info.get('sources')
- if sources is None or not isinstance(sources, (list, tuple)):
- raise DistutilsSetupError(
- "in 'executables' option (library '%s'), "
- "'sources' must be present and must be "
- "a list of source filenames" % exe_name)
-
- sources = self.substitute_sources(exe_name,sources)
-
- log.info("building '%s' program", exe_name)
-
- # First, compile the source code to object files in the library
- # directory. (This should probably change to putting object
- # files in a temporary build directory.)
- macros = build_info.get('macros')
- include_dirs = build_info.get('include_dirs')
- extra_args = self.extra_compile_args or []
-
- objects = self.compiler.compile(sources,
- output_dir=self.build_temp,
- macros=macros,
- include_dirs=include_dirs,
- extra_postargs=extra_args,
- debug=self.debug)
-
- # Now "link" the object files together into a static library.
- # (On Unix at least, this isn't really linking -- it just
- # builds an archive. Whatever.)
- self.compiler.link_executable(objects, exe_name,
- 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
deleted file mode 100644
index 8d00634..0000000
--- a/distutils.ext/obidistutils/command/build_ext.py
+++ /dev/null
@@ -1,143 +0,0 @@
-'''
-Created on 13 fevr. 2014
-
-@author: coissac
-'''
-
-from distutils import log
-import os
-
-from distutils import sysconfig
-from distutils.errors import DistutilsSetupError
-
-def _customize_compiler(compiler):
- compilername = compiler.compiler[0]
- if ("gcc" in compilername or "g++" in compilername):
- cc_cmd = ' '.join(compiler.compiler + ['-fopenmp'])
- ccshared= ' '.join(x for x in sysconfig.get_config_vars("ccshared") if x is not None)
-
- compiler.set_executables(
- compiler=cc_cmd,
- compiler_so=cc_cmd + ' ' + ccshared
- )
-
-
-try:
- from Cython.Distutils import build_ext as ori_build_ext # @UnresolvedImport
- from Cython.Compiler import Options as cython_options # @UnresolvedImport
- class build_ext(ori_build_ext):
-
-
- def modifyDocScripts(self):
- try:
- os.mkdir("doc/sphinx")
- except:
- pass
- build_dir_file=open("doc/sphinx/build_dir.txt","w")
- print(self.build_lib,file=build_dir_file)
- build_dir_file.close()
-
- def initialize_options(self):
- ori_build_ext.initialize_options(self) # @UndefinedVariable
- self.littlebigman = None
- self.built_files = None
-
-
- def finalize_options(self):
- super(build_ext, self).finalize_options()
-
-
- self.set_undefined_options('littlebigman',
- ('littlebigman', 'littlebigman'))
-
- self.set_undefined_options('build_files',
- ('files', 'built_files'))
-
- self.cython_c_in_temp = 1
-
- if self.littlebigman =='-DLITTLE_END':
- if self.define is None:
- self.define=[('LITTLE_END',None)]
- else:
- self.define.append('LITTLE_END',None)
-
- def substitute_sources(self,exe_name,sources):
- """
- Substitutes source file name starting by an @ by the actual
- name of the built file (see --> build_files)
- """
- sources = list(sources)
- for i in range(len(sources)):
- message = "%s :-> %s" % (exe_name,sources[i])
- if sources[i][0]=='@':
- try:
- filename = self.built_files[sources[i][1:]]
- except KeyError:
- tmpfilename = os.path.join(self.build_temp,sources[i][1:])
- if os.path.isfile (tmpfilename):
- filename = tmpfilename
- else:
- raise DistutilsSetupError(
- 'The %s filename declared in the source '
- 'files of the program %s have not been '
- 'built by the installation process' % (sources[i],
- exe_name))
- sources[i]=filename
- log.info("%s changed to %s",message,filename)
- else:
- log.info("%s ok",message)
-
- return sources
-
- def build_extensions(self):
- # First, sanity-check the 'extensions' list
-
- for ext in self.extensions:
- ext.sources = self.substitute_sources(ext.name,ext.sources)
-
- self.check_extensions_list(self.extensions)
-
- print("pouic")
- print(ext.sources)
- print("pouac")
-
- for ext in self.extensions:
- log.info("%s :-> %s",ext.name,ext.sources)
- ext.sources = self.cython_sources(ext.sources, ext)
- self.build_extension(ext)
-
- def build_extensions(self): # TODO what?? double? is it supposed to be build_extension?
- if hasattr(self, 'compiler'):
- _customize_compiler(self.compiler)
- if hasattr(self, 'shlib_compiler'):
- _customize_compiler(self.shlib_compiler)
-
- ori_build_ext.build_extensions(self)
-
-
- 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
-
-except ImportError:
- from distutils.command import build_ext # @UnusedImport
-
-
-
-
\ No newline at end of file
diff --git a/distutils.ext/obidistutils/command/build_files.py b/distutils.ext/obidistutils/command/build_files.py
deleted file mode 100644
index 656b5a8..0000000
--- a/distutils.ext/obidistutils/command/build_files.py
+++ /dev/null
@@ -1,63 +0,0 @@
-'''
-Created on 20 oct. 2012
-
-@author: coissac
-'''
-
-import os.path
-
-from distutils.core import Command
-from distutils import log
-
-class build_files(Command):
-
- def initialize_options(self):
- self.files=None
- self.ctools=None
- self.build_temp=None
- self.build_cexe=None
-
- def finalize_options(self):
-
- self.set_undefined_options('build_ctools',
- ('ctools', 'ctools'),
- ('build_temp','build_temp'),
- ('build_cexe','build_cexe'),
- )
-
- 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)
- if prog in self.ctools:
- progfile = os.path.join(self.build_cexe,prog)
- else:
- progfile = prog
-
- log.info("Building file : %s" % dest)
-
- commandline = command % {'prog' : progfile,
- 'dest' : destfile}
-
- log.info(" --> %s" % commandline)
-
- os.system(commandline)
- self.files[dest]=destfile
-
- 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
deleted file mode 100644
index 0d0fa43..0000000
--- a/distutils.ext/obidistutils/command/build_scripts.py
+++ /dev/null
@@ -1,104 +0,0 @@
-'''
-Created on 20 oct. 2012
-
-@author: coissac
-'''
-
-import os.path
-
-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):
-
- def copy_scripts (self):
- """Copy each script listed in 'self.scripts'; if it's marked as a
- Python script in the Unix way (first line matches 'first_line_re',
- ie. starts with "\#!" and contains "python"), then adjust the first
- line to refer to the current Python interpreter as we copy.
- """
- self.mkpath(self.build_dir)
- rawbuild_dir = os.path.join(os.path.dirname(self.build_dir),'raw_scripts')
- self.mkpath(rawbuild_dir)
-
- outfiles = []
- for script in self.scripts:
- adjust = 0
- script = convert_path(script)
- outfile = os.path.join(self.build_dir, os.path.splitext(os.path.basename(script))[0])
- rawoutfile = os.path.join(rawbuild_dir, os.path.basename(script))
- outfiles.append(outfile)
-
- if not self.force and not newer(script, outfile):
- log.debug("not copying %s (up-to-date)", script)
- continue
-
- # Always open the file but ignore failures in dry-run mode --
- # that way, we'll get accurate feedback if we can read the
- # script.
- try:
- f = open(script, "r")
- except IOError:
- if not self.dry_run:
- raise
- f = None
- else:
- first_line = f.readline()
- if not first_line:
- self.warn("%s is an empty file (skipping)" % script)
- continue
-
- match = first_line_re.match(first_line)
- if match:
- adjust = 1
- post_interp = match.group(1) or ''
-
- log.info("Store the raw script %s -> %s", script,rawoutfile)
- self.copy_file(script, rawoutfile)
-
-
- if adjust:
- log.info("copying and adjusting %s -> %s", script,
- self.build_dir)
- if not self.dry_run:
- outf = open(outfile, "w")
- if not sysconfig.python_build:
- outf.write("#!%s%s\n" %
- (self.executable,
- post_interp))
- else:
- outf.write("#!%s%s\n" %
- (os.path.join(
- sysconfig.get_config_var("BINDIR"),
- "python%s%s" % (sysconfig.get_config_var("VERSION"),
- sysconfig.get_config_var("EXE"))),
- post_interp))
- outf.writelines(f.readlines())
- outf.close()
- if f:
- f.close()
- else:
- if f:
- f.close()
- self.copy_file(script, outfile)
-
- if os.name == 'posix':
- for F in outfiles:
- if self.dry_run:
- log.info("changing mode of %s", F)
- else:
- oldmode = os.stat(F)[ST_MODE]
- oldmode = oldmode & 0o7777
-
- newmode = (oldmode | 0o555) & 0o7777
- if newmode != oldmode:
- log.info("changing mode of %s from %o to %o",
- F, oldmode, newmode)
- os.chmod(F, newmode)
-
diff --git a/distutils.ext/obidistutils/command/build_sphinx.py b/distutils.ext/obidistutils/command/build_sphinx.py
deleted file mode 100644
index e349083..0000000
--- a/distutils.ext/obidistutils/command/build_sphinx.py
+++ /dev/null
@@ -1,27 +0,0 @@
-'''
-Created on 10 mars 2015
-
-@author: coissac
-'''
-
-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
- '''
-
- 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
deleted file mode 100644
index 1befe1a..0000000
--- a/distutils.ext/obidistutils/command/install.py
+++ /dev/null
@@ -1,19 +0,0 @@
-'''
-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.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
deleted file mode 100644
index 0a91ffd..0000000
--- a/distutils.ext/obidistutils/command/install_scripts.py
+++ /dev/null
@@ -1,47 +0,0 @@
-'''
-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
-from distutils import log
-
-class install_scripts(ori_install_scripts):
-
- def initialize_options(self):
- ori_install_scripts.initialize_options(self)
- self.public_dir = None
-
-
- def install_public_link(self):
- self.mkpath(self.public_dir)
- for file in self.get_outputs():
- 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]
- )
- if os.path.exists(dest):
- os.unlink(dest)
- os.symlink(file,dest)
-
-
-
- def run(self):
- ori_install_scripts.run(self)
- if self.distribution.serenity:
- self.public_dir=os.path.join(self.install_dir,"../export/bin")
- self.public_dir=os.path.abspath(self.public_dir)
- self.install_public_link()
-
-
diff --git a/distutils.ext/obidistutils/command/install_sphinx.py b/distutils.ext/obidistutils/command/install_sphinx.py
deleted file mode 100644
index 96549d8..0000000
--- a/distutils.ext/obidistutils/command/install_sphinx.py
+++ /dev/null
@@ -1,61 +0,0 @@
-'''
-Created on 10 mars 2015
-
-@author: coissac
-'''
-from distutils.core import Command
-import os.path
-import glob
-
-class install_sphinx(Command):
- '''
- Install the sphinx documentation
- '''
-
- description = "Install the sphinx documentation in serenity mode"
-
- boolean_options = ['force', 'skip-build']
-
-
- def initialize_options (self):
- self.install_doc = None
- self.build_dir = None
-
- def finalize_options (self):
- self.set_undefined_options('build_sphinx', ('build_dir', 'build_dir'))
- self.set_undefined_options('install',
- ('install_scripts', 'install_doc'))
-
- def run (self):
- if self.distribution.serenity:
- self.install_doc = os.path.join(self.install_doc,"../export/share")
- self.install_doc=os.path.abspath(self.install_doc)
- self.mkpath(self.install_doc)
- self.mkpath(os.path.join(self.install_doc,'html'))
- outfiles = self.copy_tree(os.path.join(self.build_dir,'html'), # @UnusedVariable
- os.path.join(self.install_doc,'html'))
-
- self.mkpath(os.path.join(self.install_doc,'man','man1'))
- outfiles = self.copy_tree(os.path.join(self.build_dir,'man'), # @UnusedVariable
- os.path.join(self.install_doc,'man','man1'))
-
- for epub in glob.glob(os.path.join(self.build_dir,'epub/*.epub')):
- 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
deleted file mode 100644
index 65f2dad..0000000
--- a/distutils.ext/obidistutils/command/littlebigman.py
+++ /dev/null
@@ -1,59 +0,0 @@
-'''
-Created on 20 oct. 2012
-
-@author: coissac
-'''
-
-import os
-
-from obidistutils.command.build_exe import build_exe
-from distutils import log
-
-import subprocess
-
-class littlebigman(build_exe):
-
- description = "build the littlebigman executable testing endianness of the CPU"
-
-
- def initialize_options(self):
- build_exe.initialize_options(self)
-
- self.littlebigman = None
-
-
- def finalize_options(self):
- # This might be confusing: both build-cexe and build-temp default
- # to build-temp as defined by the "build" command. This is because
- # I think that C libraries are really just temporary build
- # by-products, at least from the point of view of building Python
- # extensions -- but I want to keep my options open.
-
- build_exe.finalize_options(self)
-
- self.set_undefined_options('build',
- ('build_temp', 'build_cexe'))
-
- # self.ctools = self.distribution.ctools
-
- if os.path.isfile("distutils.ext/src/littlebigman.c"):
- self.executables = [('littlebigman',{"sources":["distutils.ext/src/littlebigman.c"]})]
- self.check_executable_list(self.executables)
- else:
- self.executables = []
-
-
- def run_littlebigman(self):
- p = subprocess.Popen("'%s'" % os.path.join(self.build_temp,
- 'littlebigman'),
- shell=True,
- stdout=subprocess.PIPE)
- little = p.communicate()[0]
- return little.decode('latin1')
-
- def run(self):
- build_exe.run(self)
- self.littlebigman=self.run_littlebigman()
- log.info("Your CPU is in mode : %s" % self.littlebigman)
-
-
\ No newline at end of file
diff --git a/distutils.ext/obidistutils/command/pidname.py b/distutils.ext/obidistutils/command/pidname.py
deleted file mode 100644
index 871e1ab..0000000
--- a/distutils.ext/obidistutils/command/pidname.py
+++ /dev/null
@@ -1,55 +0,0 @@
-'''
-Created on 20 oct. 2012
-
-@author: coissac
-'''
-
-import os
-
-from obidistutils.command.build_exe import build_exe
-from obidistutils.serenity.checksystem import is_mac_system
-
-
-class pidname(build_exe):
-
- description = "build the pidname executable returning the executable path from a PID on a mac"
-
-
- def initialize_options(self):
- build_exe.initialize_options(self)
-
- self.pidname = False
-
-
- def finalize_options(self):
- # This might be confusing: both build-cexe and build-temp default
- # to build-temp as defined by the "build" command. This is because
- # I think that C libraries are really just temporary build
- # by-products, at least from the point of view of building Python
- # extensions -- but I want to keep my options open.
-
- build_exe.finalize_options(self)
-
- self.set_undefined_options('build',
- ('build_scripts', 'build_cexe'))
-
- # self.ctools = self.distribution.ctools
-
- if os.path.isfile("distutils.ext/src/pidname.c"):
- self.executables = [('pidname',{"sources":["distutils.ext/src/pidname.c"]})]
- self.check_executable_list(self.executables)
- 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():
- build_exe.run(self)
- self.pidname=True
- else:
- self.pidname=False
-
\ No newline at end of file
diff --git a/distutils.ext/obidistutils/command/sdist.py b/distutils.ext/obidistutils/command/sdist.py
deleted file mode 100644
index 9293c86..0000000
--- a/distutils.ext/obidistutils/command/sdist.py
+++ /dev/null
@@ -1,42 +0,0 @@
-'''
-Created on 10 mars 2015
-
-@author: coissac
-'''
-
-import os.path
-
-from distutils.command.sdist import sdist as orig_sdist
-from distutils import dir_util
-
-class sdist(orig_sdist):
-
- def make_distribution(self):
- """Create the source distribution(s). First, we create the release
- tree with 'make_release_tree()'; then, we create all required
- archive files (according to 'self.formats') from the release tree.
- Finally, we clean up by blowing away the release tree (unless
- 'self.keep_temp' is true). The list of archive files created is
- stored so it can be retrieved later by 'get_archive_files()'.
- """
- # Don't warn about missing meta-data here -- should be (and is!)
- # done elsewhere.
- base_dir = self.distribution.get_fullname()
- base_name = os.path.join(self.dist_dir,base_dir)
-
- self.make_release_tree(os.path.join('tmp',base_dir), self.filelist.files)
- archive_files = [] # remember names of files we create
- # tar archive must be created last to avoid overwrite and remove
- if 'tar' in self.formats:
- self.formats.append(self.formats.pop(self.formats.index('tar')))
-
- for fmt in self.formats:
- file = self.make_archive(base_name, fmt, root_dir='tmp',base_dir=base_dir,
- owner=self.owner, group=self.group)
- archive_files.append(file)
- self.distribution.dist_files.append(('sdist', '', file))
-
- self.archive_files = archive_files
-
- if not self.keep_temp:
- dir_util.remove_tree(os.path.join('tmp',base_dir), dry_run=self.dry_run)
diff --git a/distutils.ext/obidistutils/core.py b/distutils.ext/obidistutils/core.py
deleted file mode 100644
index ea1c08c..0000000
--- a/distutils.ext/obidistutils/core.py
+++ /dev/null
@@ -1,234 +0,0 @@
-'''
-Created on 20 oct. 2012
-
-@author: coissac
-'''
-
-from os import path
-import os.path
-import glob
-import sys
-
-try:
- from setuptools.extension import Extension
-except ImportError:
- from distutils.extension import Extension
-
-# from distutils.extension import Extension
-
-from obidistutils.serenity.checkpackage import install_requirements,\
- check_requirements, \
- RequirementError
-
-from obidistutils.serenity.rerun import enforce_good_python
-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):
- modules=[]
- if base is None:
- base=[]
- for module in (path.basename(path.dirname(x))
- for x in glob.glob(path.join(root,'*','__init__.py'))):
- modules.append('.'.join(base+[module]))
- modules.extend(findPackage(path.join(root,module),base+[module]))
- return modules
-
-def findCython(root,base=None,pyrexs=None):
- setupdir = os.path.dirname(sys.argv[0])
- pyrexs=[]
-
- if base is None:
- base=[]
- for module in (path.basename(path.dirname(x))
- for x in glob.glob(path.join(root,'*','__init__.py'))):
-
- for pyrex in glob.glob(path.join(root,module,'*.pyx')):
- libabspath = os.path.abspath('obi_libdir')
- obiabspath = os.path.abspath('.')
- pyrexs.append(Extension('.'.join(base+[module,path.splitext(path.basename(pyrex))[0]]),
- [pyrex],
- library_dirs=[libabspath],
- include_dirs=[libabspath],
- libraries=["obi3"],
- runtime_library_dirs=[libabspath],
- extra_link_args=["-Wl,-rpath,"+libabspath, "-L"+libabspath]
- )
- )
- try:
- cfiles = os.path.splitext(pyrex)[0]+".cfiles"
- cfilesdir = os.path.dirname(cfiles)
- cfiles = open(cfiles)
- cfiles = [os.path.relpath(os.path.join(cfilesdir,y),setupdir).strip()
- if y[0] !='@' else y.strip()
- for y in cfiles]
-
- log.info("Cython module : %s",cfiles)
- incdir = set(os.path.dirname(x) for x in cfiles if x[-2:]==".h")
- #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',
- '-Wmissing-braces',
- '-Wchar-subscripts',
- '-fPIC'
- ])
-
- except IOError:
- pass
-
- pyrexs.extend(findCython(path.join(root,module),base+[module]))
- return pyrexs
-
-
-def rootname(x):
- return os.path.splitext(x.sources[0])[0]
-
-
-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_ext import build_ext
- from obidistutils.command.build_ctools import build_ctools
- from obidistutils.command.build_files import build_files
- from obidistutils.command.build_scripts import build_scripts
- from obidistutils.command.install_scripts import install_scripts
- from obidistutils.command.install_sphinx import install_sphinx
- 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,
- 'build_files':build_files,
- 'build_cexe':build_cexe,
- 'build_ext': build_ext,
- 'build_scripts':build_scripts,
- '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
-
-
-CTOOLS =[]
-CEXES =[]
-FILES =[]
-
-def setup(**attrs):
-
- log.set_threshold(log.INFO)
-
- minversion = attrs.get("pythonmin",'3.7')
- maxversion = attrs.get('pythonmax',None)
- fork = attrs.get('fork',False)
- requirementfile = attrs.get('requirements','requirements.txt')
-
- try:
- del attrs['pythonmin']
- except KeyError:
- pass
-
- try:
- del attrs['pythonmax']
- except KeyError:
- pass
-
- try:
- del attrs['fork']
- except KeyError:
- pass
-
- try:
- del attrs['requirements']
- except KeyError:
- pass
-
- if is_serenity():
-
-
- 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)
-
- if 'distclass' not in attrs:
- attrs['distclass']=Distribution
-
- if 'python_src' not in attrs:
- SRC = 'python'
- else:
- SRC = attrs['python_src']
- del(attrs['python_src'])
-
- if 'scripts' not in attrs:
- attrs['scripts'] = glob.glob('%s/*.py' % SRC)
-
- if 'package_dir' not in attrs:
- attrs['package_dir'] = {'': SRC}
-
- if 'packages' not in attrs:
- attrs['packages'] = findPackage(SRC)
-
- if 'cmdclass' not in attrs:
- attrs['cmdclass'] = prepare_commands()
-
- if 'ctools' not in attrs:
- attrs['ctools'] = CTOOLS
-
- if 'executables' not in attrs:
- attrs['executables'] = CEXES
-
- if 'files' not in attrs:
- attrs['files'] = FILES
-
- if 'sse' not in attrs:
- attrs['sse']=None
-
- if 'serenity' not in attrs:
- attrs['serenity']=False
-
- EXTENTION=findCython(SRC)
-
- 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
-
- return ori_setup(**attrs)
diff --git a/distutils.ext/obidistutils/dist.py b/distutils.ext/obidistutils/dist.py
deleted file mode 100644
index 8cbbffb..0000000
--- a/distutils.ext/obidistutils/dist.py
+++ /dev/null
@@ -1,58 +0,0 @@
-'''
-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):
-
- def __init__(self,attrs=None):
- self.executables = None
- self.ctools = None
- self.files = None
- self.build_cexe = None
- self.deprecated_scripts = None
- self.zip_safe=False
- self.sse = None
- self.serenity=attrs['serenity']
-
- ori_Distribution.__init__(self, attrs)
-
- self.global_options.insert(0,('serenity', None, "install or build the package in a python virtualenv "
- "without polluting the installed python and with many "
- "checks during the installation process"
- ))
- self.global_options.insert(0,('virtualenv', None, "if the installation is done using the serenity mode "
- "this option allows for specifying the virtualenv name. "
- "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
-
- def has_ctools(self):
- return self.ctools is not None and self.ctools
-
- def has_files(self):
- return self.files is not None and self.files
-
- def has_deprecated_scripts(self):
- return self.deprecated_scripts is not None and self.deprecated_scripts
-
-
\ No newline at end of file
diff --git a/distutils.ext/obidistutils/serenity/__init__.py b/distutils.ext/obidistutils/serenity/__init__.py
deleted file mode 100644
index 38f3591..0000000
--- a/distutils.ext/obidistutils/serenity/__init__.py
+++ /dev/null
@@ -1,118 +0,0 @@
-import sys
-
-from distutils import util
-from distutils import sysconfig
-from distutils import log
-from distutils.version import LooseVersion, StrictVersion
-import glob
-import os
-import subprocess
-import re
-from distutils.errors import DistutilsError
-import tempfile
-
-from importlib.util import spec_from_file_location # @UnresolvedImport
-import zipimport
-
-import argparse
-
-import base64
-
-from .checkpython import is_python_version
-
-
-from obidistutils.serenity.rerun import enforce_good_python
-from obidistutils.serenity.rerun import rerun_with_anothe_python
-
-from obidistutils.serenity.virtual import serenity_virtualenv
-
-from obidistutils.serenity.checksystem import is_mac_system, \
- is_windows_system
-
-from obidistutils.serenity.checkpackage import install_requirements
-from obidistutils.serenity.checkpackage import check_requirements
-
-from obidistutils.serenity.util import save_argv
-
-from obidistutils.serenity.snake import snake
-
-
-def serenity_snake(envname,package,version):
- old = log.set_threshold(log.INFO)
-
- log.info("Installing %s (%s) in serenity mode" % (package,version))
-
- enforce_good_python()
-
- virtualpython=serenity_virtualenv(envname,package,version)
-
- if virtualpython!=os.path.realpath(sys.executable):
- log.info("Restarting installation within the %s virtualenv" % (envname))
- rerun_with_anothe_python(virtualpython)
-
- log.info("%s will be installed with python : %s" % (package,virtualpython))
-
- if install_requirements():
- log.info("Restarting installation with all dependencies ok")
- rerun_with_anothe_python(virtualpython)
-
- log.set_threshold(old)
-
-def serenity_assert(version):
- check_requirements()
-
-
-def is_serenity():
- from obidistutils.serenity.globals import local_serenity
- return local_serenity and local_serenity[0]
-
-def serenity_mode(package,version):
-
- save_argv()
-
-
- from obidistutils.serenity.globals import saved_args
- from obidistutils.serenity.globals import local_serenity
-
-
- old = log.set_threshold(log.INFO)
-
- argparser = argparse.ArgumentParser(add_help=False)
- argparser.add_argument('--serenity',
- dest='serenity',
- action='store_true',
- default=True,
- help='Switch the installer in serenity mode. Everythings are installed in a virtualenv')
-
- argparser.add_argument('--no-serenity',
- dest='serenity',
- action='store_false',
- default=True,
- help='Switch the installer in the no serenity mode.')
-
- argparser.add_argument('--virtualenv',
- dest='virtual',
- type=str,
- action='store',
- default="%s-%s" % (package,version),
- help='Specify the name of the virtualenv used by the serenity mode [default: %s-%s]' % (package,version))
-
- args, unknown = argparser.parse_known_args()
- sys.argv = [sys.argv[0]] + unknown
-
- if args.serenity:
- local_serenity.append(True)
- serenity_snake(args.virtual,package,version)
- else:
- local_serenity.append(False)
-
- log.set_threshold(old)
-
- 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/bootstrappip.py b/distutils.ext/obidistutils/serenity/bootstrappip.py
deleted file mode 100644
index 01aebdf..0000000
--- a/distutils.ext/obidistutils/serenity/bootstrappip.py
+++ /dev/null
@@ -1,36 +0,0 @@
-'''
-Created on 22 janv. 2016
-
-@author: coissac
-'''
-
-import sys
-from urllib import request
-import os.path
-
-from obidistutils.serenity.util import get_serenity_dir
-from obidistutils.serenity.rerun import rerun_with_anothe_python
-from obidistutils.serenity.checkpython import is_a_virtualenv_python
-
-getpipurl="https://bootstrap.pypa.io/get-pip.py"
-
-def bootstrap():
-
- getpipfile=os.path.join(get_serenity_dir(),"get-pip.py")
-
- with request.urlopen(getpipurl) as getpip:
- with open(getpipfile,"wb") as out:
- for l in getpip:
- out.write(l)
-
- python = sys.executable
-
- if is_a_virtualenv_python():
- command= "%s %s" % (python,getpipfile)
- else:
- command= "%s %s --user" % (python,getpipfile)
-
- os.system(command)
-
- rerun_with_anothe_python(python)
-
\ No newline at end of file
diff --git a/distutils.ext/obidistutils/serenity/checkpackage.py b/distutils.ext/obidistutils/serenity/checkpackage.py
deleted file mode 100644
index 31fc0c6..0000000
--- a/distutils.ext/obidistutils/serenity/checkpackage.py
+++ /dev/null
@@ -1,175 +0,0 @@
-'''
-Created on 2 oct. 2014
-
-@author: coissac
-'''
-
-import re
-
-from distutils.version import StrictVersion # @UnusedImport
-from distutils.errors import DistutilsError
-from distutils import log
-
-import os.path
-import sys
-import subprocess
-
-
-class RequirementError(Exception):
- pass
-
-def is_installed(requirement):
- pipcommand = os.path.join(os.path.dirname(sys.executable),'pip')
- pipjson = subprocess.run([pipcommand,"list","--format=json"],
- capture_output=True).stdout
- packages = eval(pipjson)
-
-
-
- requirement_project,requirement_relation,requirement_version = parse_package_requirement(requirement)
-
- package = [x for x in packages if x["name"]==requirement_project]
-
- if len(package)==1:
- if ( requirement_version is not None
- and requirement_relation is not None):
- rep = (len(package)==1) and eval("StrictVersion('%s') %s StrictVersion('%s')" % (package[0]["version"],
- requirement_relation,
- requirement_version)
- )
- else:
- rep=True
- else:
- rep=False
-
- if rep:
- if requirement_version is not None and requirement_relation is not None:
- log.info("Look for package %s (%s%s) : ok version %s installed" % (requirement_project,
- requirement_relation,
- requirement_version,
- package[0]["version"]))
- else:
- log.info("Look for package %s : ok version %s installed" % (requirement_project,
- package[0]["version"]))
- else:
- if len(package)!=1:
- if requirement_version is not None and requirement_relation is not None:
- log.info("Look for package %s (%s%s) : not installed" % (requirement_project,
- requirement_relation,
- requirement_version))
- else:
- log.info("Look for package %s : not installed" % requirement_project)
- else:
- log.info("Look for package %s (%s%s) : failed only version %s installed" % (requirement_project,
- requirement_relation,
- requirement_version,
- package[0]["version"]))
-
- return rep
-
-
-def get_requirements(requirementfile='requirements.txt'):
-
- try:
- requirements = open(requirementfile).readlines()
- requirements = [x.strip() for x in requirements]
- requirements = [x for x in requirements if x[0]!='-']
-
- except IOError:
- requirements = []
-
- return requirements
-
-
-def install_requirements(requirementfile='requirements.txt'):
-
- install_something=False
-
- requirements = get_requirements(requirementfile)
-
- log.info("Required packages for the installation :")
- for x in requirements:
- ok = is_installed(x)
- if not ok:
- log.info(" Installing requirement : %s" % x)
- pip_install_package(x,requirement=requirementfile)
- install_something=True
- if x[0:3]=='pip':
- return True
-
- return install_something
-
-
-def check_requirements(requirementfile='requirements.txt'):
-
- requirements = get_requirements(requirementfile)
-
- log.info("Required packages for the installation :")
- for x in requirements:
- ok = is_installed(x)
- if not ok:
- raise RequirementError(" Missing requirement : %s -- Package installation stopped" % x)
-
-
-
-
-def parse_package_requirement(requirement):
-
- version_pattern = re.compile('[=><]+(.*)$')
- project_pattern = re.compile('[^=><]+')
- relationship_pattern = re.compile('[=><]+')
-
- try:
- requirement_project = project_pattern.search(requirement).group(0)
- requirement_version = version_pattern.search(requirement)
- if requirement_version is not None:
- requirement_version=requirement_version.group(1)
- requirement_relation= relationship_pattern.search(requirement)
- if requirement_relation is not None:
- requirement_relation=requirement_relation.group(0)
- except:
- raise DistutilsError("Requirement : %s not correctly formated" % requirement)
-
- return requirement_project,requirement_relation,requirement_version
-
-
-def get_package_requirement(package,requirementfile='requirements.txt'):
- requirements = get_requirements(requirementfile)
- req = [x for x in requirements
- if x[0:len(package)]==package
- ]
-
- if len(req)==1:
- return req[0]
- else:
- return None
-
-
-def pip_install_package(package,directory=None,requirement=None):
-
- pipcommand = os.path.join(os.path.dirname(sys.executable),'pip')
- 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']
-
- args = ['install']
-
- if requirement:
- args.append('--requirement')
- args.append(requirement)
-
- if 'https_proxy' in os.environ:
- args.append('--proxy=%s' % os.environ['https_proxy'])
-
- if directory is not None:
- args.append('--target=%s' % directory)
-
- args.append(package)
-
- pip = subprocess.run([pipcommand] + args)
-
- return pip
-
diff --git a/distutils.ext/obidistutils/serenity/checkpython.py b/distutils.ext/obidistutils/serenity/checkpython.py
deleted file mode 100644
index 7b6e057..0000000
--- a/distutils.ext/obidistutils/serenity/checkpython.py
+++ /dev/null
@@ -1,138 +0,0 @@
-'''
-Created on 24 mai 2015
-
-@author: coissac
-'''
-from distutils.version import StrictVersion
-from distutils import sysconfig
-import subprocess
-import os
-import glob
-import re
-
-from obidistutils.serenity.checksystem import is_windows_system
-import sys
-
-
-def is_python_version(path=None,minversion='3.4',maxversion=None):
- '''
- Checks that the python version is in the range {minversion,maxversion[
-
- @param path: if None consider the running python
- otherwise the python pointed by the path
- @param minversion: the minimum version to consider
- @param maxversion: the maximum version to consider (strictly inferior to)
-
- @return: True if the python version match
- @rtype: bool
- '''
- if path is None:
- pythonversion = StrictVersion(sysconfig.get_python_version())
- else:
- command = """'%s' -c 'from distutils import sysconfig; """ \
- """print(sysconfig.get_python_version())'""" % path
-
- p = subprocess.Popen(command,
- shell=True,
- 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))
- )
-
-
-def lookfor_good_python(minversion='3.4',maxversion=None,followLink=False):
- '''
- Look for all python interpreters present in the system path that
- match the version constraints.
-
- @param minversion: the minimum version to consider
- @param maxversion: the maximum version to consider (strictly inferior to)
- @param followLink: a boolean value indicating if link must be substituted
- by their real path.
-
- @return: a list of path to interpreters
- '''
- exe = []
- if not is_windows_system():
- paths = os.environ['PATH'].split(os.pathsep)
- for p in paths:
- candidates = glob.glob(os.path.join(p,'python*'))
- pexe = []
- pythonpat=re.compile('python([0-9]|[0-9]\.[0-9])?$')
- for e in candidates:
- print(e)
- if pythonpat.search(e) is not None:
- if followLink and os.path.islink(e):
- e = os.path.realpath(e)
- if (os.path.isfile(e) and
- os.access(e, os.X_OK) and
- is_python_version(e,minversion,maxversion)):
- pexe.append(e)
- exe.extend(set(pexe))
-
- return exe
-
-def is_a_virtualenv_python(path=None):
- '''
- Check if the python is belonging a virtualenv
-
- @param path: the path pointing to the python executable.
- if path is None then the running python is
- considered.
- @param path: str or None
-
- @return: True if the python belongs a virtualenv
- False otherwise
- @rtype: bool
-
- '''
- if path is None:
- rep = sys.base_exec_prefix != sys.exec_prefix
- else:
- command = """'%s' -c 'import sys; print(sys.base_exec_prefix != sys.exec_prefix)'""" % path
- p = subprocess.Popen(command,
- shell=True,
- stdout=subprocess.PIPE)
- rep = eval(str(p.communicate()[0],'utf8'))
-
- return rep
-
-
-def which_virtualenv(path=None,full=False):
- '''
- Returns the name of the virtualenv.
- @param path: the path to a python binary or None
- if you want to consider the running python
- @type path: str or None
-
- @param full: if set to True, returns the absolute path,
- otherwise only return a simple directory name
- @type full: bool
-
- @return: the virtual environment name or None if the
- path does not belong a virtualenv
- @rtype: str or None
- '''
- if path is None:
- path = sys.executable
-
- if is_a_virtualenv_python(path):
- parts = path.split(os.sep)
- try:
- if full:
- rep = os.sep.join(parts[0:parts.index('bin')])
- rep = os.path.realpath(rep)
- else:
- rep = parts[parts.index('bin')-1]
- except ValueError:
- rep = None
- else:
- rep=None
-
- return rep
-
-
diff --git a/distutils.ext/obidistutils/serenity/checksystem.py b/distutils.ext/obidistutils/serenity/checksystem.py
deleted file mode 100644
index 511ffca..0000000
--- a/distutils.ext/obidistutils/serenity/checksystem.py
+++ /dev/null
@@ -1,18 +0,0 @@
-'''
-Created on 24 mai 2015
-
-@author: coissac
-'''
-
-from distutils import util
-
-def is_mac_system():
- platform = util.get_platform().split('-')[0]
-
- return platform=='macosx'
-
-def is_windows_system():
- platform = util.get_platform().split('-')[0]
-
- return platform=='Windows'
-
\ No newline at end of file
diff --git a/distutils.ext/obidistutils/serenity/globals.py b/distutils.ext/obidistutils/serenity/globals.py
deleted file mode 100644
index 0185b8b..0000000
--- a/distutils.ext/obidistutils/serenity/globals.py
+++ /dev/null
@@ -1,14 +0,0 @@
-'''
-Created on 24 mai 2015
-
-@author: coissac
-'''
-
-
-saved_args=[]
-tmpdir=[]
-local_pip=[]
-local_virtualenv=[]
-local_cython=[]
-local_serenity=[]
-
\ No newline at end of file
diff --git a/distutils.ext/obidistutils/serenity/rerun.py b/distutils.ext/obidistutils/serenity/rerun.py
deleted file mode 100644
index 7a295f8..0000000
--- a/distutils.ext/obidistutils/serenity/rerun.py
+++ /dev/null
@@ -1,61 +0,0 @@
-'''
-Created on 24 mai 2015
-
-@author: coissac
-'''
-
-import sys
-import os
-from distutils import log
-from distutils.errors import DistutilsError
-
-
-from obidistutils.serenity.globals import saved_args
-from obidistutils.serenity.checkpython import is_python_version,\
- lookfor_good_python
-
-
-def rerun_with_anothe_python(path, minversion='3.4',maxversion=None, fork=False):
-
- if saved_args:
- args = saved_args
- else:
- args = list(sys.argv)
-
-
- assert is_python_version(path,minversion,maxversion), \
- 'the selected python is not adapted to the installation of this package'
-
- args.insert(0, path)
-
- sys.stderr.flush()
- sys.stdout.flush()
-
- if fork:
- log.info('Forking a new install process')
- os.system(' '.join(list(args)))
- log.info('External process ended')
- sys.exit(0)
- else:
- log.info('Install script restarting...')
- os.execv(path,list(args))
-
-def enforce_good_python(minversion='3.4',maxversion=None, fork=False):
- if is_python_version(minversion=minversion,maxversion=maxversion):
- log.info('You are running the good python')
- return True
-
- goodpython = lookfor_good_python(minversion,maxversion)
-
- if not goodpython:
- raise DistutilsError('No good python identified on your system')
-
- goodpython=goodpython[0]
-
- log.warn("========================================")
- log.warn("")
- log.warn(" Switching to python : %s" % goodpython)
- log.warn("")
- log.warn("========================================")
-
- rerun_with_anothe_python(goodpython)
diff --git a/distutils.ext/obidistutils/serenity/snake.py b/distutils.ext/obidistutils/serenity/snake.py
deleted file mode 100644
index 79c1f39..0000000
--- a/distutils.ext/obidistutils/serenity/snake.py
+++ /dev/null
@@ -1,35 +0,0 @@
-'''
-Created on 2 oct. 2014
-
-@author: coissac
-'''
-
-snake ="""
-
- ___
- ,'._,`.
- (-.___.-)
- (-.___.-)
- `-.___.-'
- (( @ @| . __
- \ ` | ,\ |`. @| | | _.-._
- __`.`=-=mm===mm:: | | |`. | | | ,'=` '=`.
- ( `-'|:/ /:/ `/ @| | | |, @| @| /---)W(---\
- \ \ / / / / @| | ' (----| |----) ,~
- |\ \ / /| / / @| \---| |---/ |
- | \ V /||/ / `.-| |-,' |
- | `-' |V / \| |/ @'
- | , |-' __| |__
- | .;: _,-. ,--""..| |..""--.
- ;;:::' " ) (`--::__|_|__::--')
- ,-" _, / \`--...___...--'/
- ( -:--'/ / /`--...___...--'\
- "-._ `"'._/ /`---...___...---'\
- "-._ "---. (`---....___....---')
- .' ",._ ,' ) |`---....___....---'|
- /`._| `| | (`---....___....---')
- ( \ | / \`---...___...---'/
- `. `, ^"" `:--...___...--;'
- `.,' hh `-._______.-'
-
-"""
\ No newline at end of file
diff --git a/distutils.ext/obidistutils/serenity/util.py b/distutils.ext/obidistutils/serenity/util.py
deleted file mode 100644
index 14c0283..0000000
--- a/distutils.ext/obidistutils/serenity/util.py
+++ /dev/null
@@ -1,27 +0,0 @@
-'''
-Created on 2 oct. 2014
-
-@author: coissac
-'''
-
-import sys
-import tempfile
-
-
-from obidistutils.serenity.globals import tmpdir # @UnusedImport
-from obidistutils.serenity.globals import saved_args # @UnusedImport
-
-def get_serenity_dir():
- global tmpdir
-
- if not tmpdir:
- tmpdir.append(tempfile.mkdtemp())
- return tmpdir[0]
-
-def save_argv():
- global saved_args
-
- del saved_args[:]
- saved_args.extend(list(sys.argv))
-
-
diff --git a/distutils.ext/obidistutils/serenity/virtual.py b/distutils.ext/obidistutils/serenity/virtual.py
deleted file mode 100644
index 27ee67c..0000000
--- a/distutils.ext/obidistutils/serenity/virtual.py
+++ /dev/null
@@ -1,69 +0,0 @@
-'''
-Created on 2 oct. 2014
-
-@author: coissac
-'''
-
-import os
-import sys
-import venv
-
-from distutils.errors import DistutilsError
-from .globals import local_virtualenv # @UnusedImport
-from .checkpython import which_virtualenv,\
- is_python_version, \
- is_a_virtualenv_python
-
-
-
-
-def serenity_virtualenv(envname,package,version,minversion='3.4',maxversion=None):
-
- #
- # Checks if we are already running under the good virtualenv
- #
- ve = which_virtualenv(full=True)
- if ve == os.path.realpath(envname) and is_python_version(minversion=minversion,maxversion=maxversion):
- return sys.executable
-
- #
- # Check if the virtualenv exist
- #
-
- python = None
-
- if os.path.isdir(envname):
- python = os.path.join(envname,'bin','python')
- ok = (is_python_version(python,
- minversion=minversion,
- maxversion=maxversion) and
- is_a_virtualenv_python(python))
-
-
- #
- # The virtualenv already exist but it is not ok
- #
- if not ok:
- raise DistutilsError("A virtualenv %s already exists but not with the required python")
-
- else:
- ok = False
-
-
- #
- # Creates a new virtualenv
- #
- if not ok:
- venv.create(envname,
- system_site_packages=False,
- clear=True,
- symlinks=False,
- with_pip=True)
-
- # check the newly created virtualenv
- return serenity_virtualenv(envname,package,version)
-
- return os.path.realpath(python)
-
-
-
\ No newline at end of file
diff --git a/distutils.ext/src/littlebigman.c b/distutils.ext/src/littlebigman.c
deleted file mode 100644
index 370bcaf..0000000
--- a/distutils.ext/src/littlebigman.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * littlebigman.c
- *
- * Created on: 11 juil. 2012
- * Author: coissac
- */
-
-#include
-
-int main(int argc, char *argv[])
-{
- union { int entier;
- char caractere[4] ;
- } test;
-
- test.entier=0x01020304;
-
- if (test.caractere[3] == 1)
- printf("-DLITTLE_END");
- else
- printf("-DBIG_END");
-
- return 0;
-}
diff --git a/distutils.ext/src/pidname.c b/distutils.ext/src/pidname.c
deleted file mode 100644
index ff61eb4..0000000
--- a/distutils.ext/src/pidname.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include
-#include
-#include
-#include
-#include
-
-int main (int argc, char* argv[])
-{
- pid_t pid; int ret;
- char pathbuf[PROC_PIDPATHINFO_MAXSIZE];
-
- if ( argc > 1 ) {
- pid = (pid_t) atoi(argv[1]);
- ret = proc_pidpath (pid, pathbuf, sizeof(pathbuf));
- if ( ret <= 0 ) {
- fprintf(stderr, "PID %d: proc_pidpath ();\n", pid);
- fprintf(stderr, " %s\n", strerror(errno));
- } else {
- printf("proc %d: %s\n", pid, pathbuf);
- }
- }
-
- return 0;
-}
diff --git a/doc/sphinx/.gitignore b/doc/sphinx/.gitignore
new file mode 100644
index 0000000..ebae2eb
--- /dev/null
+++ b/doc/sphinx/.gitignore
@@ -0,0 +1,2 @@
+.DS_Store
+/build_dir.txt
diff --git a/python/.gitignore b/python/.gitignore
new file mode 100644
index 0000000..4617832
--- /dev/null
+++ b/python/.gitignore
@@ -0,0 +1 @@
+/OBITools3.egg-info/
diff --git a/python/obi.py b/scripts/obi
similarity index 100%
rename from python/obi.py
rename to scripts/obi
diff --git a/setup.py b/setup.py
index 2d1758e..6384c06 100755
--- a/setup.py
+++ b/setup.py
@@ -1,87 +1,125 @@
-#!/usr/bin/env python
-
+import glob
+import os
import sys
+import re
+import subprocess
+
+from distutils.core import setup,Extension
+from distutils.sysconfig import get_python_lib
+from Cython.Build import cythonize
+
+import os.path
+from distutils import log
+from distutils.extension import Extension
+
+sys.path.append(os.path.abspath("python"))
+
+dependencies = ['sphinx',"Cython"]
+
+
+def findPackage(root,base=None):
+ modules=[]
+ if base is None:
+ base=[]
+ for module in (os.path.basename(os.path.dirname(x))
+ for x in glob.glob(os.path.join(root,'*','__init__.py'))):
+ modules.append('.'.join(base+[module]))
+ modules.extend(findPackage(os.path.join(root,module),base+[module]))
+ return modules
+
PACKAGE = "OBITools3"
VERSION = "0.0.0"
AUTHOR = 'Eric Coissac'
-EMAIL = 'eric@coissac.eu'
-URL = 'metabarcoding.org/obitools3'
-LICENSE = 'CeCILL-V2'
-DESCRIPTION ="Scripts and library for DNA metabarcoding",
+EMAIL = 'eric@metabarcoding.org'
+URL = "metabarcoding.org/obitools3"
+LICENSE = "CeCILL-V2"
+DESCRIPTION = "Tools and library for DNA metabarcoding",
+PYTHONMIN = '3.6'
SRC = 'python'
CSRC = 'src'
+REQUIRES = ['Cython>=0.24',
+ 'Sphinx>=1.2.0',
+ 'ipython>=3.0.0',
+ 'breathe>=4.0.0'
+ ]
+
+os.environ['CFLAGS'] = '-O3 -Wall -I "src" -I "src/libecoPCR" -I "src/libjson"'
+
+#sys.path.append("/Users/coissac/git/obitools3/python")
+
+cython_src = [x for x in glob.iglob('python/obitools3/**/*.pyx',
+ recursive=True
+ )
+ ]
+
+
+
+#with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as f:
+# readme = f.read()
+
+install_clibdir_option="-DPYTHONLIB:STRING='%s'" % get_python_lib()
+
+subprocess.call(['cmake', install_clibdir_option, 'src'])
+subprocess.call(['make', '-C', 'src','install'])
+
+
+
+
+cython_ext = [Extension('.'.join([os.path.dirname(x).replace("python/",""),
+ os.path.splitext(os.path.basename(x))[0]]).replace('/','.'),
+ [x],
+ library_dirs=[get_python_lib()],
+ include_dirs=["src","src/libecoPCR","src/libjson"],
+ libraries=["cobitools3"],
+ runtime_library_dirs=[get_python_lib()],
+ extra_compile_args=['-msse2',
+ '-Wno-unused-function',
+ '-Wmissing-braces',
+ '-Wchar-subscripts',
+ '-fPIC'
+ ],
+ extra_link_args=["-Wl,-rpath,"+get_python_lib(),
+ "-L"+get_python_lib()
+ ]
+ )
+ for x in cython_src
+ ]
+
+
+xx = cythonize(cython_ext,
+ language_level=3,
+ annotate=True,
+ build_dir="build")
+
+#, include_path=["src","src/libecoPCR","src/libjson"]
+
classifiers=['Development Status :: 1 - Planning',
'Environment :: Console',
'Intended Audience :: Science/Research',
'License :: Other/Proprietary License',
'Operating System :: Unix',
- 'Programming Language :: Python',
'Programming Language :: Python :: 3',
+ 'Programming Language :: C',
'Topic :: Scientific/Engineering :: Bio-Informatics',
'Topic :: Utilities',
]
-PYTHONMIN='3.4'
-
-sys.path.append('distutils.ext')
-sys.path.append(SRC)
-
-if __name__=="__main__":
-
- import sys
-
- print("----------------")
- print(" ".join(sys.argv))
- print("----------------")
-
- #
- # Horrible hack
- #
-
- if sys.argv[0]=="-c":
- sys.argv[0]="setup.py"
-
- #
- # End of the horrible hack
- #
-
-
-
- try:
- from obitools3 import version
- VERSION = version.version
- except ImportError:
- pass
-
- from obidistutils.serenity import serenity_mode
-
- serenity=serenity_mode(PACKAGE,VERSION)
-
- from obidistutils.core import setup
- from obidistutils.core import CTOOLS
- from obidistutils.core import CEXES
- from obidistutils.core import FILES
-
- # Produce annotated html files
- import Cython.Compiler.Options
- Cython.Compiler.Options.annotate = True
-
-
- setup(name=PACKAGE,
- description=DESCRIPTION,
- classifiers=classifiers,
- version=VERSION,
- author=AUTHOR,
- author_email=EMAIL,
- license=LICENSE,
- url=URL,
- python_src=SRC,
- sse='sse2',
- serenity=serenity,
- pythonmin=PYTHONMIN)
+setup(name=PACKAGE,
+ description=DESCRIPTION,
+ classifiers=classifiers,
+ version=VERSION,
+ author=AUTHOR,
+ author_email=EMAIL,
+ license=LICENSE,
+ url=URL,
+ ext_modules=xx,
+ packages = findPackage('python'),
+ package_dir = {"" : "python"},
+ scripts = ['scripts/obi']
+)
diff --git a/src/.gitignore b/src/.gitignore
new file mode 100644
index 0000000..1296339
--- /dev/null
+++ b/src/.gitignore
@@ -0,0 +1,5 @@
+/CMakeFiles/
+/CMakeCache.txt
+/cmake_install.cmake
+/libcobitools3.dylib
+/Makefile
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..95c1564
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,66 @@
+cmake_minimum_required(VERSION 3.12)
+set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+
+SET(PYTHONLIB "po" CACHE STRING "Location of the python site-package directory")
+
+project (cobitools3)
+set(CMAKE_BUILD_TYPE Release)
+
+SET(CMAKE_C_COMPILER gcc)
+
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+file(GLOB_RECURSE CSRC "*.c")
+
+add_library(cobitools3 SHARED obierrno.c
+ obidms_taxonomy.c
+ obiblob_indexer.c
+ obi_lcs.c
+ obidmscolumn_str.c
+ bloom.c
+ build_reference_db.c
+ obidmscolumn_array.c
+ obidmscolumn_idx.c
+ obidmscolumn_bool.c
+ libjson/json_utils.c
+ libjson/cJSON.c
+ obidmscolumn_blob.c
+ dna_seq_indexer.c
+ obi_ecotag.c
+ encode.c
+ obiavl.c
+ sse_banded_LCS_alignment.c
+ kmer_similarity.c
+ obidmscolumn_qual.c
+ obi_clean.c
+ utils.c
+ uint8_indexer.c
+ murmurhash2.c
+ obidmscolumn_char.c
+ obiview.c
+ obidmscolumn_int.c
+ linked_list.c
+ obiblob.c
+ hashtable.c
+ obidmscolumn.c
+ char_str_indexer.c
+ obidmscolumn_float.c
+ upperband.c
+ crc64.c
+ obidmscolumn_seq.c
+ obilittlebigman.c
+ obidmscolumndir.c
+ obidms.c
+ obi_ecopcr.c
+ libecoPCR/libthermo/nnparams.c
+ libecoPCR/ecoapat.c
+ libecoPCR/libapat/libstki.c
+ libecoPCR/libapat/apat_search.c
+ libecoPCR/libapat/apat_parse.c
+ libecoPCR/ecodna.c
+ libecoPCR/ecoMalloc.c
+ libecoPCR/ecoError.c
+ obitypes.c
+ array_indexer.c)
+
+install(TARGETS cobitools3 DESTINATION ${PYTHONLIB})
+
\ No newline at end of file