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

Move install.sodium into nacl proper and switch to using it

parent 66aa1183
No related branches found
No related tags found
No related merge requests found
...@@ -6,10 +6,9 @@ python: ...@@ -6,10 +6,9 @@ python:
- "3.3" - "3.3"
# - "pypy" # Travis only has PyPy 1.9, cffi requires 2.0 (Unreleased) # - "pypy" # Travis only has PyPy 1.9, cffi requires 2.0 (Unreleased)
install: install:
- sudo apt-get -q install python-pip - pip install invoke
- sudo /usr/bin/pip -q install git+git://github.com/pyinvoke/invoke.git - pip install file://$PWD#egg=pynacl[tests]
- invoke install.sodium - invoke sodium.install
- invoke install.requirements --dev
script: script:
- invoke tests - invoke tests
env: env:
......
import hashlib
import os
try:
from urllib.request import urlopen
except ImportError:
from urllib2 import urlopen
from invoke import task, run
LIBSODIUM_VERSION = "0.3"
LIBSODIUM_URL = "http://download.dnscrypt.org/libsodium/releases/libsodium-0.3.tar.gz"
LIBSODIUM_HASH = b"908a26f84bedb432305c81ec6773aa95b8e724ba2ece6234840685a74e033750"
@task
def install():
path = os.path.expanduser("~/libsodium-%s.tar.gz" % LIBSODIUM_VERSION)
# Download libsodium and verify it's hash
resp = urlopen(LIBSODIUM_URL)
content = resp.read()
content_hash = hashlib.sha256(content).hexdigest()
# Verify our content matches the expected hash
if content_hash != LIBSODIUM_HASH:
raise ValueError("Hash mismatch for downloaded sodium")
# Write out the tarball
with open(path, "wb") as fp:
fp.write(content)
curdir = os.getcwd()
try:
os.chdir(os.path.expanduser("~/"))
# Unpack the tarball
run("tar xf libsodium-%s.tar.gz" % LIBSODIUM_VERSION)
# Configure and install the library
os.chdir(os.path.expanduser("~/libsodium-%s/" % LIBSODIUM_VERSION))
run("./configure --disable-debug --disable-dependency-tracking",
hide="out",
)
run("make", hide="out")
run("sudo make install", hide="out")
finally:
os.chdir(curdir)
...@@ -50,6 +50,7 @@ setup( ...@@ -50,6 +50,7 @@ setup(
packages=[ packages=[
"nacl", "nacl",
"nacl.invoke",
], ],
ext_package="nacl", ext_package="nacl",
......
import hashlib from invoke import Collection, task, run
import os
import urllib2
from invoke import task, run from nacl.invoke import sodium
ns = Collection()
LIBSODIUM_VERSION = "0.3" ns.add_collection(sodium)
LIBSODIUM_URL = "http://download.dnscrypt.org/libsodium/releases/libsodium-0.3.tar.gz"
LIBSODIUM_HASH = b"908a26f84bedb432305c81ec6773aa95b8e724ba2ece6234840685a74e033750"
LIBSODIUM_AUTOGEN = False
@task(aliases=["install.sodium"])
def install_sodium():
tarball_path = os.path.expanduser(
"~/libsodium-{}.tar.gz".format(LIBSODIUM_VERSION),
)
# Download libsodium and verify it's hash
resp = urllib2.urlopen(LIBSODIUM_URL)
content = resp.read()
content_hash = hashlib.sha256(content).hexdigest()
if content_hash != LIBSODIUM_HASH:
raise ValueError("Hash mismatch for downloaded libsodium")
with open(tarball_path, "wb") as fp:
fp.write(content)
curdir = os.getcwd()
try:
os.chdir(os.path.expanduser("~/"))
# Unpack the tarball
run("tar xf libsodium-{}.tar.gz".format(LIBSODIUM_VERSION))
# Configure and install the library
os.chdir(os.path.expanduser(
"~/libsodium-{}/".format(LIBSODIUM_VERSION),
))
if LIBSODIUM_AUTOGEN:
run("./autogen.sh", hide="out")
run("./configure --disable-debug --disable-dependency-tracking",
hide="out",
)
run("make", hide="out")
run("sudo make install", hide="out")
finally:
os.chdir(curdir)
@task(aliases=["install.requirements"])
def install_requirements(dev=False):
if dev:
# Install once to get the tests extra
run("pip install file://$PWD#egg=pynacl[tests]")
# Install again to get an editable install
run("pip install -e .")
else:
run("pip install .")
@ns.add_task
@task @task
def tests(): def tests():
run("py.test") run("py.test")
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