Compare commits

...

6 Commits

Author SHA1 Message Date
Florian Bruhin
9b4d6a8f89 Release v0.8.4 2016-11-06 00:44:24 +01:00
Florian Bruhin
baeb374589 Fix changelog 2016-11-06 00:43:27 +01:00
Florian Bruhin
26cfac60d4 Move config import in keyconf.py 2016-11-06 00:08:40 +01:00
Florian Bruhin
f9d5af3546 Update freeze.py from master 2016-11-05 23:50:16 +01:00
Florian Bruhin
bd7cefddd5 Fix GitHub filename 2016-11-05 23:36:11 +01:00
Florian Bruhin
e925e8a059 Update build_release.py from master 2016-11-05 23:09:47 +01:00
6 changed files with 93 additions and 24 deletions

View File

@@ -32,7 +32,6 @@ Fixed
- The tabbar now displays correctly with the Adwaita Qt theme
- The default `sk` keybinding now sets the commandline to `:bind` correctly
- Fixed crash when closing a window without focusing it
- Userscripts now can access QUTE_FIFO correctly on Windows
v0.8.2
------

View File

@@ -28,7 +28,7 @@ __copyright__ = "Copyright 2014-2016 Florian Bruhin (The Compiler)"
__license__ = "GPL"
__maintainer__ = __author__
__email__ = "mail@qutebrowser.org"
__version_info__ = (0, 8, 3)
__version_info__ = (0, 8, 4)
__version__ = '.'.join(str(e) for e in __version_info__)
__description__ = "A keyboard-driven, vim-like browser based on PyQt5 and QtWebKit."

View File

@@ -25,7 +25,7 @@ import itertools
from PyQt5.QtCore import pyqtSignal, QObject
from qutebrowser.config import configdata, textwrapper, config
from qutebrowser.config import configdata, textwrapper
from qutebrowser.commands import cmdutils, cmdexc
from qutebrowser.utils import log, utils, qtutils, message, usertypes
@@ -335,6 +335,7 @@ class KeyConfigParser(QObject):
def _validate_command(self, line):
"""Check if a given command is valid."""
from qutebrowser.config import config
if line == self.UNBOUND_COMMAND:
return
commands = line.split(';;')

View File

