def compile(self): # Patch the distribution to avoid a known problem patch_name = "cvc4_wrapper.patch" plink = "https://raw.githubusercontent.com/pysmt/solvers_patches/master/%s" % patch_name SolverInstaller.do_download(plink, os.path.join(self.extract_path, patch_name)) # Apply patch SolverInstaller.run("patch -p1 -i %s" % patch_name, directory=self.extract_path) # Prepare the building system SolverInstaller.run("bash autogen.sh", directory=self.extract_path) # Build ANTLR SolverInstaller.run("bash get-antlr-3.4", directory=os.path.join(self.extract_path, "contrib")) # Configure and build CVC4 config = "./configure --prefix={bin_path} \ --enable-language-bindings=python \ --with-antlr-dir={dir_path}/antlr-3.4 ANTLR={dir_path}/antlr-3.4/bin/antlr3;\ make; \ make install ".format(bin_path=self.bin_path, dir_path=self.extract_path) SolverInstaller.run(config, directory=self.extract_path) # Fix the paths of the bindings SolverInstaller.run("cp CVC4.so.3.0.0 _CVC4.so", directory=os.path.join(self.bin_path, "lib/pyshared"))
def compile(self): # Patch the distribution to avoid a known problem patch_name = "cvc4_wrapper.patch" plink = "https://raw.githubusercontent.com/pysmt/solvers_patches/master/%s" % patch_name SolverInstaller.do_download( plink, os.path.join(self.extract_path, patch_name)) # Apply patch SolverInstaller.run("patch -p1 -i %s" % patch_name, directory=self.extract_path) # Prepare the building system SolverInstaller.run("bash autogen.sh", directory=self.extract_path) # Build ANTLR SolverInstaller.run("bash get-antlr-3.4", directory=os.path.join(self.extract_path, "contrib")) # Configure and build CVC4 config = "./configure --prefix={bin_path} \ --enable-language-bindings=python \ --with-antlr-dir={dir_path}/antlr-3.4 ANTLR={dir_path}/antlr-3.4/bin/antlr3;\ make; \ make install ".format(bin_path=self.bin_path, dir_path=self.extract_path) SolverInstaller.run(config, directory=self.extract_path) # Fix the paths of the bindings SolverInstaller.run("cp CVC4.so.3.0.0 _CVC4.so", directory=os.path.join(self.bin_path, "lib/pyshared"))
def compile(self): if self.os_name == "windows": libdir = os.path.join(self.python_bindings_dir, "../lib") incdir = os.path.join(self.python_bindings_dir, "../include") gmp_h_url = "https://github.com/mikand/tamer-windows-deps/raw/master/gmp/include/gmp.h" mpir_dll_url = "https://github.com/Legrandin/mpir-windows-builds/blob/master/mpir-2.6.0_VS2015_%s/mpir.dll?raw=true" % self.bits mpir_lib_url = "https://github.com/Legrandin/mpir-windows-builds/blob/master/mpir-2.6.0_VS2015_%s/mpir.lib?raw=true" % self.bits setup_py_win_url = "https://github.com/pysmt/solvers_patches/raw/master/mathsat/setup-win.py" SolverInstaller.do_download(gmp_h_url, os.path.join(incdir, "gmp.h")) SolverInstaller.do_download(mpir_dll_url, os.path.join(libdir, "mpir.dll")) SolverInstaller.do_download(mpir_lib_url, os.path.join(libdir, "mpir.lib")) # Overwrite setup.py with the patched version setup_py = os.path.join(self.python_bindings_dir, "setup.py") SolverInstaller.mv(setup_py, setup_py + ".original") SolverInstaller.do_download(setup_py_win_url, setup_py) # Run setup.py to compile the bindings if self.os_name in {"windows", "darwin"}: SolverInstaller.run_python("./setup.py build_ext", self.python_bindings_dir) else: # NB: -R adds --rpath=$ORIGIN to link step, which makes shared library object # searched for in the extension's directory (no need for LD_LIBRARY_PATH) # (note: this is the default behavior for DLL discovery on Windows) SolverInstaller.run_python("./setup.py build_ext -R $ORIGIN", self.python_bindings_dir)
def compile(self): if self.os_name == "windows": libdir = os.path.join(self.python_bindings_dir, "../lib") incdir = os.path.join(self.python_bindings_dir, "../include") gmp_h_url = "https://github.com/mikand/tamer-windows-deps/raw/master/gmp/include/gmp.h" mpir_dll_url = "https://github.com/Legrandin/mpir-windows-builds/blob/master/mpir-2.6.0_VS2015_%s/mpir.dll?raw=true" % self.bits mpir_lib_url = "https://github.com/Legrandin/mpir-windows-builds/blob/master/mpir-2.6.0_VS2015_%s/mpir.lib?raw=true" % self.bits setup_py_win_url = "https://github.com/pysmt/solvers_patches/raw/master/mathsat/setup-win.py" SolverInstaller.do_download(gmp_h_url, os.path.join(incdir, "gmp.h")) SolverInstaller.do_download(mpir_dll_url, os.path.join(libdir, "mpir.dll")) SolverInstaller.do_download(mpir_lib_url, os.path.join(libdir, "mpir.lib")) # Overwrite setup.py with the patched version setup_py = os.path.join(self.python_bindings_dir, "setup.py") SolverInstaller.mv(setup_py, setup_py + ".original") SolverInstaller.do_download(setup_py_win_url, setup_py) # Run setup.py to compile the bindings if self.os_name == "windows": SolverInstaller.run_python("./setup.py build_ext", self.python_bindings_dir) else: # NB: -R adds --rpath=$ORIGIN to link step, which makes shared library object # searched for in the extension's directory (no need for LD_LIBRARY_PATH) # (note: this is the default behavior for DLL discovery on Windows) SolverInstaller.run_python("./setup.py build_ext -R $ORIGIN", self.python_bindings_dir)
def install_pyices(self): pyices_git = "aa0b91c39aa00c19c2160e83aad822dc468ce328" pyices_base_name = "pyices-%s" % pyices_git pyices_archive_name = "%s.tar.gz" % pyices_base_name pyices_archive = os.path.join(self.base_dir, pyices_archive_name) pyices_dir_path = os.path.join(self.base_dir, pyices_base_name) pyices_download_link = \ "https://codeload.github.com/cheshire/pyices/tar.gz/%s" % pyices_git SolverInstaller.do_download(pyices_download_link, pyices_archive) SolverInstaller.clean_dir(pyices_dir_path) SolverInstaller.untar(pyices_archive, self.base_dir) # Build pyices SolverInstaller.run_python("setup.py install --prefix=%s" % self.install_dir, directory=pyices_dir_path, env_variables={"YICES_PATH" : self.yices_path})
def install_yicespy(self): yicespy_git_version = self.yicespy_git_version yicespy_base_name = "yicespy" yicespy_archive_name = "%s.tar.gz" % yicespy_base_name yicespy_archive = os.path.join(self.base_dir, yicespy_archive_name) yicespy_dir_path = os.path.join(self.base_dir, yicespy_base_name + "-" + yicespy_git_version) yicespy_download_link = "https://codeload.github.com/pysmt/yicespy/tar.gz/%s" % (yicespy_git_version) SolverInstaller.do_download(yicespy_download_link, yicespy_archive) SolverInstaller.clean_dir(yicespy_dir_path) SolverInstaller.untar(yicespy_archive, self.base_dir) # Build yicespy SolverInstaller.run_python("setup.py --yices-dir=%s -- build_ext bdist_wheel --dist-dir=%s " % (self.yices_path, self.base_dir), directory=yicespy_dir_path) wheel_file = glob.glob(os.path.join(self.base_dir, "yicespy") + "*.whl")[0] SolverInstaller.unzip(wheel_file, self.bindings_dir)
def compile(self): if self.os_name == "windows": libdir = os.path.join(self.python_bindings_dir, "../lib") incdir = os.path.join(self.python_bindings_dir, "../include") gmp_h_url = "https://github.com/mikand/tamer-windows-deps/raw/master/gmp/include/gmp.h" mpir_dll_url = "https://github.com/Legrandin/mpir-windows-builds/blob/master/mpir-2.6.0_VS2015_%s/mpir.dll?raw=true" % self.bits mpir_lib_url = "https://github.com/Legrandin/mpir-windows-builds/blob/master/mpir-2.6.0_VS2015_%s/mpir.lib?raw=true" % self.bits setup_py_win_url = "https://github.com/pysmt/solvers_patches/raw/master/mathsat/setup-win.py" SolverInstaller.do_download(gmp_h_url, os.path.join(incdir, "gmp.h")) SolverInstaller.do_download(mpir_dll_url, os.path.join(libdir, "mpir.dll")) SolverInstaller.do_download(mpir_lib_url, os.path.join(libdir, "mpir.lib")) # Overwrite setup.py with the patched version setup_py = os.path.join(self.python_bindings_dir, "setup.py") SolverInstaller.mv(setup_py, setup_py + ".original") SolverInstaller.do_download(setup_py_win_url, setup_py) # Run setup.py to compile the bindings SolverInstaller.run_python("./setup.py build", self.python_bindings_dir)