diff --git a/libsodium-0.4.3.tar.gz b/libsodium-0.4.3.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..897dfc79235399aea2e1aff155d1c32d7f845870 Binary files /dev/null and b/libsodium-0.4.3.tar.gz differ diff --git a/setup.py b/setup.py index 82f5c4dce48bb1085eb33f4e900fb943468d8adf..d3fb5de411cdbf3ff8e4a65e2b2322545250a8ee 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,10 @@ import sys import os.path import shlex +import shutil import subprocess +import tarfile +import tempfile from distutils.command.build_clib import build_clib as _build_clib @@ -12,6 +15,9 @@ from setuptools.command.test import test as TestCommand import nacl +SODIUM_VERSION = "0.4.3" + + def here(*paths): return os.path.abspath(os.path.join(os.path.dirname(__file__), *paths)) @@ -24,21 +30,40 @@ except ImportError: else: # building bdist - cffi is here! ext_modules = [nacl.nacl.ffi.verifier.get_extension()] - ext_modules[0].include_dirs.append(here("libsodium/src/libsodium/include")) + ext_modules[0].include_dirs.append(here("build/sodium/src/libsodium/include")) class build_clib(_build_clib): def run(self): + # Unpack the Libsodium Tarball + sourcefile = tarfile.open( + here("libsodium-%s.tar.gz" % SODIUM_VERSION), + ) + + tmpdir = tempfile.mkdtemp() + try: + sourcefile.extractall(tmpdir) + + # Copy our installed directory into the build location + shutil.rmtree(here("build/sodium")) + shutil.copytree( + os.path.join(tmpdir, "libsodium-%s" % SODIUM_VERSION), + here("build/sodium") + ) + finally: + shutil.rmtree(tmpdir, ignore_errors=True) + sourcefile.close() + # Run ./configure subprocess.check_call( "./configure --disable-debug --disable-dependency-tracking", - cwd=here("libsodium"), + cwd=here("build/sodium"), shell=True, ) # Parse the Makefile to determine what macros to define - with open(here("libsodium/Makefile")) as makefile: + with open(here("build/sodium/Makefile")) as makefile: for line in makefile: if line.startswith("DEFS"): defines = [ @@ -89,7 +114,7 @@ class build_clib(_build_clib): # Expand out all of the sources to their full path sources = [ - here("libsodium/src/libsodium", s) for s in sources + here("build/sodium/src/libsodium", s) for s in sources ] build_info["sources"] = sources @@ -153,7 +178,7 @@ setup( libraries=[ ("sodium", { "include_dirs": [ - here("libsodium/src/libsodium/include/sodium"), + here("build/sodium/src/libsodium/include/sodium"), ], "sources": [ "crypto_auth/crypto_auth.c",