Use build_release.py to build sdist on Linux.

See #1091.
This commit is contained in:
Florian Bruhin 2016-01-05 06:49:43 +01:00
parent 8d63f2bf93
commit 8ab0b5b4ac
2 changed files with 45 additions and 9 deletions

View File

@ -558,13 +558,12 @@ New PyQt release
qutebrowser release
~~~~~~~~~~~~~~~~~~~
* Make sure there are no unstaged changes.
* Run `src2asciidoc.py` and commit changes if necessary.
* Make sure there are no unstaged changes and the tests are green.
* Run `asciidoc2html.py`.
* Adjust `__version_info__` in `qutebrowser/__init__.py`.
* Remove *(unreleased)* from changelog.
* Run all tests on all supported systems.
* Run tests again
* Run `asciidoc2html.py`.
* Commit
* Create annotated git tag (`git tag -s "v0.X.Y" -m "Release v0.X.Y"`)
@ -575,8 +574,7 @@ qutebrowser release
* Mark the milestone at https://github.com/The-Compiler/qutebrowser/milestones
as closed.
* Build sdist: `python3 setup.py sdist --sign`
* Sign: `gpg --detach-sign -a dist/qutebrowser-0.X.Y.tar.gz`
* Run `scripts/dev/build_release.py` on Linux to build an sdist
* Upload to PyPI: `twine upload dist/foo{,.asc}`
* Create Windows packages via `scripts/dev/build_release.py` and upload.

View File

@ -27,6 +27,9 @@ import os.path
import shutil
import subprocess
import argparse
import tarfile
import collections
import shutil
sys.path.insert(0, os.path.join(os.path.dirname(__file__), os.pardir,
os.pardir))
@ -61,7 +64,7 @@ def call_freeze(*args, python=sys.executable):
env=env)
def build_common(args):
def run_asciidoc2html(args):
"""Common buildsteps used for all OS'."""
utils.print_title("Running asciidoc2html.py")
if args.asciidoc is not None:
@ -87,6 +90,7 @@ def smoke_test(executable):
def build_windows():
"""Build windows executables/setups."""
utils.print_title("Building Windows binaries")
parts = str(sys.version_info.major), str(sys.version_info.minor)
ver = ''.join(parts)
dotver = '.'.join(parts)
@ -142,6 +146,39 @@ def build_windows():
qutebrowser.__version__), 'zip', destdir)
def build_sdist():
"""Build an sdist and list the contents."""
utils.print_title("Building sdist")
shutil.rmtree('dist')
subprocess.check_call([sys.executable, 'setup.py', 'sdist'])
dist_files = os.listdir(os.path.abspath('dist'))
assert len(dist_files) == 1
dist_file = os.path.join('dist', dist_files[0])
subprocess.check_call(['gpg', '--detach-sign', '-a', dist_file])
tar = tarfile.open(dist_file)
by_ext = collections.defaultdict(list)
for tarinfo in tar.getmembers():
if not tarinfo.isfile():
continue
name = os.sep.join(tarinfo.name.split(os.sep)[1:])
_base, ext = os.path.splitext(name)
by_ext[ext].append(name)
assert '.pyc' not in by_ext
utils.print_title("sdist contents")
for ext, files in sorted(by_ext.items()):
utils.print_subtitle(ext)
print('\n'.join(files))
def main():
"""Main entry point."""
parser = argparse.ArgumentParser()
@ -151,6 +188,7 @@ def main():
metavar=('PYTHON', 'ASCIIDOC'))
args = parser.parse_args()
utils.change_cwd()
if os.name == 'nt':
if sys.maxsize > 2**32:
# WORKAROUND
@ -160,10 +198,10 @@ def main():
print("See http://bugs.python.org/issue24493 and ")
print("https://github.com/pypa/virtualenv/issues/774")
sys.exit(1)
build_common(args)
run_asciidoc2html(args)
build_windows()
else:
print("This script does nothing except on Windows currently.")
build_sdist()
if __name__ == '__main__':