@@ -104,9 +104,12 @@ def build_osx():
for d in ['dist', 'build']:
shutil.rmtree(d)
dmg_name = 'qutebrowser-{}.dmg'.format(qutebrowser.__version__)
os.rename('qutebrowser.dmg', dmg_name)
utils.print_title("Running smoke test")
with tempfile.TemporaryDirectory() as tmpdir:
subprocess.check_call(['hdiutil', 'attach', 'qutebrowser.dmg',
subprocess.check_call(['hdiutil', 'attach', dmg_name,
'-mountpoint', tmpdir])
try:
binary = os.path.join(tmpdir, 'qutebrowser.app', 'Contents',
@@ -115,6 +118,8 @@ def build_osx():
finally:
subprocess.check_call(['hdiutil', 'detach', tmpdir])
return [(dmg_name, 'application/x-apple-diskimage', 'OS X .dmg')]
def build_windows():
"""Build windows executables/setups."""
@@ -128,6 +133,8 @@ def build_windows():
python_x86 = r'C:\Python{}_x32'.format(ver)
python_x64 = r'C:\Python{}'.format(ver)
artifacts = []
utils.print_title("Rebuilding tox environment")
call_tox('cxfreeze-windows', '-r', '--notest')
utils.print_title("Running 32bit freeze.py build_exe")
@@ -139,15 +146,21 @@ def build_windows():
utils.print_title("Running 64bit freeze.py bdist_msi")
call_tox('cxfreeze-windows', 'bdist_msi', python=python_x64)
name_32 = 'qutebrowser-{}-win32.msi'.format(qutebrowser.__version__)
name_64 = 'qutebrowser-{}-amd64.msi'.format(qutebrowser.__version__)
artifacts += [
(os.path.join('dist', name_32), 'application/x-msi',
'Windows 32bit installer'),
(os.path.join('dist', name_64), 'application/x-msi',
'Windows 64bit installer'),
]
utils.print_title("Running 32bit smoke test")
smoke_test('build/exe.win32-{}/qutebrowser.exe'.format(dotver))
utils.print_title("Running 64bit smoke test")
smoke_test('build/exe.win-amd64-{}/qutebrowser.exe'.format(dotver))
destdir = os.path.join('dist', 'zip')
_maybe_remove(destdir)
os.makedirs(destdir)
basedirname = 'qutebrowser-{}'.format(qutebrowser.__version__)
builddir = os.path.join('build', basedirname)
_maybe_remove(builddir)
@@ -157,26 +170,24 @@ def build_windows():
qutebrowser.__version__)
origin = os.path.join('build', 'exe.win32-{}'.format(dotver))
os.rename(origin, builddir)
shutil.make_archive(os.path.join(destdir, name), 'zip', 'build',
basedirname)
shutil.make_archive(name, 'zip', 'build', basedirname)
shutil.rmtree(builddir)
artifacts.append(('{}.zip'.format(name),
'application/zip',
'Windows 32bit standalone'))
utils.print_title("Zipping 64bit standalone...")
name = 'qutebrowser-{}-windows-standalone-amd64'.format(
qutebrowser.__version__)
origin = os.path.join('build', 'exe.win-amd64-{}'.format(dotver))
os.rename(origin, builddir)
shutil.make_archive(os.path.join(destdir, name), 'zip', 'build',
basedirname)
shutil.make_archive(name, 'zip', 'build', basedirname)
shutil.rmtree(builddir)
artifacts.append(('{}.zip'.format(name),
'application/zip',
'Windows 64bit standalone'))
utils.print_title("Creating final zip...")
shutil.move(os.path.join('dist', 'qutebrowser-{}-amd64.msi'.format(
qutebrowser.__version__)), os.path.join('dist', 'zip'))
shutil.move(os.path.join('dist', 'qutebrowser-{}-win32.msi'.format(
qutebrowser.__version__)), os.path.join('dist', 'zip'))
shutil.make_archive('qutebrowser-{}-windows'.format(
qutebrowser.__version__), 'zip', destdir)
return artifacts
def build_sdist():
@@ -210,6 +221,51 @@ def build_sdist():
utils.print_subtitle(ext)
print('\n'.join(files))
filename = 'qutebrowser-{}.tar.gz'.format(qutebrowser.__version__)
artifacts = [
(os.path.join('dist', filename), 'application/gzip', 'Source release'),
(os.path.join('dist', filename + '.asc'), 'application/pgp-signature',
'Source release - PGP signature'),
]
return artifacts
def github_upload(artifacts, tag):
"""Upload the given artifacts to GitHub.
Args:
artifacts: A list of (filename, mimetype, description) tuples
tag: The name of the release tag
"""
import github3
utils.print_title("Uploading to github...")
token_file = os.path.join(os.path.expanduser('~'), '.gh_token')
with open(token_file, encoding='ascii') as f:
token = f.read().strip()
gh = github3.login(token=token)
repo = gh.repository('The-Compiler', 'qutebrowser')
release = None # to satisfy pylint
for release in repo.iter_releases():
if release.tag_name == tag:
break
else:
raise Exception("No release found for {!r}!".format(tag))
for filename, mimetype, description in artifacts:
with open(filename, 'rb') as f:
basename = os.path.basename(filename)
asset = release.upload_asset(mimetype, basename, f)
asset.edit(basename, description)
def pypi_upload(artifacts):
"""Upload the given artifacts to PyPI using twine."""
filenames = [a[0] for a in artifacts]
subprocess.check_call(['twine', 'upload'] + filenames)
def main():
parser = argparse.ArgumentParser()
@@ -217,9 +273,13 @@ def main():
"asciidoc.py. If not given, it's searched in PATH.",
nargs=2, required=False,
metavar=('PYTHON', 'ASCIIDOC'))
parser.add_argument('--upload', help="Tag to upload the release for",
nargs=1, required=False, metavar='TAG')
args = parser.parse_args()
utils.change_cwd()
upload_to_pypi = False
if os.name == 'nt':
if sys.maxsize > 2**32:
# WORKAROUND
@@ -230,12 +290,20 @@ def main():
print("https://github.com/pypa/virtualenv/issues/774")
sys.exit(1)
run_asciidoc2html(args)
build_windows()
artifacts = build_windows()
elif sys.platform == 'darwin':
run_asciidoc2html(args)
build_osx()
artifacts = build_osx()
else:
build_sdist()
artifacts = build_sdist()
upload_to_pypi = True
if args.upload is not None:
utils.print_title("Press enter to release...")
input()
github_upload(artifacts, args.upload[0])
if upload_to_pypi:
pypi_upload(artifacts)
if __name__ == '__main__':

View File

@@ -100,7 +100,8 @@ def get_build_exe_options(skip_html=False):
'excludes': ['tkinter'],
'packages': ['pygments', 'pkg_resources._vendor.packaging',
'pkg_resources._vendor.pyparsing',
'pkg_resources._vendor.six'],
'pkg_resources._vendor.six',
'pkg_resources._vendor.appdirs'],
}

View File

@@ -335,7 +335,7 @@ class TestDefaultConfig:
If it did change, place a new qutebrowser-vx.y.z.conf in old_configs
and then increment the version.
"""
assert qutebrowser.__version__ == '0.8.3'
assert qutebrowser.__version__ == '0.8.4'
@pytest.mark.parametrize('filename',
os.listdir(os.path.join(os.path.dirname(__file__), 'old_configs')),