Another unofficial Qt installer
Project description
Another Qt installer(aqt)
Jobs |
Mac Linux Windows Mirror |
Release Status |
Status |
This is a utility alternative to the official graphical Qt installer, for using in CI environment where an interactive UI is not usable such as Github Actions, Travis-CI, CircleCI, Azure-Pipelines, AppVeyor and others.
It can automatically download prebuilt Qt binaries for any target (you’re not bound to Linux binaries on Linux; you could also download iOS binaries). It’s working with Python > 3.5 on Linux, OS X and Windows.
License and copyright
This program is distributed under MIT license.
Qt SDK and its related files are under its licenses. When using aqtinstall, you are considered to agree upon Qt licenses. aqtinstall installs Qt SDK as of a (L)GPL Free Software.
For details see Qt licensing and Licenses used in Qt5
Install
Same as usual, it can be installed with pip
$ pip install aqtinstall
Usage
General usage looks like this:
aqt [-h][--help][-O | --outputdir <directory>][-b | --base <mirror url>][-E | --external <7zip command>] \
install <qt-version> <host> <target> [<arch>] [-m all | -m [extra module] [extra module]...] [--internal] [--archives archive]
You can also call with python -m aqt syntax as well as command script aqt.
The Qt version is formatted like this: 5.11.3
Host is one of: linux, mac, windows
Target is one of: desktop, android, ios (iOS only works with mac host)
- For some platforms you also need to specify an arch:
- For windows, choose one of:
win64_msvc2019_64, win32_msvc2019,
win64_msvc2017_64, win32_msvc2017,
win64_msvc2015_64, win32_msvc2015,
win64_mingw81, win32_mingw81,
win64_mingw73, win32_mingw73,
win64_mingw53, win32_mingw53,
win64_msvc2019_winrt_x64, win64_msvc2019_winrt_x86, win64_msvc2019_winrt_armv7
win64_msvc2017_winrt_x64, win64_msvc2017_winrt_x86, win64_msvc2017_winrt_armv7
For android and Qt 5.13 or below, choose one of: android_x86_64, android_arm64_v8a, android_x86, android_armv7
You can specify external 7zip command path instead of built-in extractor.
When specifying all for extra modules option -m all extra modules are installed.
Installing tool and utility (Experimental)
You can install tools and utilities using following syntax;
python -m aqt [-h][--help][-O | --outputdir <directory>][-b | --base <mirror url>][-E | --external <7zip command>] \
tool <host> <tool_name> <tool-version> <arch>
tool_name is one of tools_ifw, tools_vcredist, and tools_openssl.
arch is full qualified tool name such as qt.tools.ifw.31 which values can be seen on Qt archive_site This is a quite experimental feature, may not work and please use it with your understanding of what you are doing.
It does not recognize ‘installscript.qs’. When using tools which depends on a qt script, you should do something by yourself.
Target directory
aqt can take option ‘–outputdir’ or ‘-O’ that specify a target directory.
The Qt packages are installed under current directory as such Qt/<ver>/gcc_64/ If you want to install it in C:Qt as same as standard gui installer default, run such as follows:
C:\> mkdir Qt
C:\> aqt install --outputdir c:\Qt 5.11.3 windows desktop win64_msvc2019_64
Command examples
Example: Installing Qt SDK 5.12.0 for Linux with QtCharts and QtNetworkAuth:
pip install aqtinstall
sudo aqt install --outputdir /opt 5.12.0 linux desktop -m qtcharts qtnetworkauth
Example: Installing Android (armv7) Qt 5.10.2:
aqt install 5.10.2 linux android android_armv7
Example: Install examples, doc and source:
C:\ aqt examples 5.15.0 windows desktop -m qtcharts qtnetworkauth
C:\ aqt doc 5.15.0 windows desktop -m qtcharts qtnetworkauth
C:\ aqt src 5.15.0 windows desktop
Example: Install Web Assembly
aqt install 5.15.0 linux desktop wasm_32
Example: Install an Install FrameWork (IFW):
aqt tool linux tools_ifw 3.1.1 qt.tools.ifw.31
Example: Install vcredist:
C:\ aqt tool windows tools_vcredist 2019-02-13-1 qt.tools.vcredist_msvc2019_x64
C:\ .\Qt\Tools\vcredist\vcredist_msvc2019_x64.exe /norestart /q
Example: Install MinGW on Windows
C:\ aqt tool -O c:\Qt windows tools_mingw 8.1.0-1-202004170606 qt.tools.win64_mingw810w
c:\ set PATH=C:\Qt\Tools\mingw810_64\bin
Example: Show help message
aqt help
Environment Variables
It is users task to set some environment variables to fit your platform such as
export PATH=/path/to/qt/x.x.x/clang_64/bin/:$PATH
export QT_PLUGIN_PATH=/path/to/qt/x.x.x/clang_64/plugins/
export QML_IMPORT_PATH=/path/to/qt/x.x.x/clang_64/qml/
export QML2_IMPORT_PATH=/path/to/qt/x.x.x/clang_64/qml/
aqtinstall never do it for you because not to break multiple installation versions.
Supported CI platforms
There are no limitation for CI platform but currently it is tested on Azure Pipelines and Github actions. If you want to use it with Github actions, install_qt action will help you.
Use cases
GitHub Actions: install_qt
Docker image: docker aqtinstall
PyQt5 Tools: pyqt5-tools
Yet another comic reader: YACReader utilize on Azure-Pipelines
Media and articles
Contributor Nelson’s blog article: Fast and lightweight headless Qt Installer from Qt Mirrors: aqtinstall
Lostdomain.org blog: Using Azure DevOps Pipelines with Qt
Qt Forum: Automatic installation for Travis CI (or any other CI)
History
This program is originally shown in Kaidan project as a name qli-installer. A project aqtinstall extend the original to run with standard python features with Linux, Mac and Windows, to be tested on CI platform, and to improve performance with a concurrent downloading.
aqtinstall changeLog
All notable changes to this project will be documented in this file.
Current changes
Unreleased
Added
Changed
Fixed
Deprecated
Removed
Security
v0.9.8 (4, Nov. 2020)
Added
Added new combinations for tools_ifw
v0.9.7 (4, Oct. 2020)
Added
Support Qt 5.15.1
Add list command. (#161)
Fixed
When we start an installation, all packages are downloaded whatever the specified platform.(#159)
v0.9.6 (7, Sep. 2020)
Changed
setup: set minimum required python version as >=3.6.
v0.9.5 (18, Aug. 2020)
Fixed
Fix error when install tools_openssl_src (#153)
v0.9.4 (2, Aug. 2020)
Fixed
Fixed CRC32 error when installing Qt5.7.(#149)
v0.9.3 (1, Aug. 2020)
Fixed
- Fixed failure when installing Qt5.7 which archives use 7zip(LZMA1+BCJ), that is supported
by py7zr v0.9 and later.(#149,#150)
v0.9.2 (19, June. 2020)
Added
Add Qt6 as a known version. (#144)
Fixed
Support package directory ‘qt6_*’ as well as ‘qt5_*’ (#145)
v0.9.1 (13, June. 2020)
Changed
Do not raise exception when specified combination is not found on downloaded meta data.
Update document for developers.
v0.9.0 (31, May. 2020)
Added
New subcommand doc/src/example to install each components.(#137, 138)
Doc: Add CLI example for tools, doc, examples and src.
Changed
Refactoring to reduce code duplication in archives.py
Explicitly call QtInstall.finalize() only when Qt library installation.
Fixed
Show help when launched without any argument (#136)
v0.9.0b3 (21, May. 2020)
Changed
Patch qmake when finishing installation.(#100) qmake has a hard-coded prefix path, and aqt modify binary in finish phase. it is not necessary for Qt 5.14.2, 5.15.0 and later. This behavior try to be as same as a Qt installer framework doing.
Patch Framework.QtCore when finishing installation.(#100) As same as qmake, framework also has a hard-coded prefix path. (Suggestions from @agateau)
v0.9.0b2 (21, May. 2020)
Added
CLI: ‘–archives’ option: it takes multiple module names such as qtbase, qtsvg etc. This is an advanced option to specify subset of target installation. There is no guarantee it works. It is not recommended if you are unknown what is doing.
v0.9.0b1 (10, May. 2020)
Added
Support installation of Qt version for msvc2019
Add knowlege of components combination on 5.14 and 5.15
Changed
Show detailed diagnose message when error happend.
CI test with Qt 5.14.2 and 5.15.0
CI test with installed mingw tools compiler.
Depends on py7zr v0.7.0b2 and later.
Fixed
Tools: Fix mingw installation failure.
Fix –outputdir behavior about path separator on windows
v0.8 (26, Mar. 2020)
Fixed
docs: fix broken link for qli-installer
v0.8b1 (12, Mar. 2020)
Added
Support specifing config with environment variable AQT_CONFIG
Fixed
Fix to use concurrency settings
v0.8a4 (6, Mar., 2020)
Fixed
Import-metadata package is required in python version < 3.8 not 3.7.
Refactoring redirect helper function to improve connection error checks and error message.(#109)
v0.8a3 (5, Mar., 2020)
Changed
Improve error messages when command argument is wrong.
Fixed
Work around for http://download.qt.io/ returns wrong metalink xml data.(#105, #106)
v0.8a1 (28, Feb., 2020)
Changed
Allow path search for 7z (#96)
Simplify multithreading using concurrent.futures.ThreadPoolExecutor().
Fixed
Detect exception on each download and extraction threads.
Race condition error happend on py7zr. require py7zr>=0.5.3.(#97)
v0.7.4 (15, Feb., 2020)
Changed
requirement of py7zr version become >0.6b2 which fixed a multiprocessing problem.
v0.7.3 (14, Feb., 2020)
Added
Github Actions workflows for publishing.
Changed
Remove run script from source. Now it is automatically generated when build.(#85)
Update requirement py7zr >=0.5
Fixed
README: fix reStructured text syntax.
v0.7.2 (11, Feb., 2020)
Changed
- Replace ‘multiprocessing.dummy’ with ‘concurrent.futures’.
download with multi-threading(I/O bound)
extract with multi-processing(CPU bound)
Fixed
‘-E | –external’ option handling which cause path is not str error.
v0.7.1 (13, Jan., 2020)
Fixed
Fix installation of extra modules for Qt5.9.
v0.7 (13, Jan., 2020)
Changed
Move project metadata to setup.cfg from setup.py.
v0.7b1 (10, Jan., 2020)
Changed
Bamp up dependency py7zr >=v0.5b5.
Use py7zr in default to extract packages.
Drop –internal command line option.
v0.7a2 (7, Jan., 2020)
Added
Add special module name ‘all’ for extra module option.
Fixed
CI conditions, update target version.
v0.7a1 (29, Nov., 2019)
Added
Introduce helper module.
Introduce ‘settings.ini’ file which has a configuration for aqt module.
Changed
Version numbering with setuptools_scm.
Now don’t install extra modules when installing ‘wasm_32’ arch. You should explicitly specify it with ‘-m’ option.
Fixed
Error when mirror site is not http, but https and ftp.
v0.6b1 (23, Nov., 2019)
Changed
Just warn when argument combination check is failed.
CI: Compress sample project for build test with 7zip.
CI: Place sample script in ci directory.
v0.6a2 (19, Nov., 2019)
Added
Test: Unit test against command line.
Android target variants.
Changed
Use logging configuration with logging.ini
Fixed
qconfig.pri: fix QT_LICHECK line.
Removed
Logging configuration file logging.yml
Drop dependency for pyyaml.
v0.6a1 (17, Nov., 2019)
Added
More build test with sample project which uses an extra module.(#56)
Add support for installation of WebAssembly component by specifying ‘wasm_32’ as an arch argument.(#53, #55)
Changed
Optional modules are installed explicitly. Users need to specify extra modules with -m option.(#52, #56)
Fixed
Dependency for py7zr only for python > 3.5. Now it works with python2.7.
v0.5 (10, Nov., 2019)
Changed
Introduce combination DB in json form. User and developer now easily add new component for installation checking.
Fixed
requires py7zr >= 0.4.1 because v0.4 can fails to extract file.
v0.5b2 (8, Oct., 2019)
Changed
Change install path from <target>/Qt/Qt<version>/<version> to <target>/<version> (#48). - Also update CI test to specify –outputdir <target> that is $(BinariesDirectory)/Qt
v0.5b1 (8, Oct., 2019)
Added
Add feature to support installation of Qt Tools
Add CI test for tool installation
Changed
CI test target - add 5.14.0 - remove 5.11.3 - change patch_levels to up-to-date
v0.4.3 (25, Sep, 2019)
Fixed
Allow multiple redirection to mirror site.(#41)
v0.4.2 (28, Jul, 2019)
Changed
README: update badge layout.
CI: Improve azure-pipelines configurations by Nelson (#20)
Check parameter combination allowance and add winrt variant.
Support installation of mingw runtime package.
Add ‘–internal’ option to use py7zr instead of external 7zip command for extracting package archives.(WIP)
v0.4.1 (01, Jun, 2019)
Added
Option -b | –base to specify mirror site.(#24)
Changed
CI: add script to generate auzre-pipelines.yml (#27, #28, #29)
CI: use powershell script for linux, mac and windows. (#26)
Fixed
Avoid blacklisted mirror site that cause CI fails.(#25)
v0.4.0 (29, May, 2019)
Added
cli: output directory option.
sphinx document.
test packaging on CI.
Handler for metalink information and intelligent mirror selection.
Changed
Change project directory structure.
cli command name changed from ‘aqtinst’ to ‘aqt’ and now you can run ‘aqt install’
Introduce Cli class
Massive regression test on azure pipelines(#20)
blacklist against http://mirrors.tuna.tsinghua.edu.cn and http://mirrors.geekpie.club/ from mirror site.
Run 7zip command with ‘-o{directory}’ option.
Fixed
Fix File Not Found Error when making qt.conf against win64_mingw73 and win32_mingw73
v0.3.1 (15, March, 2019)
Added
Qmake build test code in CI environment.(#14)
Fixed
Connect to Qt download server through proxy with authentication.(#17)
Changed
Change QtInstaller.install() function signature not to take any parameter.
Replace standard urllib to requests library.(#18)
Use 7zr external command instead of 7z in Linux and mac OSX envitonment.
Removed
requirements.txt file.
v0.3.0 (8, March, 2019)
Added
Allow execute both ‘aqtinst’ and ‘python -m aqt’ form.
Changed
Project URL is changed.
Generate universal wheel support both python2.7 and python 3.x.
Fixed
Update README wordings.
Remove dependency for python3 with ‘aqtinst’ command utility.
Fix command name in help message.
v0.2.0 (7, March, 2019)
Added
Released on pypi.org
Changed
Install not only basic packages also optional packages.
Rename project/command to aqt - Another QT installer
Fixed
Update mkspecs/qconfig.pri to indicate QT_EDITION is OpenSource
Support Python2
v0.1.0 (5, March, 2019)
Changed
Support multiprocess concurrent download and installation.
v0.0.2 (4, March, 2019)
Added
CI test on Azure-pipelines
Changed
Fixed
Support windows.
looking for 7zip in standard directory.
v0.0.1 (2, March, 2019)
Fork from qli-installer
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file aqtinstall-0.9.8.tar.gz
.
File metadata
- Download URL: aqtinstall-0.9.8.tar.gz
- Upload date:
- Size: 85.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 704df471f19f4e3e5272fc2f47ffee31270c1c80d73305c1f66e2f6afcd02c3e |
|
MD5 | 6f09bb308cb1903dedc9927e0516363d |
|
BLAKE2b-256 | 6bb13bec004a72d76ca0c580f3db3178a3af82735a97d5f6e45620f254342342 |
File details
Details for the file aqtinstall-0.9.8-py2.py3-none-any.whl
.
File metadata
- Download URL: aqtinstall-0.9.8-py2.py3-none-any.whl
- Upload date:
- Size: 28.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 540d271c992277d5d8b6fc5ca0e741cb5b1024b432017345be997d70312021c8 |
|
MD5 | f08a99a65a62159f698ec4ef98d8a535 |
|
BLAKE2b-256 | ea8a4704e190855711a405eacee695ef32967d9961d885d7c1a0ffa5c359c605 |