Skip to content
Snippets Groups Projects
Commit 06640dca authored by Donald Stufft's avatar Donald Stufft
Browse files

Bundle a tarballed of libsodium

parent 06f70dbf
No related branches found
No related tags found
No related merge requests found
File added
...@@ -2,7 +2,10 @@ ...@@ -2,7 +2,10 @@
import sys import sys
import os.path import os.path
import shlex import shlex
import shutil
import subprocess import subprocess
import tarfile
import tempfile
from distutils.command.build_clib import build_clib as _build_clib from distutils.command.build_clib import build_clib as _build_clib
...@@ -12,6 +15,9 @@ from setuptools.command.test import test as TestCommand ...@@ -12,6 +15,9 @@ from setuptools.command.test import test as TestCommand
import nacl import nacl
SODIUM_VERSION = "0.4.3"
def here(*paths): def here(*paths):
return os.path.abspath(os.path.join(os.path.dirname(__file__), *paths)) return os.path.abspath(os.path.join(os.path.dirname(__file__), *paths))
...@@ -24,21 +30,40 @@ except ImportError: ...@@ -24,21 +30,40 @@ except ImportError:
else: else:
# building bdist - cffi is here! # building bdist - cffi is here!
ext_modules = [nacl.nacl.ffi.verifier.get_extension()] 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): class build_clib(_build_clib):
def run(self): 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 # Run ./configure
subprocess.check_call( subprocess.check_call(
"./configure --disable-debug --disable-dependency-tracking", "./configure --disable-debug --disable-dependency-tracking",
cwd=here("libsodium"), cwd=here("build/sodium"),
shell=True, shell=True,
) )
# Parse the Makefile to determine what macros to define # 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: for line in makefile:
if line.startswith("DEFS"): if line.startswith("DEFS"):
defines = [ defines = [
...@@ -89,7 +114,7 @@ class build_clib(_build_clib): ...@@ -89,7 +114,7 @@ class build_clib(_build_clib):
# Expand out all of the sources to their full path # Expand out all of the sources to their full path
sources = [ sources = [
here("libsodium/src/libsodium", s) for s in sources here("build/sodium/src/libsodium", s) for s in sources
] ]
build_info["sources"] = sources build_info["sources"] = sources
...@@ -153,7 +178,7 @@ setup( ...@@ -153,7 +178,7 @@ setup(
libraries=[ libraries=[
("sodium", { ("sodium", {
"include_dirs": [ "include_dirs": [
here("libsodium/src/libsodium/include/sodium"), here("build/sodium/src/libsodium/include/sodium"),
], ],
"sources": [ "sources": [
"crypto_auth/crypto_auth.c", "crypto_auth/crypto_auth.c",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment