diff --git a/CONTRIBUTE.rst b/CONTRIBUTE.rst index db67c73..d88b837 100644 --- a/CONTRIBUTE.rst +++ b/CONTRIBUTE.rst @@ -36,5 +36,5 @@ Here is small amount rule when you want to send patch the project; CI tests ========= -The project configured to use Azure Pipelines, Travis-CI and CoverAlls for regression test. +The project configured to use Azure Pipelines, Github actions and Coveralls for regression test. You can see test results on badge and see details in a web page linked from badge. diff --git a/LICENSE b/LICENSE index 22a2568..e9b5487 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,7 @@ MIT License Copyright (C) 2018 Linus Jahn -Copyright (C) 2019 Hirshi Miura +Copyright (C) 2019-2021 Hirshi Miura Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/aqt/__init__.py b/aqt/__init__.py index 10752ee..82f4df8 100644 --- a/aqt/__init__.py +++ b/aqt/__init__.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # # Copyright (C) 2018 Linus Jahn -# Copyright (C) 2019, 2020 Hiroshi Miura +# Copyright (C) 2019-2021 Hiroshi Miura # # Permission is hereby granted, free of charge, to any person obtaining a copy of # this software and associated documentation files (the "Software"), to deal in diff --git a/aqt/__main__.py b/aqt/__main__.py index 9f0982a..c025df4 100644 --- a/aqt/__main__.py +++ b/aqt/__main__.py @@ -1,7 +1,6 @@ #!/usr/bin/env python # -# Copyright (C) 2018 Linus Jahn -# Copyright (C) 2019 Hiroshi Miura +# Copyright (C) 2019-2021 Hiroshi Miura # # Permission is hereby granted, free of charge, to any person obtaining a copy of # this software and associated documentation files (the "Software"), to deal in diff --git a/aqt/archives.py b/aqt/archives.py index 0f8d268..fef9a85 100644 --- a/aqt/archives.py +++ b/aqt/archives.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # # Copyright (C) 2018 Linus Jahn -# Copyright (C) 2019-2020 Hiroshi Miura +# Copyright (C) 2019-2021 Hiroshi Miura # # Permission is hereby granted, free of charge, to any person obtaining a copy of # this software and associated documentation files (the "Software"), to deal in @@ -122,7 +122,10 @@ class PackagesList: class QtArchives: - """Hold Qt archive packages list.""" + """Download and hold Qt archive packages list. + It access to download.qt.io site and get Update.xml file. + It parse XML file and store metadata into list of QtPackage object. + """ def __init__(self, os_name, target, version, arch, base, subarchives=None, modules=None, logging=None, all_extra=False, timeout=(5, 5)): @@ -239,7 +242,8 @@ class QtArchives: class SrcDocExamplesArchives(QtArchives): - """Hold doc/src/example archive package list.""" + """Hold doc/src/example archive package list. + """ def __init__(self, flavor, os_name, target, version, base, subarchives=None, modules=None, logging=None, all_extra=False, timeout=(5, 5)): @@ -267,7 +271,7 @@ class SrcDocExamplesArchives(QtArchives): def get_target_config(self) -> TargetConfig: """Get target configuration. - :return tuple of three parameter, "Tools", target and arch + :return tuple of three parameter, "src_doc_examples", target and arch """ return TargetConfig("src_doc_examples", self.target, self.arch, self.os_name) diff --git a/aqt/helper.py b/aqt/helper.py index 9cdc7d9..41a9f42 100644 --- a/aqt/helper.py +++ b/aqt/helper.py @@ -1,3 +1,24 @@ +#!/usr/bin/env python +# +# Copyright (C) 2019-2021 Hiroshi Miura +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + import ast import configparser import json @@ -21,9 +42,9 @@ def _check_content_type(ct: str) -> bool: def altlink(url: str, alt: str, logger=None): - '''Blacklisting redirected(alt) location based on Settings.blacklist configuration. + """Blacklisting redirected(alt) location based on Settings.blacklist configuration. When found black url, then try download a url + .meta4 that is a metalink version4 - xml file, parse it and retrieve best alternative url.''' + xml file, parse it and retrieve best alternative url.""" if logger is None: logger = logging.getLogger(__name__) blacklist = Settings().blacklist # type: Optional[List[str]] diff --git a/aqt/installer.py b/aqt/installer.py index 3446f08..0f6df2c 100644 --- a/aqt/installer.py +++ b/aqt/installer.py @@ -1,8 +1,8 @@ #!/usr/bin/env python3 # # Copyright (C) 2018 Linus Jahn -# Copyright (C) 2019-2020 Hiroshi Miura -# Copyright (C) 2020, Aurélien Gâteau# +# Copyright (C) 2019-2021 Hiroshi Miura +# Copyright (C) 2020, Aurélien Gâteau # # Permission is hereby granted, free of charge, to any person obtaining a copy of # this software and associated documentation files (the "Software"), to deal in @@ -166,6 +166,7 @@ class Cli: pool.starmap(installer, tasks) def run_install(self, args): + """Run install subcommand""" start_time = time.perf_counter() arch = args.arch target = args.target @@ -259,15 +260,19 @@ class Cli: self.logger.info("Time elapsed: {time:.8f} second".format(time=time.perf_counter() - start_time)) def run_src(self, args): + """Run src subcommand""" self._run_src_doc_examples('src', args) def run_examples(self, args): + """Run example subcommand""" self._run_src_doc_examples('examples', args) def run_doc(self, args): + """Run doc subcommand""" self._run_src_doc_examples('doc', args) def run_tool(self, args): + """Run tool subcommand""" start_time = time.perf_counter() arch = args.arch tool_name = args.tool_name @@ -303,6 +308,7 @@ class Cli: self.logger.info("Time elapsed: {time:.8f} second".format(time=time.perf_counter() - start_time)) def run_list(self, args): + """Run list subcommand""" self.show_aqt_version() qt_version = args.qt_version host = args.host @@ -324,9 +330,11 @@ class Cli: print(table.draw()) def show_help(self, args): + """Display help message""" self.parser.print_help() def show_aqt_version(self): + """Display version information""" dist = importlib_metadata.distribution('aqtinstall') module_name = dist.entry_points[0].name py_version = platform.python_version() @@ -442,6 +450,10 @@ class Cli: def installer(qt_archive, base_dir, command, response_timeout=30): + """ + Installer function to download archive files and extract it. + It is called through multiprocessing.Pool() + """ name = qt_archive.name url = qt_archive.url archive = qt_archive.archive @@ -498,7 +510,10 @@ def installer(qt_archive, base_dir, command, response_timeout=30): def finisher(target, base_dir, logger): - """Make Qt configuration files, qt.conf and qtconfig.pri""" + """ + Make Qt configuration files, qt.conf and qtconfig.pri. + Call updater to update pkgconfig and patch Qt5Core and qmake + """ qt_version = target.version arch = target.arch if arch is None: diff --git a/aqt/updater.py b/aqt/updater.py index 45f8063..844ab35 100644 --- a/aqt/updater.py +++ b/aqt/updater.py @@ -1,3 +1,24 @@ +#!/usr/bin/env python +# +# Copyright (C) 2019-2021 Hiroshi Miura +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + import os import pathlib import subprocess diff --git a/docs/authors.rst b/docs/authors.rst index 57aceff..1703755 100644 --- a/docs/authors.rst +++ b/docs/authors.rst @@ -9,11 +9,22 @@ Aqtinstall is written and maintained by Hiroshi Miura Original qli-installer is written by Linus Jahn +Utilize for Github Actions recipe and many feedback by Benjamin O + Contributors, listed alphabetically, are: +* Andrei Yankovich (tools ifw installation) +* Aurélien Gâteau (patching to qmake, #100) * Gamso (improve parsing of update.xml) * Kyle Altendorf (7z binary path search) -* Martin Delille +* Martin Delille (Document) +* Mizux Seihax (Qt versions) * Nelson Chen (CI tests) -* Skycoder42 (Explicit extra module installation) -* Thomas Grainger +* pylipp (Document) +* Felix Barz (Android, Explicit extra module installation) +* Sztergbaum Roman +* Thomas Grainger (CLI entry point) +* Vadim Peretokin (Version database) +* ypnos (Document) + +and many other participants and contributors. \ No newline at end of file diff --git a/docs/available_versions.rst b/docs/available_versions.rst new file mode 100644 index 0000000..1adb497 --- /dev/null +++ b/docs/available_versions.rst @@ -0,0 +1,207 @@ +:tocdepth: 2 + +.. _available_versions: + +Available Qt versions(Informative) +================================== + +Here is an available combinations of Qt versions and platforms. +It is based on contents at https://download.qt.io/ as in January, 2021. +It may be changed by The Qt Foundation. + +Linux +===== + +desktop +------- + ++---------+---------------------------------------------+ +| Variant | Qt Versions | ++=========+=============================================+ +| gcc_64 | 5.15.2 | +| wasm_32 | 5.15.1 5.15.0 | +| | 5.14.2 5.14.1 5.14.0 | +| | 5.13.2 5.13.1 | ++---------+---------------------------------------------+ +| | 6.0.1 6.0.0 5.13.0 | +| gcc_64 | 5.12.9 5.12.8 5.12.7 5.12.6 5.12.5 5.12.4 | +| | 5.12.3 5.12.2 5.12.1 5.12.0 | +| | 5.11.3 5.11.2 5.11.1 5.11.0 | +| | 5.10.1 5.10.0 | +| | 5.9.9 5.9.8 5.9.7 5.9.6 5.9.5 | ++---------+---------------------------------------------+ + +android +------- + ++-------------------+---------------------------------------------+ +| Variant | Qt Versions | ++===================+=============================================+ +| android_armv7 | 6.0.1 6.0 | +| android_arm64_v8a | | +| android_x86 | | +| android_x86_64 | | ++-------------------+---------------------------------------------+ +| android_armv7 | 5.15.2 5.15.1 5.15.0 | +| android_x86 | 5.14.2 5.14.1 5.14.0 | +| | 5.13.2 5.13.1 5.13.0 | +| | 5.12.9 5.12.8 5.12.7 5.12.6 5.12.5 5.12.4 | +| | 5.12.3 5.12.2 5.12.1 5.12.0 | +| | 5.11.3 5.11.2 5.11.1 5.11.0 | +| | 5.10.1 5.10.0 | +| | 5.9.9 5.9.8 5.9.7 5.9.6 5.9.5 | ++-------------------+---------------------------------------------+ + + +mac +=== + +desktop +------- + ++---------+---------------------------------------------+ +| Variant | Qt Versions | ++=========+=============================================+ +| clang_64| | +| wasm_32 | 5.15.2 5.15.1 5.15.0 | +| | 5.14.2 5.14.1 5.14.0 | +| | 5.13.2 5.13.1 | ++---------+---------------------------------------------+ +| | 6.0.1 6.0.0 | +| | 5.13.0 | +| clang_64| 5.12.9 5.12.8 5.12.7 5.12.6 5.12.5 5.12.4 | +| | 5.12.3 5.12.2 5.12.1 5.12.0 | +| | 5.11.3 5.11.2 5.11.1 5.11.0 | +| | 5.10.1 5.10.0 | +| | 5.9.9 5.9.8 5.9.7 5.9.6 5.9.5 | ++---------+---------------------------------------------+ + +android +------- + ++-------------------+---------------------------------------------+ +| Variant | Qt Versions | ++===================+=============================================+ +| android_armv7 | 6.0.1 6.0 | +| android_arm64_v8a | | +| android_x86 | | +| android_x86_64 | | ++-------------------+---------------------------------------------+ +| android_armv7 | 5.15.2 5.15.1 5.15.0 | +| android_x86 | 5.14.2 5.14.1 5.14.0 | +| | 5.13.2 5.13.1 5.13.0 | +| | 5.12.9 5.12.8 5.12.7 5.12.6 5.12.5 5.12.4 | +| | 5.12.3 5.12.2 5.12.1 5.12.0 | +| | 5.11.3 5.11.2 5.11.1 5.11.0 | +| | 5.10.1 5.10.0 | +| | 5.9.9 5.9.8 5.9.7 5.9.6 5.9.5 | ++-------------------+---------------------------------------------+ + +ios +--- + ++-------------------+---------------------------------------------+ +| Variant | Qt Versions | ++===================+=============================================+ +| ios | 6.0.1 6.0 | +| | 5.15.2 5.15.1 5.15.0 | +| | 5.14.2 5.14.1 5.14.0 | +| | 5.13.2 5.13.1 5.13.0 | +| | 5.12.9 5.12.8 5.12.7 5.12.6 5.12.5 5.12.4 | +| | 5.12.3 5.12.2 5.12.1 5.12.0 | +| | 5.11.3 5.11.2 5.11.1 5.11.0 | +| | 5.10.1 5.10.0 | +| | 5.9.9 5.9.8 5.9.7 5.9.6 5.9.5 | ++-------------------+---------------------------------------------+ + +windows +======= + +desktop +------- + ++--------------------+---------------------------------------------+ +| Variant | Qt Versions | ++====================+=============================================+ +| win32_mingw81 | 6.0.1 6.0.0 | +| win64_msvc2019_64 | | ++--------------------+---------------------------------------------+ +| win32_mingw81 | 5.15.2 5.15.1 5.15.0 | +| win32_msvc2019 | | +| win64_msvc2015_64 | | +| win64_msvc2019_64 | | +| wasm_32 | | ++--------------------+---------------------------------------------+ +| win32_mingw73 | 5.14.2 5.14.1 5.14.0 | +| win32_msvc2017 | 5.13.2 5.13.1 | +| win64_msvc2015_64 | | +| win64_msvc2017_64 | | +| wasm_32 | | ++--------------------+---------------------------------------------+ +| win32_mingw73 | 5.13.0 | +| win32_msvc2017 | 5.12.9 5.12.8 5.12.7 5.12.6 5.12.5 5.12.4 | +| win64_msvc2015_64 | 5.12.3 5.12.2 5.12.1 5.12.0 | +| win64_msvc2017_64 | | ++--------------------+---------------------------------------------+ +| win32_mingw53 | 5.11.3 5.11.2 5.11.1 5.11.0 | +| win32_msvc2015 | | +| win64_msvc2015_64 | | +| win64_msvc2017_64 | | ++--------------------+---------------------------------------------+ +| win32_mingw53 | 5.10.1 5.10.0 | +| win32_msvc2015 | 5.9.9 5.9.8 5.9.7 5.9.6 5.9.5 | +| win64_msvc2013_64 | | +| win64_msvc2015_64 | | +| win64_msvc2017_64 | | ++--------------------+---------------------------------------------+ + +winrt +----- + + ++----------------------------+-------------------------------------+ +| Variant | Qt Versions | ++============================+=====================================+ +| win64_msvc2015_winrt_armv7 | 5.15.2 5.15.1 5.15.0 | +| win64_msvc2015_winrt_x64 | | +| win64_msvc2019_winrt_armv7 | | +| win64_msvc2019_winrt_x64 | | +| win64_msvc2019_winrt_x86 | | ++--------------------+---------------------------------------------+ +| win64_msvc2015_winrt_armv7 | 5.14.2 5.14.1 5.14.0 | +| win64_msvc2015_winrt_x64 | 5.13.2 5.13.1 5.13.0 | +| | 5.12.9 5.12.8 5.12.7 5.12.6 5.12.5 5.12.4 | +| | 5.12.3 5.12.2 5.12.1 5.12.0 | +| win64_msvc2017_winrt_armv7 | | +| win64_msvc2017_winrt_x64 | | +| win64_msvc2017_winrt_x86 | | ++--------------------+---------------------------------------------+ +| win64_msvc2015_winrt_armv7 | 5.11.2 5.11.1 5.11.0 | +| win64_msvc2015_winrt_x64 | 5.10.1 5.10.0 | +| win64_msvc2015_winrt_x86 | 5.9.9 5.9.8 5.9.7 5.9.6 5.9.5 | +| win64_msvc2017_winrt_armv7 | | +| win64_msvc2017_winrt_x64 | | +| win64_msvc2017_winrt_x86 | | ++--------------------+---------------------------------------------+ + +android +------- + ++-------------------+---------------------------------------------+ +| Variant | Qt Versions | ++===================+=============================================+ +| android_armv7 | 6.0.1 6.0 | +| android_arm64_v8a | | +| android_x86 | | +| android_x86_64 | | ++-------------------+---------------------------------------------+ +| android_armv7 | 5.15.2 5.15.1 5.15.0 | +| android_x86 | 5.14.2 5.14.1 5.14.0 | +| | 5.13.2 5.13.1 5.13.0 | +| | 5.12.9 5.12.8 5.12.7 5.12.6 5.12.5 5.12.4 | +| | 5.12.3 5.12.2 5.12.1 5.12.0 | +| | 5.11.3 5.11.2 5.11.1 5.11.0 | +| | 5.10.1 5.10.0 | +| | 5.9.9 5.9.8 5.9.7 5.9.6 5.9.5 | ++-------------------+---------------------------------------------+ + diff --git a/docs/cli.rst b/docs/cli.rst index b21dff6..0ad0ae0 100644 --- a/docs/cli.rst +++ b/docs/cli.rst @@ -17,9 +17,10 @@ long options may be truncated to the shortest unambiguous abbreviation. show generic help -.. option:: install +.. option:: install install Qt library specified version and target. + There are various combinations to accept according to Qt version. .. describe:: Qt version @@ -31,17 +32,17 @@ long options may be truncated to the shortest unambiguous abbreviation. .. describe:: target variant - desktop or android + desktop, ios or android -.. describe:: target environment +.. describe:: target architecture * gcc_64 for linux desktop - * clang_64 for mac desktip + * clang_64 for mac desktop - * win64_msvc2019_64, win64_msvc2017_64, win64_msvc2015_64, in32_msvc2015, win32_mingw53 for windows desktop + * win64_msvc2019_64, win64_msvc2017_64, win64_msvc2015_64, win32_msvc2015, win32_mingw53 for windows desktop - * android_x86, android_armv7 for android + * android_armv7, android_arm64_v8a, android_x86, android_x86_64 for android .. option:: --version, -v @@ -71,8 +72,10 @@ long options may be truncated to the shortest unambiguous abbreviation. .. option:: --archives - [Advanced] specify subset of archives to limit installed archvies. - + [Advanced] Specify subset of archives to **limit** installed archives. + This is advanced option and not recommended to use for general usage. + Main purpose is speed up CI/CD process by limiting installed modules. + It can cause broken installation of Qt SDK. .. option:: src @@ -89,8 +92,10 @@ long options may be truncated to the shortest unambiguous abbreviation. install Qt examples specified version and target. -.. option:: tools +.. option:: tool install tools specified. tool name may be 'tools_openssl_x64', 'tools_ninja', 'tools_ifw', 'tools_cmake' and tool variants name may be 'qt.tools.openssl.gcc_64', 'qt.tools.ninja', 'qt.tools.ifw.32', 'qt.tools.cmake'. You may need to looking for version number at https://download.qt.io/online/qtsdkrepository/ + + diff --git a/docs/conf.py b/docs/conf.py index df0857e..d824ffe 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -30,8 +30,11 @@ import os # ones. extensions = [ 'sphinx.ext.autodoc', + 'sphinx.ext.doctest', 'sphinx.ext.coverage', 'sphinx.ext.extlinks', + 'sphinx.ext.viewcode', + 'sphinx.ext.graphviz', ] # Add any paths that contain templates here, relative to this directory. @@ -50,7 +53,7 @@ master_doc = 'index' # General information about the project. project = u'aqtinstall' -copyright = u'2019, Hiroshi Miura' +copyright = u'2019-2021, Hiroshi Miura' author = u'Hiroshi Miura' # The version info for the project you're documenting, acts as replacement for @@ -58,9 +61,9 @@ author = u'Hiroshi Miura' # built documents. # # The short X.Y version. -version = u'0.5' +version = u'1.0' # The full version, including alpha/beta/rc tags. -release = u'0.5b2' +release = u'1.0.0b2' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docs/index.rst b/docs/index.rst index e53a9ac..d1638bd 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,5 +1,5 @@ -Welcome to aqtinstall's documentation! -====================================== +aqtinstall manual +================= Contents: @@ -7,6 +7,7 @@ Contents: :maxdepth: 2 cli + available_versions internals changes devguide diff --git a/docs/internals.rst b/docs/internals.rst index da0c2e7..2b73fbd 100644 --- a/docs/internals.rst +++ b/docs/internals.rst @@ -7,27 +7,28 @@ Internals .. _archives-objects: -Archives module ---------------- - -.. automodule:: aqt.archives - :members: - :undoc-members: - :inherited-members: - :show-inheritance: - - Installer module ---------------- .. automodule:: aqt.installer :members: + :inherited-members: + :show-inheritance: -Cli module ----------- +Archives module +--------------- -.. autoclass:: aqt.cli.Cli +.. automodule:: aqt.archives + :members: + :inherited-members: + :show-inheritance: + + +Updater module +-------------- + +.. automodule:: aqt.updater :members: @@ -37,9 +38,3 @@ Helper module .. automodule:: aqt.helper :members: - -QtPatch module --------------- - -.. automodule:: aqt.qtpatch - :members: diff --git a/setup.cfg b/setup.cfg index 6b1878d..1644998 100644 --- a/setup.cfg +++ b/setup.cfg @@ -69,3 +69,4 @@ check = docs = sphinx>=1.8 sphinx_rtd_theme + sphinx-py3doc-enhanced-theme \ No newline at end of file