Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make dist targets . Deploy to Github Releases and PyPI #106

Merged
merged 8 commits into from
Jan 17, 2019
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ __pycache__/
*.orig
Pyskycoin-*
eggs
wheelhouse/

*~

Expand Down
82 changes: 43 additions & 39 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,6 @@ matrix:
- PYTHON=3.7.1
- TOXENV=py37
before_install:
- if [ "$TRAVIS_OS_NAME" == 'linux' && "$TOXENV" == 'py37' && "$TRAVIS_TAG" != '' ]; then
export PYPI_DEPLOY=true ;
echo "Deploying to PYPI" ;
fi
- cd gopath/src/github.com/skycoin/skycoin && git checkout v0.25.0 && cd ${TRAVIS_BUILD_DIR}
- if [[ "$TRAVIS_OS_NAME" == 'linux' ]]; then bash ./.travis/install-linux.sh ; fi
- if [[ "$TRAVIS_OS_NAME" == 'osx' ]]; then bash ./.travis/install-osx.sh; fi
Expand All @@ -84,46 +80,54 @@ install:
- eval "$(gimme 1.10)"
before_script:
# Install PyPA Docker images for building multilinux wheels
- if [ "$PYPI_DEPLOY" = "true" ]; then docker pull quay.io/pypa/manylinux1_x86_64 ; fi
- if [ "$PYPI_DEPLOY" = "true" ]; then docker pull quay.io/pypa/manylinux1_i686 ; fi
script:
# Test PySkycoin
# Test PySkycoin
- make test-ci
- mkdir -p dist
- if [ "$PYPI_DEPLOY" = "true" ]; then
docker run --rm -v `pwd`:/io quay.io/pypa/manylinux1_x86_64 /io/travis/build-wheels.sh ;
ls wheelhouse/ ;
fi
- if [ "$PYPI_DEPLOY" = "true" ]; then
docker run --rm -v `pwd`:/io quay.io/pypa/manylinux1_i686 linux32 /io/travis/build-wheels.sh ;
ls wheelhouse/ ;
cp wheelhouse/* dist/ ;
fi
- ls dist/
after_failure:
- cat ./.tox/${TOXENV}/log/${TOXENV}-*.log
notifications:
email: false
webhooks: https://fathomless-fjord-24024.herokuapp.com/notify
before_deploy:
- echo "Generating distribution archives before deploy"
- make sdist
- make bdist_wheel
- if [ $TRAVIS_OS_NAME == "linux" && $TOXENV == "py37" ]; then make bdist_manylinux_amd64 ; fi
- ls dist
deploy:
matrix:
- provider: releases
api_key:
secure: kfY02m+bBVHJqwAoeJnLLPs2W7nis+YkfaU/Cb4IFsNlgjszHNDNZZikLdiO7TDw3XDLIPTHF0yesoeobA8oLiD8D1Z9n6eZg6fuQPBeOA2qOvBXasJNN+fZwJztSlr8yyVUp7OX+rWT0TNbDaqRI8MTJseKX7x8yIDi9Cxnkh6RIoPbvrdpmEvwlYf76ukC7Caw1IjBz/0QSML5C9U3hmkSNMGGzQh/oN4VexclDTP1Ze3DRXxXS8cSZMP8FaDSRt90AFErTJYO2hn4U3zCqL8eW6q/caL30hxdXN1xZuEwik3OfTiqB/86DOAVqJJAcpHCp1B/1JooSQ8SA0nsqTiw4CAAyR4a3cQcsbAM54kmbnTLj6GZg7OFn6MeYlsVpfx1E606uoHQjglHJZa0qPmwvEQE70gW9zxH3KGhiYLDba/ONtZWe0sc228jsrcqxQYvBfpRvizjpuEFPW2Bn6d8+C2mJzHWceAoUfvy1mhfZzYrrQJArewD55RFryqdjWpJg9RjF095rVWYCxq1Q90Xz1Ogx7f8y07MK747wYrgAiTcXnoX+pu6PzWYmK17y1N/9FamnUzmFUhv6xam7xFCAlR2yBvHnpJabgUjrcHnL3Ik7VQvZhPpHmf2M+xChZQgqOrcAAPz0mpUI4x1x1uudjas+WEO1fJBu01m6Xg=
file: dist/*
skip_cleanup: true
on:
tags: true
repo: skycoin/pyskycoin
# FIXME: Upload manylinux wheels
- provider: pypi
distributions: sdist
skip_cleanup: true
skip_existing: true
user:
secure: qPng5d9MuWToDdnABpvUvKspQJ2xj+evgBQOMxpCpXKkrp3EcJtT7VA4bi3k3RlShiKMw71+gqqpGFOO8QshRRf0qldDSzwYefUxe0/dqwuKcb77tY4yUZJtYi3MX/jmWUW0kLSedNGXv42ye4TbFxnd0yCCNVrffbIclcIapzqAECB2a61btcrLTWqaqsO5BYitEQ9VfRtv20Kx4wSjxECNGr354kYV95d74g6zF0OzxMcxha2VB4MYKQ308gX1ISF11ZuaW35ZRa81dT8/fWa9j7/xhpXVBZ6craCBtAFc3q5AcQL0FlYmhM1XFgDanhv3Uxw75mhjapyMedQFpmRT+2ej4v+Le9Etf8rxeebZRJBch0o/zw8ZRUltKSeN8comWSCwaS1NQVauhb9D0cQ7R+0ULkLkBw3E4Os+9wLWNPppw4p7v4m5SpCcD5AVeBuUFd4F9y4LNfjWGrEMfyGjcSyZqZts0xoZ3L6ta05n1vr84ah8DpQRHrMl6PeuH0dfbYRxnGEhBJcEfXZ2RmqC6EBdV1OBnWh91bUpltnwv/kG+aIhtgp/ZSQY1DukglJ2QDrXZZ0HI7TjXwYTJeScPuxsbPcluepfFrxU0K3dib8JyeJEQOfN1ioE6ln9TDGcDgTuYvBbA3ndjtqJZeWiUS7siyO9d7aE2kPZOSI=
password:
secure: Lek+1bI8jaYADO5b4oLTirI3xqdYktV/ihyGCraK+Glp/U6FwwlF3ttRpvdT9/YyVRgWEt/jePQxH+COW3WbKh54MZWCMlMKmWc4JTs6zHliAWXecAQSvPDWHjzO0F1iz839MRBfQdBUMh1g7BFi4nC886DS7ts7+p2XXGsWwtI+quOwvZ6bS0M6nMTecG8OtpYCkOAoGZI6JEoDXyIygPR5+TIWXO2QFt7KT+fsircOvDHzdA2YY/oexwUWwLLf7J0qnRm2AEx0dDjpFTCaOr6+VxdjD7F8qDoXePzVEvW7AG6k0Emx3Vuj9JiTgga8qX3ExHSXoomNhiJoOM30UbH00mdT5Fz+6HqYqFieijX/Li2fExqXXp6Za4VHMrwImrXoYQw4350F8b6QzF7E4WouBBysBZIkBEswp69783uU1lGcbU0wnyj8SN6rYIPO03MG1e5HO+Dd9avMtCMdGj3qsNlmfK0v3fAGjrYsStMQtrfOUZGTahrHPh7P3VPB4qmsJ7eNo+lFtLN0I2+ehoqMd3UH+qggdFdLQFGVMe0SWCUV9Aoyxo9vVqbnPzclsmWL44M6YRDIgOtochNiDINbdx/EA/L517GrpSDjZwvhrJkoCE7Wr9m5YcC+x8qQXCpQ4dcYAJ4C+okASAIwtjOai5dQB7TfHJfN5XzSLUI=
on:
tags: true
repo: skycoin/pyskycoin
- provider: releases
api_key:
secure: kfY02m+bBVHJqwAoeJnLLPs2W7nis+YkfaU/Cb4IFsNlgjszHNDNZZikLdiO7TDw3XDLIPTHF0yesoeobA8oLiD8D1Z9n6eZg6fuQPBeOA2qOvBXasJNN+fZwJztSlr8yyVUp7OX+rWT0TNbDaqRI8MTJseKX7x8yIDi9Cxnkh6RIoPbvrdpmEvwlYf76ukC7Caw1IjBz/0QSML5C9U3hmkSNMGGzQh/oN4VexclDTP1Ze3DRXxXS8cSZMP8FaDSRt90AFErTJYO2hn4U3zCqL8eW6q/caL30hxdXN1xZuEwik3OfTiqB/86DOAVqJJAcpHCp1B/1JooSQ8SA0nsqTiw4CAAyR4a3cQcsbAM54kmbnTLj6GZg7OFn6MeYlsVpfx1E606uoHQjglHJZa0qPmwvEQE70gW9zxH3KGhiYLDba/ONtZWe0sc228jsrcqxQYvBfpRvizjpuEFPW2Bn6d8+C2mJzHWceAoUfvy1mhfZzYrrQJArewD55RFryqdjWpJg9RjF095rVWYCxq1Q90Xz1Ogx7f8y07MK747wYrgAiTcXnoX+pu6PzWYmK17y1N/9FamnUzmFUhv6xam7xFCAlR2yBvHnpJabgUjrcHnL3Ik7VQvZhPpHmf2M+xChZQgqOrcAAPz0mpUI4x1x1uudjas+WEO1fJBu01m6Xg=
file: dist/*
skip_cleanup: true
skip_existing: true
on:
all_branches: true
tags: true
repo: skycoin/pyskycoin
- provider: pypi
distributions: sdist
skip_cleanup: true
skip_existing: true
user:
secure: qPng5d9MuWToDdnABpvUvKspQJ2xj+evgBQOMxpCpXKkrp3EcJtT7VA4bi3k3RlShiKMw71+gqqpGFOO8QshRRf0qldDSzwYefUxe0/dqwuKcb77tY4yUZJtYi3MX/jmWUW0kLSedNGXv42ye4TbFxnd0yCCNVrffbIclcIapzqAECB2a61btcrLTWqaqsO5BYitEQ9VfRtv20Kx4wSjxECNGr354kYV95d74g6zF0OzxMcxha2VB4MYKQ308gX1ISF11ZuaW35ZRa81dT8/fWa9j7/xhpXVBZ6craCBtAFc3q5AcQL0FlYmhM1XFgDanhv3Uxw75mhjapyMedQFpmRT+2ej4v+Le9Etf8rxeebZRJBch0o/zw8ZRUltKSeN8comWSCwaS1NQVauhb9D0cQ7R+0ULkLkBw3E4Os+9wLWNPppw4p7v4m5SpCcD5AVeBuUFd4F9y4LNfjWGrEMfyGjcSyZqZts0xoZ3L6ta05n1vr84ah8DpQRHrMl6PeuH0dfbYRxnGEhBJcEfXZ2RmqC6EBdV1OBnWh91bUpltnwv/kG+aIhtgp/ZSQY1DukglJ2QDrXZZ0HI7TjXwYTJeScPuxsbPcluepfFrxU0K3dib8JyeJEQOfN1ioE6ln9TDGcDgTuYvBbA3ndjtqJZeWiUS7siyO9d7aE2kPZOSI=
password:
secure: Lek+1bI8jaYADO5b4oLTirI3xqdYktV/ihyGCraK+Glp/U6FwwlF3ttRpvdT9/YyVRgWEt/jePQxH+COW3WbKh54MZWCMlMKmWc4JTs6zHliAWXecAQSvPDWHjzO0F1iz839MRBfQdBUMh1g7BFi4nC886DS7ts7+p2XXGsWwtI+quOwvZ6bS0M6nMTecG8OtpYCkOAoGZI6JEoDXyIygPR5+TIWXO2QFt7KT+fsircOvDHzdA2YY/oexwUWwLLf7J0qnRm2AEx0dDjpFTCaOr6+VxdjD7F8qDoXePzVEvW7AG6k0Emx3Vuj9JiTgga8qX3ExHSXoomNhiJoOM30UbH00mdT5Fz+6HqYqFieijX/Li2fExqXXp6Za4VHMrwImrXoYQw4350F8b6QzF7E4WouBBysBZIkBEswp69783uU1lGcbU0wnyj8SN6rYIPO03MG1e5HO+Dd9avMtCMdGj3qsNlmfK0v3fAGjrYsStMQtrfOUZGTahrHPh7P3VPB4qmsJ7eNo+lFtLN0I2+ehoqMd3UH+qggdFdLQFGVMe0SWCUV9Aoyxo9vVqbnPzclsmWL44M6YRDIgOtochNiDINbdx/EA/L517GrpSDjZwvhrJkoCE7Wr9m5YcC+x8qQXCpQ4dcYAJ4C+okASAIwtjOai5dQB7TfHJfN5XzSLUI=
on:
all_branches: true
tags: true
repo: skycoin/pyskycoin
- provider: pypi
distributions: bdist_wheel
skip_cleanup: true
skip_existing: true
user:
secure: qPng5d9MuWToDdnABpvUvKspQJ2xj+evgBQOMxpCpXKkrp3EcJtT7VA4bi3k3RlShiKMw71+gqqpGFOO8QshRRf0qldDSzwYefUxe0/dqwuKcb77tY4yUZJtYi3MX/jmWUW0kLSedNGXv42ye4TbFxnd0yCCNVrffbIclcIapzqAECB2a61btcrLTWqaqsO5BYitEQ9VfRtv20Kx4wSjxECNGr354kYV95d74g6zF0OzxMcxha2VB4MYKQ308gX1ISF11ZuaW35ZRa81dT8/fWa9j7/xhpXVBZ6craCBtAFc3q5AcQL0FlYmhM1XFgDanhv3Uxw75mhjapyMedQFpmRT+2ej4v+Le9Etf8rxeebZRJBch0o/zw8ZRUltKSeN8comWSCwaS1NQVauhb9D0cQ7R+0ULkLkBw3E4Os+9wLWNPppw4p7v4m5SpCcD5AVeBuUFd4F9y4LNfjWGrEMfyGjcSyZqZts0xoZ3L6ta05n1vr84ah8DpQRHrMl6PeuH0dfbYRxnGEhBJcEfXZ2RmqC6EBdV1OBnWh91bUpltnwv/kG+aIhtgp/ZSQY1DukglJ2QDrXZZ0HI7TjXwYTJeScPuxsbPcluepfFrxU0K3dib8JyeJEQOfN1ioE6ln9TDGcDgTuYvBbA3ndjtqJZeWiUS7siyO9d7aE2kPZOSI=
password:
secure: Lek+1bI8jaYADO5b4oLTirI3xqdYktV/ihyGCraK+Glp/U6FwwlF3ttRpvdT9/YyVRgWEt/jePQxH+COW3WbKh54MZWCMlMKmWc4JTs6zHliAWXecAQSvPDWHjzO0F1iz839MRBfQdBUMh1g7BFi4nC886DS7ts7+p2XXGsWwtI+quOwvZ6bS0M6nMTecG8OtpYCkOAoGZI6JEoDXyIygPR5+TIWXO2QFt7KT+fsircOvDHzdA2YY/oexwUWwLLf7J0qnRm2AEx0dDjpFTCaOr6+VxdjD7F8qDoXePzVEvW7AG6k0Emx3Vuj9JiTgga8qX3ExHSXoomNhiJoOM30UbH00mdT5Fz+6HqYqFieijX/Li2fExqXXp6Za4VHMrwImrXoYQw4350F8b6QzF7E4WouBBysBZIkBEswp69783uU1lGcbU0wnyj8SN6rYIPO03MG1e5HO+Dd9avMtCMdGj3qsNlmfK0v3fAGjrYsStMQtrfOUZGTahrHPh7P3VPB4qmsJ7eNo+lFtLN0I2+ehoqMd3UH+qggdFdLQFGVMe0SWCUV9Aoyxo9vVqbnPzclsmWL44M6YRDIgOtochNiDINbdx/EA/L517GrpSDjZwvhrJkoCE7Wr9m5YcC+x8qQXCpQ4dcYAJ4C+okASAIwtjOai5dQB7TfHJfN5XzSLUI=
on:
all_branches: true
tags: true
repo: skycoin/pyskycoin
condition: $TRAVIS_OS_NAME = "osx"
# TODO: Upload manylinux wheels to PyPI
14 changes: 4 additions & 10 deletions .travis/build_wheels.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
#!/bin/bash
set -e -x

# Install a system package required by our library
yum install -y atlas-devel

sh /io/.travis/install_linux.sh
# Install system packages required by our library
yum install -y sudo pcre pcre-devel
mkdir -p "$HOME/bin"
PIP=/opt/python/cp27-cp27m/bin/pip source /io/.travis/install-linux.sh
eval "$(gimme 1.10)"

# Compile wheels
Expand All @@ -18,9 +18,3 @@ for whl in wheelhouse/*.whl; do
auditwheel repair "$whl" -w /io/wheelhouse/
done

# Install packages and test
for PYBIN in /opt/python/*/bin/; do
"${PYBIN}/pip" install pyskycoin --no-index -f /io/wheelhouse
(cd /io ; "${PYBIN}/python" -m pytest tests --showlocals )
done

