- Remove urllib import which is not required when not downloading the sources - Fix various paths to LibVEX - Skip building a local copy of LibVEX - Force use of the static library Index: setup.py --- setup.py.orig +++ setup.py @@ -7,7 +7,6 @@ import glob import tarfile import multiprocessing import time -from urllib.request import urlopen import platform if bytes is str: @@ -45,7 +44,7 @@ else: VEX_LIB_NAME = "vex" # can also be vex-amd64-linux -VEX_PATH = os.path.abspath(os.path.join(PROJECT_DIR, '..', 'vex')) +VEX_PATH = '${LOCALBASE}' if not os.path.exists(VEX_PATH): VEX_PATH = os.path.join(PROJECT_DIR, 'vex') @@ -87,14 +86,14 @@ def _build_vex(): def _build_pyvex(): e = os.environ.copy() - e['VEX_LIB_PATH'] = VEX_PATH - e['VEX_INCLUDE_PATH'] = os.path.join(VEX_PATH, 'pub') - e['VEX_LIB_FILE'] = os.path.join(VEX_PATH, 'libvex.lib') + e['VEX_LIB_PATH'] = os.path.join(VEX_PATH, 'lib') + e['VEX_INCLUDE_PATH'] = os.path.join(VEX_PATH, 'include/angr-vex') + e['VEX_LIB_FILE'] = os.path.join(VEX_PATH, 'lib/libvex.so') cmd1 = ['nmake', '/f', 'Makefile-msvc'] cmd2 = ['make', '-j', str(multiprocessing.cpu_count())] cmd3 = ['gmake', '-j', str(multiprocessing.cpu_count())] - for cmd in (cmd1, cmd2, cmd3): + for cmd in (cmd3): try: if subprocess.call(cmd, cwd='pyvex_c', env=e) == 0: break @@ -112,7 +111,6 @@ def _shuffle_files(): pyvex_c_dir = os.path.join(PROJECT_DIR, 'pyvex_c') shutil.copy(os.path.join(pyvex_c_dir, LIBRARY_FILE), LIB_DIR) - shutil.copy(os.path.join(pyvex_c_dir, STATIC_LIBRARY_FILE), LIB_DIR) shutil.copy(os.path.join(pyvex_c_dir, 'pyvex.h'), INCLUDE_DIR) for f in glob.glob(os.path.join(VEX_PATH, 'pub', '*')): shutil.copy(f, INCLUDE_DIR) @@ -138,14 +136,14 @@ def _copy_sources(): def _build_ffi(): import make_ffi try: - make_ffi.doit(os.path.join(VEX_PATH, 'pub')) + make_ffi.doit(os.path.join(VEX_PATH, 'include/angr-vex')) except Exception as e: print(repr(e)) raise class build(_build): def run(self): - self.execute(_build_vex, (), msg="Building libVEX") + #self.execute(_build_vex, (), msg="Building libVEX") self.execute(_build_pyvex, (), msg="Building libpyvex") self.execute(_shuffle_files, (), msg="Copying libraries and headers") self.execute(_build_ffi, (), msg="Creating CFFI defs file")