diff --git a/.gitignore b/.gitignore index 85233aa2f..b41285fd3 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,4 @@ TODO /scripts/testbrowser/cpp/webengine/testbrowser /scripts/testbrowser/cpp/webengine/.qmake.stash /scripts/dev/pylint_checkers/qute_pylint.egg-info +/misc/file_version_info.txt diff --git a/misc/qutebrowser.spec b/misc/qutebrowser.spec index 8029e2a44..c886fb0c4 100644 --- a/misc/qutebrowser.spec +++ b/misc/qutebrowser.spec @@ -59,7 +59,8 @@ exe = EXE(pyz, debug=False, strip=False, upx=False, - console=False ) + console=False, + version='misc/file_version_info.txt') coll = COLLECT(exe, a.binaries, a.zipfiles, diff --git a/scripts/dev/build_release.py b/scripts/dev/build_release.py index 84e897eee..68d148747 100755 --- a/scripts/dev/build_release.py +++ b/scripts/dev/build_release.py @@ -40,6 +40,7 @@ sys.path.insert(0, os.path.join(os.path.dirname(__file__), os.pardir, import qutebrowser from scripts import utils # from scripts.dev import update_3rdparty +from scripts.dev import gen_versioninfo def call_script(name, *args, python=sys.executable): @@ -232,6 +233,9 @@ def build_windows(): artifacts = [] + utils.print_title("Updating VersionInfo file") + gen_versioninfo.main() + utils.print_title("Running pyinstaller 32bit") _maybe_remove(out_32) call_tox('pyinstaller', '-r', python=python_x86) diff --git a/scripts/dev/gen_versioninfo.py b/scripts/dev/gen_versioninfo.py new file mode 100644 index 000000000..29b86a59b --- /dev/null +++ b/scripts/dev/gen_versioninfo.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 +# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et: + +# Copyright 2018 Florian Bruhin (The Compiler) +# +# This file is part of qutebrowser. +# +# qutebrowser is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# qutebrowser is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with qutebrowser. If not, see . + +"""Generate file_version_info.txt for Pyinstaller use with Windows builds.""" + +import os.path +import sys + +from PyInstaller.utils.win32 import versioninfo as vs + +sys.path.insert(0, os.path.join(os.path.dirname(__file__), os.pardir, + os.pardir)) + +import qutebrowser +from scripts import utils + + +def main(): + utils.change_cwd() + out_filename = 'misc/file_version_info.txt' + + filevers = qutebrowser.__version_info__ + (0,) + prodvers = qutebrowser.__version_info__ + (0,) + str_filevers = qutebrowser.__version__ + str_prodvers = qutebrowser.__version__ + + comment_text = qutebrowser.__doc__ + copyright_text = qutebrowser.__copyright__ + trademark_text = "qutebrowser is free software under the GNU General Public License" + + ffi = vs.FixedFileInfo(filevers, prodvers) + + kids = [vs.StringFileInfo( + [vs.StringTable('040904B0', + [vs.StringStruct('Comments', comment_text), + vs.StringStruct('CompanyName', "qutebrowser.org"), + vs.StringStruct('FileDescription', "qutebrowser"), + vs.StringStruct('FileVersion', str_filevers), + vs.StringStruct('InternalName', "qutebrowser"), + vs.StringStruct('LegalCopyright', copyright_text), + vs.StringStruct('LegalTrademarks', trademark_text), + vs.StringStruct('OriginalFilename', "qutebrowser.exe"), + vs.StringStruct('ProductName', "qutebrowser"), + vs.StringStruct('ProductVersion', str_prodvers)])]), + vs.VarFileInfo([vs.VarStruct('Translation', [1033, 1200])])] + + file_version_info = vs.VSVersionInfo(ffi, kids) + + with open(out_filename, 'w', encoding='utf-8') as f: + f.write(str(file_version_info)) + + +if __name__ == '__main__': + main()