build sdist/wheel only once for both Github and PyPI

This makes sure we upload the same files to Github Releases and PyPI.

Currently we were building them twice, with the risk of different files
being uploaded to the two repositories.
This commit is contained in:
Cosimo Lupo 2016-12-26 19:36:08 +00:00
parent 9a28b61e3c
commit 61ab1e7f6d
No known key found for this signature in database
GPG Key ID: B61AAAD0B53A6419
4 changed files with 52 additions and 4 deletions

View File

@ -59,7 +59,8 @@ deploy:
user: anthrotype
password:
secure: Dz3x8kh4ergBV6qZUgcGVDOEzjoCEFzzQiO5WVw4Zfi04DD8+d1ghmMz2BY4UvoVKSsFrfKDuEB3MCWyqewJsf/zoZQczk/vnWVFjERROieyO1Ckzpz/WkCvbjtniIE0lxzB7zorSV+kGI9VigGAaRlXJyU7mCFojeAFqD6cjS4=
distributions: "sdist bdist_wheel"
skip_cleanup: true
distributions: pass
on:
tags: true
repo: fonttools/fonttools

View File

@ -3,7 +3,13 @@
set -e
set -x
if [[ $BUILD_DIST == true ]]; then
python -m pip install --upgrade wheel
python setup.py sdist bdist_wheel
# build sdist and wheel distribution packages in ./dist folder.
# Travis runs the `before_deploy` stage before each deployment, but
# we only want to build them once, as we want to use the same
# files for both Github and PyPI
if $(ls ./dist/fonttools*.zip > /dev/null 2>&1) && \
$(ls ./dist/fonttools*.whl > /dev/null 2>&1); then
echo "Distribution packages already exists; skipping"
else
tox -e bdist
fi

View File

@ -239,6 +239,26 @@ class release(Command):
return u"".join(changes)
class PassCommand(Command):
""" This is used with Travis `dpl` tool so that it skips creating sdist
and wheel packages, but simply uploads to PyPI the files found in ./dist
folder, that were previously built inside the tox 'bdist' environment.
This ensures that the same files are uploaded to Github Releases and PyPI.
"""
description = "do nothing"
user_options = []
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
pass
setup(
name="fonttools",
version="3.4.1.dev0",
@ -272,6 +292,7 @@ setup(
},
cmdclass={
"release": release,
'pass': PassCommand,
},
**classifiers
)

20
tox.ini
View File

@ -44,3 +44,23 @@ ignore_outcome = true
commands =
coverage combine
codecov --env TOXENV
[testenv:bdist]
basepython = {env:TOXPYTHON:python3.5}
deps =
setuptools
wheel
skip_install = true
install_command =
# make sure we use the latest setuptools and wheel
pip install --upgrade {opts} {packages}
whitelist_externals =
rm
commands =
# clean up build/ and dist/ folders
rm -rf {toxinidir}/dist
python setup.py clean --all
# build sdist
python setup.py sdist --dist-dir {toxinidir}/dist
# build wheel from sdist
pip wheel -v --no-deps --no-index --wheel-dir {toxinidir}/dist --find-links {toxinidir}/dist fonttools