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

Merge pull request #18 from dstufft/invoke-support

Add proper invoke support and cleanup our usage
parents 66aa1183 53677a32
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 binascii
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()
# Cannot use .hexdigest() here because Python 3 is stupid and returns
# a unciode string when you ask it for a hex encoded digest.
content_hash = binascii.hexlify(hashlib.sha256(content).digest())
# 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.
Please register or to comment