12 changes: 12 additions & 0 deletions .travis/check_wheels.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@

#!/bin/bash
set -e -x

# Code that follows assumes that wheels have been generated by build_wheels.sh

# Install packages and test
for PYBIN in /opt/python/*/bin/; do
"${PYBIN}/pip" install pyskycoin --no-index -f /io/wheelhouse
(cd /io ; "${PYBIN}/python" -m pytest --showlocals tests )
done

17 changes: 11 additions & 6 deletions .travis/install-linux.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,27 @@

set -ev

# Environment checks
if [ "$PIP" == "" ]; then
export PIP='python -m pip'
fi

# Repository root path
REPO_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )/.."
echo "Install Linux packages from $REPO_ROOT"

# Install gimme
curl -sL -o ~/bin/gimme https://raw.githubusercontent.com/travis-ci/gimme/master/gimme
chmod +x ~/bin/gimme
curl -sL -o "$HOME/bin/gimme" https://raw.githubusercontent.com/travis-ci/gimme/master/gimme
chmod +x "$HOME/bin/gimme"

#Install Python libraries
python -m pip install --upgrade pip setuptools tox-travis
python -m pip install -r "$REPO_ROOT/requirements.dev.txt"
# Install Python libraries
$PIP install --upgrade pip setuptools tox-travis
$PIP install -r "$REPO_ROOT/requirements.dev.txt"

# Compile SWIG
mkdir swig_build && \
cd swig_build && \
wget http://prdownloads.sourceforge.net/swig/swig-3.0.12.tar.gz && \
curl -sL -o "swig-3.0.12.tar.gz" http://prdownloads.sourceforge.net/swig/swig-3.0.12.tar.gz && \
tar -zxf swig-3.0.12.tar.gz && \
cd swig-3.0.12 && \
sudo ./configure --prefix=/usr && \
Expand Down
28 changes: 28 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ BUILDLIBC_DIR = $(SKYBUILD_DIR)/libskycoin
LIBC_DIR = $(SKYCOIN_DIR)/lib/cgo
LIBSWIG_DIR = swig
BUILD_DIR = build
DIST_DIR = dist
BIN_DIR = $(SKYCOIN_DIR)/bin
INCLUDE_DIR = $(SKYCOIN_DIR)/include
FULL_PATH_LIB = $(PWD)/$(BUILDLIBC_DIR)
Expand All @@ -33,6 +34,7 @@ endif
configure: ## Configure build environment
mkdir -p $(BUILD_DIR)/usr/tmp $(BUILD_DIR)/usr/lib $(BUILD_DIR)/usr/include
mkdir -p $(BUILDLIBC_DIR) $(BIN_DIR) $(INCLUDE_DIR)
mkdir -p $(DIST_DIR)

$(BUILDLIBC_DIR)/libskycoin.a: $(LIB_FILES) $(SRC_FILES) $(HEADER_FILES)
rm -f $(BUILDLIBC_DIR)/libskycoin.a
Expand Down Expand Up @@ -76,5 +78,31 @@ test-ci: ## Run tests on (Travis) CI build
test: build-libc build-swig develop ## Run project test suite
$(PYTHON_BIN) setup.py test

sdist: ## Create source distribution archive
$(PYTHON_BIN) setup.py sdist --formats=gztar

bdist_wheel: ## Create architecture-specific binary wheel distribution archive
$(PYTHON_BIN) setup.py bdist_wheel

# FIXME: After libskycoin 32-bits binaries add bdist_manylinux_i686
bdist_manylinux: bdist_manylinux_amd64 ## Create multilinux binary wheel distribution archives

bdist_manylinux_amd64: ## Create 64 bits multilinux binary wheel distribution archives
docker pull quay.io/pypa/manylinux1_x86_64
docker run --rm -t -v $(PWD):/io quay.io/pypa/manylinux1_x86_64 /io/.travis/build_wheels.sh
ls wheelhouse/
cp -v wheelhouse/* $(DIST_DIR)

bdist_manylinux_i686: ## Create 32 bits multilinux binary wheel distribution archives
docker pull quay.io/pypa/manylinux1_i686
docker run --rm -t -v $(PWD):/io quay.io/pypa/manylinux1_i686 linux32 /io/.travis/build_wheels.sh
ls wheelhouse/
cp -v wheelhouse/* $(DIST_DIR)

dist: sdist bdist_wheel bdist_manylinux_amd64 ## Create distribution archives

check-dist: dist ## Perform self-tests upon distributions archives
docker run --rm -t -v $(PWD):/io quay.io/pypa/manylinux1_i686 linux32 /io/.travis/check_wheels.sh

help: ## List available commands
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
2 changes: 1 addition & 1 deletion skycoin/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = "0.25.0"
__version__ = "0.25.0.post1"
init_error = None

def _print2stderr(msg):
Expand Down