language: rust
dist: xenial
env:
global:
# Change this to the name of your binary
- BINARY_NAME="pyo3-pack"
- PKG_CONFIG_ALLOW_CROSS=1 # For openssl-sys
- secure: xxDBiPcL7jDjbnKJ3R0UzTTjaWdITGBHUB7SmjKAy5WPk8Eyx/BgYwGBv2F4/EfSOoOOF+HSUfegXV70r+UHA8OyZtb+h9RLrcBsnEvnrBo2FylQCzz8JeoTdHJikvhH8H9oEbb4jQpwy85r5xDK3+8dMkD2nDjf5vfctblMyShayNTzyMX9DkG5OqZnJ0CXaPzPrtrMXEw3hPpMpyTYBqnZhNVK5IHzXA8kR+6WKgkrf+X/48Or3TDys9ufdO3mEazgxfLJ6WHESQFONYtjT67++rkBNB0jYXf+bFjW2OaEl9Qa8ZHevbWZcJkb3dlW9ktbPnhBmjw14a6Oqhu1w5x2DGVp9196vRwPzXi5YCFXbw93OurF2cDS4NVCk5vZKKuKZvHa6LdS6zVh31uwdOYa5AUK9mYLpwsW0B8k/YyBjea9pkskyBeLXzKpYXgplbMzyqnJZMoiHimeLlHMNNSUlJqKVinDEEEukazABJvN6xcbUunvKj8nQpNVdVg0NPcmMQ2R7CLOJTkhLYqnq+CsX8nTmH5PSh/XxA7NkTfbbibxpWqHp0QDLCFltK23rGAAhs0WkvXF8lSaUSpl7DksA3CfNUn2eI2k+iWao8OD7gu0pFeVOHxND4fuT8Jy8nILySwsECyB0LECPNr++Ymz6+xMHrlaIpGBkCGQXcY=
addons:
apt:
sources:
- deadsnakes
packages:
- libdbus-1-dev
- musl-tools
- fakeroot
- python3.5-dev
- python3.5-venv
- python3.6-dev
- python3.6-venv
- python3.7-dev
- python3.7-venv
matrix:
fast_finish: true
include:
# These create deployments; Apparently there is not 32 bit mac os
- os: linux
rust: stable
env: TARGET=x86_64-unknown-linux-musl DEPLOY=1
- os: osx
rust: stable
env: TARGET=x86_64-apple-darwin DEPLOY=1
- os: linux
rust: stable
env: TARGET=i686-unknown-linux-musl DEPLOY=1
addons:
apt:
sources:
- deadsnakes
packages:
- fakeroot
- python3.5-dev
- python3.6-dev
- python3.6-venv
- python3.7-dev
- libdbus-1-dev:i386
- libgmp-dev:i386
- binutils:i386
# We actually only need musl-tools:i386 and gcc-multilib, but we need the others to get apt to install them
- cpp-4.8:i386
- musl:i386
- musl-tools:i386
- gcc-multilib:i386
- gcc:i386
- cpp:i386
# Those are run rust tests
- os: linux
rust: nightly-2019-05-04
env: TARGET=x86_64-unknown-linux-gnu
- os: osx
rust: nightly-2019-05-04
env: TARGET=x86_64-apple-darwin
# Run clippy and rustfmt
- name: stylecheck
os: linux
rust: stable
install:
- rustup component add clippy
- rustup component add rustfmt
script:
- cargo fmt --all -- --check
- cargo clippy -- -D warnings
# Test docker
- os: linux
install:
- docker build . -t pyo3-pack
script:
- ./test-dockerfile.sh
install:
# Both pyenv and travis are weird; Mac os can't do virtualenv out of venv, linux needs a venv, so this
# is the source of this mess
- |
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
brew update
brew upgrade pyenv
pyenv install 3.6.6
pyenv global system 3.6.6
python3.6 -m pip install cffi virtualenv
fi
- |
if [ "$TRAVIS_OS_NAME" == "linux" ]; then
python3.6 -m venv venv
source venv/bin/activate
pip install cffi virtualenv
fi
script:
- if [[ "$TARGET" == *musl ]]; then rustup target add $TARGET; fi
- |
if [ "$TRAVIS_RUST_VERSION" == "stable" ]; then
cargo test --features skip-nightly-tests
else
cargo test
fi
before_deploy: bash ci/before_deploy.sh
deploy:
- # Add zipped binary to the github release
provider: releases
file_glob: true
file:
- $TRAVIS_BUILD_DIR/$BINARY_NAME-$TRAVIS_TAG-$TARGET.*
- $TRAVIS_BUILD_DIR/$BINARY_NAME*.deb
skip_cleanup: true
on: # Create downloads only with stable rust and only for stable releases
condition: $DEPLOY = 1
tags: true
# - Create a `public_repo` GitHub token at https://github.com/settings/tokens/new
# . If you haven't already, install the travis gem: `gem install TRAVIS_TAG`
# - Encrypt it with `travis encrypt 0123456789012345678901234567890123456789`
# - Paste the output down here
api_key:
secure: "bKY3J8FBwgit9inzp2CMxQC3icBVco+COcRnqM6NhaOWX3KefXYG/yWQ7htBkeTRAfQERlOkZZOPsOto2dAD49/Mo4Uin9wbRPjPDGPJpFcQofX5aKHqK1Xd1k96rtZKZRIEG5k5J2IKAzPso3GnA0FESAZlZbxEShSCBD6aOlVmjFXwB2kKzJDo9zECxCg84GSvR/7wQg4hwMaMBa79y3VJRCohGTMaISL22QJ0haG+gqZgTv/r9K8P9lwSMBIiTXX3wFJU871sqUNTSSwkmHlVLhVUOwluv+KQ2DI/V/gWfx2CuiZ/7OQlz4zkOB/Y56msH0G7vOwqbSHLwkMYC+zgDWvF0oI/Eb/mdY5VliQdsLDOkKwWm3EuoEUvCgyV9UB1POxxogIx1sAU+Vt9QUj5/cRIJc1zrtA3LdNlbg9M9rYG8jJ6JMbeYTFDTL6YNoHc2lPAdmAqQAZQy6vyR515vm76JfS7yDcLRXKKhLE4dEPUEpv0qU8vCA/FdaZaiW+GJZSS5rJoE0vHaMRsWkgFLqCNSDpUZBd2x60E+n6dQ7XX4DrJ1JmzcG+IZ6AfuIWyRD9s3jQBxRjtyM61ZGo3Nb4zwX2ML1PftNURNAo8rPlgIrqPaveic45hP6PAeX+iMIWzTckq8shlYngjBTw/3UmA8Z18udrRyKCbygs="
branches:
only:
# Pushes to the master branch
- master
# Match release tags with a regex
- /^v\d+\.\d+\.\d+.*$/
notifications:
email: false