mirror of
https://github.com/miurahr/aqtinstall.git
synced 2025-12-18 13:14:37 +03:00
Merge branch 'master' into topic/miurahr/notify-qtcreator-sdk
This commit is contained in:
4
.git_archival.txt
Normal file
4
.git_archival.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
node: $Format:%H$
|
||||
node-date: $Format:%cI$
|
||||
describe-name: $Format:%(describe:tags=true,match=*[0-9]*)$
|
||||
ref-names: $Format:%D$
|
||||
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.git_archival.txt export-subst
|
||||
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -2,7 +2,7 @@
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: ''
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
17
.github/ISSUE_TEMPLATE/document-error.md
vendored
Normal file
17
.github/ISSUE_TEMPLATE/document-error.md
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
name: Document error
|
||||
about: Report document errors or suggestions
|
||||
title: ''
|
||||
labels: documents
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the document error or request**
|
||||
A clear and concise description of what the error is.
|
||||
|
||||
**Proposed change**
|
||||
A clear and concise description of what you want to see.
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
2
.github/ISSUE_TEMPLATE/feature_request.md
vendored
2
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -2,7 +2,7 @@
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: ''
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
9
.github/workflows/check-combinations.yml
vendored
9
.github/workflows/check-combinations.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
check_combinations:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 20
|
||||
|
||||
@@ -26,14 +26,13 @@ jobs:
|
||||
branchtomerge: "origin/master"
|
||||
branch: "update-combinations"
|
||||
|
||||
- name: Set up Python 3.8
|
||||
uses: actions/setup-python@v2
|
||||
- name: Set up Python 3.9
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: 3.8
|
||||
python-version: '3.9'
|
||||
|
||||
- name: Build and install
|
||||
run: |
|
||||
python setup.py --version
|
||||
python -m pip install ./ --user
|
||||
|
||||
- name: Install generate_combinations dependencies
|
||||
|
||||
10
.github/workflows/check.yml
vendored
10
.github/workflows/check.yml
vendored
@@ -1,4 +1,4 @@
|
||||
name: Check package
|
||||
name: Check tox tests, lint and types
|
||||
|
||||
on:
|
||||
push:
|
||||
@@ -16,14 +16,14 @@ jobs:
|
||||
name: Check packaging 📦
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 20
|
||||
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
|
||||
- name: Set up Python 3.8
|
||||
uses: actions/setup-python@v2
|
||||
- name: Set up Python 3.9
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: 3.8
|
||||
python-version: '3.9'
|
||||
- name: Install tools
|
||||
run: |
|
||||
pip install -U pip
|
||||
|
||||
6
.github/workflows/codeql-analysis.yml
vendored
6
.github/workflows/codeql-analysis.yml
vendored
@@ -28,12 +28,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
||||
uses: github/codeql-action/analyze@v2
|
||||
|
||||
12
.github/workflows/publish-to-pypi.yml
vendored
12
.github/workflows/publish-to-pypi.yml
vendored
@@ -15,15 +15,15 @@ jobs:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Checkout 🛎️
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 50
|
||||
- name: Fetch release tag
|
||||
run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
|
||||
- name: Set up Python 3.7🐍
|
||||
uses: actions/setup-python@v1
|
||||
- name: Set up Python 3.10🐍
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: 3.7
|
||||
python-version: '3.10'
|
||||
- name: Install build and twine
|
||||
run: python -m pip install build twine --user
|
||||
- name: Build release assets
|
||||
@@ -32,12 +32,12 @@ jobs:
|
||||
run: python -m twine check dist/*
|
||||
- name: Publish distribution 📦 to Test PyPI when releases branch
|
||||
if: ${{ startsWith(github.event.ref, 'refs/heads/releases') }}
|
||||
uses: pypa/gh-action-pypi-publish@master
|
||||
uses: pypa/gh-action-pypi-publish@release/v1
|
||||
with:
|
||||
password: ${{ secrets.testpypi_password }}
|
||||
repository_url: https://test.pypi.org/legacy/
|
||||
- name: Publish distribution 📦 to PyPI
|
||||
if: ${{ startsWith(github.event.ref, 'refs/tags') }}
|
||||
uses: pypa/gh-action-pypi-publish@master
|
||||
uses: pypa/gh-action-pypi-publish@release/v1
|
||||
with:
|
||||
password: ${{ secrets.pypi_password }}
|
||||
|
||||
2
.github/workflows/release-note.yml
vendored
2
.github/workflows/release-note.yml
vendored
@@ -7,7 +7,7 @@ jobs:
|
||||
create-release-notes:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- uses: actions/checkout@v3
|
||||
- name: Create Release Notes
|
||||
uses: docker://decathlon/release-notes-generator-action:2.0.0
|
||||
env:
|
||||
|
||||
64
.github/workflows/test-install-qt.yml
vendored
64
.github/workflows/test-install-qt.yml
vendored
@@ -1,19 +1,26 @@
|
||||
name: Test on GH actions environment
|
||||
|
||||
on: push
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- releases/*
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [windows-latest, macOS-latest, ubuntu-latest]
|
||||
py: [3.9]
|
||||
qtver: [5.9.9, 5.12.8, 6.1.0]
|
||||
os: [windows-latest, ubuntu-latest]
|
||||
py: ["3.9", "3.12"]
|
||||
qtver: [5.9.9, 6.1.0]
|
||||
artifact: [standard]
|
||||
include:
|
||||
- os: windows-latest
|
||||
py: 3.9
|
||||
py: "3.10"
|
||||
qtver: 6.1.0
|
||||
artifact: binary
|
||||
- os: ubuntu-20.04
|
||||
@@ -22,15 +29,15 @@ jobs:
|
||||
artifact: standard
|
||||
exclude:
|
||||
- os: ubuntu-latest
|
||||
py: 3.9
|
||||
py: "3.10"
|
||||
qtver: 6.1.0
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 20
|
||||
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ matrix.py }}
|
||||
- name: Run pytest
|
||||
@@ -40,12 +47,29 @@ jobs:
|
||||
- name: Build and install
|
||||
if: matrix.artifact == 'standard'
|
||||
run: |
|
||||
python setup.py --version
|
||||
python -m pip install ./ --user
|
||||
- name: Build Standalone binary
|
||||
if: matrix.artifact == 'binary'
|
||||
- name: Build Standalone binary(linux,mac)
|
||||
if: matrix.artifact == 'binary' && matrix.os != 'windows-latest'
|
||||
run: |
|
||||
ci/build_standalone.bat
|
||||
python -m venv venv
|
||||
source venv/bin/activate
|
||||
python -m pip install -U pip wheel setuptools setuptools_scm pyinstaller
|
||||
python -m pip install .
|
||||
python tools/build_standalone.py
|
||||
deactivate
|
||||
rm -rf venv
|
||||
shell: bash
|
||||
- name: Build Standalone binary(windows)
|
||||
if: matrix.artifact == 'binary' && matrix.os == 'windows-latest'
|
||||
run: |
|
||||
python -m venv venv
|
||||
venv/Scripts/activate.ps1
|
||||
python -m pip install -U pip wheel setuptools setuptools_scm pyinstaller
|
||||
python -m pip install .
|
||||
python tools/build_standalone.py
|
||||
deactivate
|
||||
Remove-Item venv -Recurse -Force
|
||||
shell: pwsh
|
||||
- name: Run aqt
|
||||
run: |
|
||||
import os
|
||||
@@ -57,11 +81,14 @@ jobs:
|
||||
artifact = "${{ matrix.artifact }}"
|
||||
platform = "${{ matrix.os }}"
|
||||
qtver = "${{ matrix.qtver }}"
|
||||
env = os.environ.copy()
|
||||
github_workspace = pathlib.Path(env["GITHUB_WORKSPACE"])
|
||||
if artifact == "binary":
|
||||
if platform.startswith("windows"):
|
||||
prefix = ["../.gravitybee/dist/latest/aqt.exe", "install"]
|
||||
bin_path = str(github_workspace / "dist" / "aqt.exe")
|
||||
else:
|
||||
prefix = ["../.gravitybee/dist/latest/aqt", "install"]
|
||||
bin_path = (github_workspace / "dist" / "aqt").as_posix()
|
||||
prefix = [bin_path, "install"]
|
||||
else:
|
||||
prefix = ["python", "-m", "aqt", "install"]
|
||||
command_line = []
|
||||
@@ -81,8 +108,6 @@ jobs:
|
||||
args = [qtver, "linux", "desktop", "gcc_64"]
|
||||
command_line.extend(args)
|
||||
command_line.extend(["--archives", "qtbase", "icu", "qt"])
|
||||
env = os.environ.copy()
|
||||
github_workspace = pathlib.Path(env["GITHUB_WORKSPACE"])
|
||||
env["AQT_CONFIG"] = (github_workspace / "ci" / "settings.ini").as_posix()
|
||||
env["LOG_CFG"] = (github_workspace / "ci" / "logging.ini").as_posix()
|
||||
print("Execute: {}".format(command_line))
|
||||
@@ -94,15 +119,16 @@ jobs:
|
||||
if qtver.startswith('6'):
|
||||
command_line6 = []
|
||||
command_line6.extend(prefix)
|
||||
if platform == 'ubuntu-20.04':
|
||||
if platform.startswith("ubuntu"):
|
||||
command_line6.extend([qtver, "linux", "android", "android_armv7"])
|
||||
timeout = 360
|
||||
elif platform == "macOS-latest":
|
||||
elif platform.startswith("macOS"):
|
||||
command_line6.extend([qtver, "mac", "ios", "ios"])
|
||||
timeout = 360
|
||||
else:
|
||||
command_line6.extend([qtver, "windows", "android", "android_armv7"])
|
||||
timeout = 360
|
||||
print("Execute: {}".format(command_line6))
|
||||
try:
|
||||
res = subprocess.run(command_line6, timeout=timeout, check=True)
|
||||
except subprocess.CalledProcessError as cpe:
|
||||
@@ -164,4 +190,4 @@ jobs:
|
||||
if: matrix.artifact == 'binary'
|
||||
with:
|
||||
name: aqt-${{ matrix.os }}-standalone
|
||||
path: .gravitybee\dist\latest\aqt*
|
||||
path: dist\aqt*
|
||||
|
||||
49
.github/workflows/upload-release-artifacts.yml
vendored
49
.github/workflows/upload-release-artifacts.yml
vendored
@@ -12,45 +12,56 @@ on:
|
||||
|
||||
jobs:
|
||||
build-standalone:
|
||||
runs-on: ${{ matrix.os }}
|
||||
runs-on: ${{ matrix.system.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [windows-latest]
|
||||
system: [
|
||||
{os: windows-latest, arch: x86, output_file: 'aqt_x86.exe', primary_artifact: '', secondary_artifact: 'aqt_x86.exe'},
|
||||
{os: windows-latest, arch: x64, output_file: 'aqt_x64.exe', primary_artifact: 'aqt.exe', secondary_artifact: 'aqt_x64.exe'},
|
||||
{os: macOS-latest, arch: x64, output_file: 'aqt_x64', primary_artifact: 'aqt-macos', secondary_artifact: 'aqt-macos_x64'}
|
||||
]
|
||||
py: [3.9]
|
||||
arch: [x86, x64]
|
||||
defaults:
|
||||
run:
|
||||
shell: ${{ matrix.system.os == 'windows-latest' && 'pwsh' || 'bash' }} {0}
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 20
|
||||
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v1
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ matrix.py }}
|
||||
architecture: ${{ matrix.arch }}
|
||||
|
||||
architecture: ${{ matrix.system.arch }}
|
||||
- name: Build standalone binary
|
||||
run: |
|
||||
ci/build_standalone.bat
|
||||
cp .gravitybee\dist\latest\aqt.exe .gravitybee\dist\latest\aqt_${{ matrix.arch }}.exe
|
||||
python -m venv venv
|
||||
${{ matrix.system.os == 'windows-latest' && 'venv/Scripts/activate.ps1' || 'chmod +x venv/bin/activate && venv/bin/activate' }}
|
||||
python -m pip install -U pip wheel setuptools setuptools_scm pyinstaller
|
||||
python -m pip install .
|
||||
python tools/build_standalone.py ${{ matrix.system.arch }}
|
||||
${{ matrix.system.os == 'windows-latest' && 'deactivate' || 'chmod +x venv/bin/deactivate && venv/bin/deactivate' }}
|
||||
${{ matrix.system.os == 'windows-latest' && 'Remove-Item venv -Recurse -Force' || 'rm -rf venv' }}
|
||||
|
||||
- name: Upload to Release
|
||||
uses: svenstaro/upload-release-action@v2
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: .gravitybee\dist\latest\aqt.exe
|
||||
file: dist/${{ matrix.system.output_file }}
|
||||
asset_name: ${{ matrix.system.primary_artifact }}
|
||||
tag: ${{ github.ref }}
|
||||
overwrite: true
|
||||
if: matrix.arch=='x64'
|
||||
|
||||
if: matrix.system.primary_artifact!='' && startsWith(github.ref, 'refs/tags/v')
|
||||
- name: Upload to Release for all architectures
|
||||
uses: svenstaro/upload-release-action@v2
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: .gravitybee\dist\latest\aqt_${{ matrix.arch }}.exe
|
||||
file: dist/${{ matrix.system.output_file }}
|
||||
asset_name: ${{ matrix.system.secondary_artifact }}
|
||||
tag: ${{ github.ref }}
|
||||
overwrite: true
|
||||
|
||||
if: matrix.system.secondary_artifact!='' && startsWith(github.ref, 'refs/tags/v')
|
||||
- name: Update continuous build
|
||||
uses: svenstaro/upload-release-action@v2
|
||||
with:
|
||||
@@ -58,9 +69,9 @@ jobs:
|
||||
overwrite: true
|
||||
prerelease: true
|
||||
tag: Continuous
|
||||
file: .gravitybee\dist\latest\aqt.exe
|
||||
if: matrix.arch=='x64'
|
||||
|
||||
file: dist/${{ matrix.system.output_file }}
|
||||
asset_name: ${{ matrix.system.primary_artifact }}
|
||||
if: matrix.system.primary_artifact!='' && startsWith(github.ref, 'refs/tags/v')
|
||||
- name: Update continuous build for all architectures
|
||||
uses: svenstaro/upload-release-action@v2
|
||||
with:
|
||||
@@ -68,4 +79,6 @@ jobs:
|
||||
overwrite: true
|
||||
prerelease: true
|
||||
tag: Continuous
|
||||
file: .gravitybee\dist\latest\aqt_${{ matrix.arch }}.exe
|
||||
file: dist/${{ matrix.system.output_file }}
|
||||
asset_name: ${{ matrix.system.secondary_artifact }}
|
||||
if: matrix.system.secondary_artifact!='' && startsWith(github.ref, 'refs/tags/v')
|
||||
|
||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -9,11 +9,12 @@ __pycache__
|
||||
.idea
|
||||
.tox
|
||||
.venv
|
||||
_build
|
||||
ci/*.matrix.gen.yml
|
||||
docs/_build
|
||||
docs/_build/
|
||||
*.mo
|
||||
aqtinstall.log
|
||||
Qt/
|
||||
.gravitybee
|
||||
.eggs
|
||||
qtaccount.ini
|
||||
.pytest_cache
|
||||
|
||||
@@ -13,7 +13,6 @@ python:
|
||||
path: .
|
||||
extra_requirements:
|
||||
- docs
|
||||
system_packages: false
|
||||
|
||||
build:
|
||||
os: ubuntu-22.04
|
||||
@@ -21,7 +20,7 @@ build:
|
||||
python: "3.10"
|
||||
jobs:
|
||||
post_checkout:
|
||||
- git fetch --unshallow
|
||||
- git fetch --depth 1000
|
||||
pre_install:
|
||||
- git update-index --assume-unchanged docs/conf.py
|
||||
- pip install setuptools==62.4.0 setuptools_scm[toml]==6.4.2
|
||||
|
||||
285
CHANGELOG.rst
285
CHANGELOG.rst
@@ -1,285 +0,0 @@
|
||||
====================
|
||||
aqtinstall changeLog
|
||||
====================
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
`Unreleased`_
|
||||
=============
|
||||
|
||||
`v2.2.3`_ (17, Aug. 2022)
|
||||
-------------------------
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Building standalone executable: aqt.exe (#556,#557)
|
||||
|
||||
Added
|
||||
-----
|
||||
* Docs: add explanation of ``list-qt --long-modules`` (#555)
|
||||
|
||||
|
||||
`v2.2.2`_ (11, Aug. 2022)
|
||||
-------------------------
|
||||
|
||||
Added
|
||||
-----
|
||||
* Add ``aqt list-qt --long-modules`` (#543,#547)
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Fix kwargs passed up AqtException inheritance tree (#550)
|
||||
|
||||
|
||||
`v2.2.1`_ (9, Aug. 2022)
|
||||
------------------------
|
||||
|
||||
Changed
|
||||
-------
|
||||
* ``install-qt`` command respect ``--base`` argument option when
|
||||
retrieve metadata XML files by making ``MetadataFactory``
|
||||
respect ``baseurl`` set. (#545)
|
||||
|
||||
`v2.2.0`_ (2, Aug. 2022)
|
||||
------------------------
|
||||
|
||||
Added
|
||||
-----
|
||||
* Add code of conduct (#535)
|
||||
|
||||
Changed
|
||||
-------
|
||||
* test: prevent use of flake8@5.0 (#544)
|
||||
* Improve tox and pytest config(#544)
|
||||
* Properly retrieve folder names from html pages of all mirrors(#520)
|
||||
* Log: left align the level name (#539)
|
||||
* Update combinations (#537)
|
||||
* Introduce Updates.xml data class and parser (#533)
|
||||
* archives: do not keep update.xml text in field (#534)
|
||||
* docs: Bump sphinx@5.0 (#524)
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Update readthedocs config (#535)
|
||||
* Fix readme description of list-qt (#527)
|
||||
|
||||
Deprecated
|
||||
----------
|
||||
* Deprecate setup.py file (#531)
|
||||
|
||||
`v2.1.0`_ (14, Apr. 2022)
|
||||
=========================
|
||||
|
||||
Changed
|
||||
-------
|
||||
* Change security policy(#506):
|
||||
Supported 2.0.x
|
||||
Unsupported 1.2.x and before
|
||||
* Bump py7zr@0.18.3(#509)
|
||||
* pyproject.toml configuration
|
||||
* project section(#507)
|
||||
* setuptools_scm settings(#508)
|
||||
* Use SHA256 hash from trusted mirror for integrity check (#493)
|
||||
* Update combinations.xml
|
||||
* QtDesignStudio generation2 (#486)
|
||||
* IFW version (from 42 to 43) change (#495)
|
||||
* Support Qt 6.2.4 (#502)
|
||||
* Update fallback mirror list (#485)
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Fix patching of Qt6.2.2-ios(#510, #503)
|
||||
* Test: Conditionally install dependencies on Ubuntu (#494)
|
||||
|
||||
Added
|
||||
-----
|
||||
* doc: warn about unrelated aqt package (#490)
|
||||
* doc: add explanation of --config flag in CLI docs (#491)
|
||||
* doc: note about MSYS2/Mingw64 environment
|
||||
|
||||
Security
|
||||
--------
|
||||
* Use secrets for secure random numbers(#498)
|
||||
* Use defusedxml to parse Updates.xml file to avoid attack(#498)
|
||||
* Improve get_hash function(#504)
|
||||
* Check Update.xml file with SHA256 hash (#493)
|
||||
|
||||
|
||||
`v2.0.6`_ (7, Feb. 2022)
|
||||
========================
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Fix archives flag(#459)
|
||||
* Accept the case Update.xml in Server has delimiter without space(#479)
|
||||
* Fix getUrl function to use property http session and retry(#473)
|
||||
|
||||
Added
|
||||
-----
|
||||
* 32bit release binary(#471)
|
||||
|
||||
Changed
|
||||
-------
|
||||
* Update combinations.xml
|
||||
* Qt 6.2.2, 6.2.3, 6.3.0(#481,#484)
|
||||
|
||||
`v2.0.5`_ (11, Dec. 2021)
|
||||
=========================
|
||||
|
||||
Changed
|
||||
-------
|
||||
* Reduce memory consumption: garbage collection on install subprocess(#464)
|
||||
* Cache PowerShell modules on Azure Pipeline(#465)
|
||||
|
||||
`v2.0.4`_ (5, Dec. 2021)
|
||||
=========================
|
||||
|
||||
Fixed
|
||||
=====
|
||||
* Allow duplicated install on the directory previously installed(#438,#462)
|
||||
* Memory error on 32bit python on Windows(#436,#462)
|
||||
|
||||
Changed
|
||||
=======
|
||||
* Change list-src, list-doc and list-example command(#453)
|
||||
|
||||
`v2.0.3`_ (25, Nov. 2021)
|
||||
=========================
|
||||
|
||||
Added
|
||||
-----
|
||||
* Improve --keep and new --archive-dest options(#458)
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Fix cross-platform installation failure (#450)
|
||||
* CI: update OSes, Windows-2019, macOS-10.15(#444,#456)
|
||||
* CI: fix failure of uploading coveralls(#446)
|
||||
* CI: test for QtIFW(#451)
|
||||
|
||||
Changed
|
||||
-------
|
||||
* combinations matrix json(#452)
|
||||
|
||||
`v2.0.2`_ (1, Nov. 2021)
|
||||
=========================
|
||||
|
||||
Added
|
||||
-----
|
||||
* Support Qt 6.2.1 (#441)
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Degraded install-tool (#442,#443)
|
||||
|
||||
Changed
|
||||
-------
|
||||
* Add suggestion to use ``--external`` for MemoryError (#439)
|
||||
|
||||
|
||||
`v2.0.1`_ (29, Oct. 2021)
|
||||
=========================
|
||||
|
||||
Added
|
||||
-----
|
||||
* Allow retries on checksum error(#420)
|
||||
* Run on Python 3.10(#424)
|
||||
* Add more mirrors for fallback(#432)
|
||||
* Add fallback URL message(#434)
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* ``--noarchives`` inconsistency(#429)
|
||||
* Allow multiprocessing error propagation(#419)
|
||||
* Legacy command behavior, reproduce also old bugs (#414)
|
||||
* Fix crash on ``crash install-qt <host> <tgt> <spec>`` with no specified arch(#435)
|
||||
|
||||
Changed
|
||||
-------
|
||||
* Print working directory and version in error message(#418)
|
||||
|
||||
Security
|
||||
--------
|
||||
* Use HTTPS for mirror site(#430)
|
||||
|
||||
|
||||
`v2.0.0`_ (29, Sep. 2021)
|
||||
=========================
|
||||
|
||||
Added
|
||||
-----
|
||||
* Add error messages when user inputs an invalid semantic version(#291)
|
||||
* Security Policy document(#341)
|
||||
* CodeQL static code analysis(#341)
|
||||
* CI: generate combination json in actions (#318,#343)
|
||||
* Test: add and improve unit tests(#327,#359)
|
||||
* Docs: getting started section(#351)
|
||||
* Docs: recommend python3 for old systems(#349)
|
||||
* Automatically update combinations.json (#343,#344,#345,#386,#390,#395)
|
||||
* CI: test with Qt6.2 with modules(#346)
|
||||
* README: link documentation for stable(#329)
|
||||
* Support WASM on Qt 6.2.0(#384)
|
||||
* Add Binary distribution for Windows(#393,#397)
|
||||
* Add list-qt --archives feature(#400)
|
||||
* Require architecture when listing modules(#401)
|
||||
|
||||
Changed
|
||||
-------
|
||||
* list subcommand now support tool information(#235)
|
||||
* list subcommand can show versions, architectures and modules.(#235)
|
||||
* C: bundle jom.zip in source(#295)
|
||||
* Add max_retries configuration for connection(#296)
|
||||
* Change settings.ini to introduce [requests] section(#297)
|
||||
* Change log format for logging file.
|
||||
* Extension validation for tool subcommand(#314)
|
||||
* list subcommand has --tool-long option(#304, #319)
|
||||
* tool subcommand now install without version spec(#299)
|
||||
* README example command is now easy to copy-and-paste(#322)
|
||||
* list subcommand update(#331)
|
||||
* Improve handle of Ctrl-C keyboard interruption(#337)
|
||||
* Update combinations.json(#344,#386)
|
||||
* Turn warnings into errors when building docs(#360)
|
||||
* Update documentations(#358,#357)
|
||||
* Test: consolidate lint configuration to pyproject.toml(#356)
|
||||
* Test: black configuration to max_line_length=125 (#356)
|
||||
* New subcommand syntax (#354,#355)
|
||||
* Failed on missing modules(#374)
|
||||
* Failed on missing tools(#375)
|
||||
* Remove 'addons' prefix for some modules for Qt6+ (#368)
|
||||
* Fix inappropriate warnings(#370)
|
||||
* Update README to fix version 2 (#377)
|
||||
* list-qt: Specify version by SimpleSpec(#392)
|
||||
* Add helpful error messages when modules/tools/Qt version does not exist(#402)
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Fix helper.getUrl() to handle several response statuses(#292)
|
||||
* Fix Qt 6.2.0 target path for macOS.(#289)
|
||||
* Fix WinRT installation patching(#311)
|
||||
* Fix Qt 5.9.0 installation (#312)
|
||||
* Link documentations for stable/latest on README
|
||||
* Check python version when starting command (#352)
|
||||
* README: remove '$' from example command line(#321)
|
||||
* README: fix command line example lexer(#322)
|
||||
* CI: fix release script launch conditions(#298)
|
||||
* Handle special case for Qt 5.9.0(#364)
|
||||
* Running python2 -m aqt does not trigger Python version check (#372,#373)
|
||||
* docs(cli): correct the parameter of "list-tool" in an example(#399)
|
||||
* Doc: Fix broken mirror link in cli.rst (#403)
|
||||
* CI: fix release action fails with no files found(#405)
|
||||
|
||||
|
||||
|
||||
.. _Unreleased: https://github.com/miurahr/aqtinstall/compare/v2.2.3...HEAD
|
||||
.. _v2.2.3: https://github.com/miurahr/aqtinstall/compare/v2.2.2...v2.2.3
|
||||
.. _v2.2.2: https://github.com/miurahr/aqtinstall/compare/v2.2.1...v2.2.2
|
||||
.. _v2.2.1: https://github.com/miurahr/aqtinstall/compare/v2.2.0...v2.2.1
|
||||
.. _v2.2.0: https://github.com/miurahr/aqtinstall/compare/v2.1.0...v2.2.0
|
||||
.. _v2.1.0: https://github.com/miurahr/aqtinstall/compare/v2.0.6...v2.1.0
|
||||
.. _v2.0.6: https://github.com/miurahr/aqtinstall/compare/v2.0.5...v2.0.6
|
||||
.. _v2.0.5: https://github.com/miurahr/aqtinstall/compare/v2.0.4...v2.0.5
|
||||
.. _v2.0.4: https://github.com/miurahr/aqtinstall/compare/v2.0.3...v2.0.4
|
||||
.. _v2.0.3: https://github.com/miurahr/aqtinstall/compare/v2.0.2...v2.0.3
|
||||
.. _v2.0.2: https://github.com/miurahr/aqtinstall/compare/v2.0.1...v2.0.2
|
||||
.. _v2.0.1: https://github.com/miurahr/aqtinstall/compare/v2.0.0...v2.0.1
|
||||
.. _v2.0.0: https://github.com/miurahr/aqtinstall/compare/v1.2.5...v2.0.0
|
||||
@@ -1,6 +1,5 @@
|
||||
include *.rst
|
||||
include *.txt
|
||||
include *.cfg
|
||||
include LICENSE
|
||||
include pyproject.toml
|
||||
include .flake8
|
||||
@@ -10,15 +9,15 @@ recursive-include docs *.bat
|
||||
recursive-include docs *.py
|
||||
recursive-include docs *.rst
|
||||
recursive-include docs Makefile
|
||||
recursive-include docs *.po
|
||||
recursive-include docs *.pot
|
||||
recursive-include tests *.html
|
||||
recursive-include tests *.ini
|
||||
recursive-include tests *.json
|
||||
recursive-include tests *.py
|
||||
recursive-include tests *.xml
|
||||
recursive-include tools *.py
|
||||
prune .github
|
||||
exclude .gitignore
|
||||
exclude .readthedocs.yml
|
||||
exclude azure-pipelines.yml
|
||||
exclude qtaccount.ini
|
||||
exclude aqtinstall.log
|
||||
|
||||
|
||||
30
README.rst
30
README.rst
@@ -4,6 +4,7 @@ Another Qt installer(aqt)
|
||||
- Release: |pypi|
|
||||
- Documentation: |docs|
|
||||
- Test status: |gha| and Coverage: |coveralls|
|
||||
- Project maturity |Package health|
|
||||
|
||||
.. |pypi| image:: https://badge.fury.io/py/aqtinstall.svg
|
||||
:target: http://badge.fury.io/py/aqtinstall
|
||||
@@ -13,6 +14,11 @@ Another Qt installer(aqt)
|
||||
:target: https://github.com/miurahr/aqtinstall/actions?query=workflow%3A%22Test+on+GH+actions+environment%22
|
||||
.. |coveralls| image:: https://coveralls.io/repos/github/miurahr/aqtinstall/badge.svg?branch=master
|
||||
:target: https://coveralls.io/github/miurahr/aqtinstall?branch=master
|
||||
.. |Package health| image:: https://snyk.io/advisor/python/aqtinstall/badge.svg
|
||||
:target: https://snyk.io/advisor/python/aqtinstall
|
||||
:alt: aqtinstall
|
||||
|
||||
|
||||
|
||||
This is a utility alternative to the official graphical Qt installer, for using in CI environment
|
||||
where an interactive UI is not usable, or just on command line.
|
||||
@@ -48,7 +54,7 @@ Requirements
|
||||
------------
|
||||
|
||||
- Minimum Python version:
|
||||
3.6
|
||||
3.7
|
||||
|
||||
- Recommended Python version:
|
||||
3.9 (frequently tested on)
|
||||
@@ -60,7 +66,6 @@ Requirements
|
||||
py7zr
|
||||
texttable
|
||||
bs4
|
||||
dataclasses; python_version < "3.7"
|
||||
defusedxml
|
||||
|
||||
- Operating Systems:
|
||||
@@ -74,10 +79,9 @@ There is precise documentation with many examples.
|
||||
You are recommended to read the *Getting started* section.
|
||||
|
||||
- Getting started: https://aqtinstall.readthedocs.io/en/latest/getting_started.html
|
||||
- Stable (v2.1.x): https://aqtinstall.readthedocs.io/en/stable
|
||||
- Stable (v3.0.x): https://aqtinstall.readthedocs.io/en/stable
|
||||
- Latest: https://aqtinstall.readthedocs.io/en/latest
|
||||
- Old (v2.0.6) : https://aqtinstall.readthedocs.io/en/v2.0.6/
|
||||
- Obsolete (v1.2.5) : https://aqtinstall.readthedocs.io/en/v1.2.5/index.html
|
||||
- Old (v2.2.3) : https://aqtinstall.readthedocs.io/en/v2.2.3/
|
||||
|
||||
Install
|
||||
-------
|
||||
@@ -147,6 +151,12 @@ To install Qt 6.2.0 with the modules 'qtcharts' and 'qtnetworking', you can use
|
||||
|
||||
aqt install-qt windows desktop 6.2.0 win64_mingw81 -m qtcharts qtnetworking
|
||||
|
||||
When you want to install Qt for android with required desktop toolsets
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
aqt install-qt linux android 5.13.2 android_armv7 --autodesktop
|
||||
|
||||
|
||||
When aqtinstall downloads and installs packages, it updates package configurations
|
||||
such as prefix directory in ``bin/qt.conf``, and ``bin/qconfig.pri``
|
||||
@@ -155,6 +165,14 @@ to make it working well with installed directory.
|
||||
.. note::
|
||||
It is your own task to set some environment variables to fit your platform, such as PATH, QT_PLUGIN_PATH, QML_IMPORT_PATH, and QML2_IMPORT_PATH. aqtinstall will never do it for you, in order not to break the installation of multiple versions.
|
||||
|
||||
.. warning::
|
||||
If you are using aqtinstall to install the ios version of Qt, please be aware that
|
||||
there are compatibility issues between XCode 13+ and versions of Qt less than 6.2.4.
|
||||
You may use aqtinstall to install older versions of Qt for ios, but the developers of
|
||||
aqtinstall cannot guarantee that older versions will work on the most recent versions of MacOS.
|
||||
Aqtinstall is tested for ios on MacOS 12 with Qt 6.2.4 and greater.
|
||||
All earlier versions of Qt are expected not to function.
|
||||
|
||||
Testimonies
|
||||
-----------
|
||||
|
||||
@@ -188,7 +206,7 @@ Some projects utilize aqtinstall, and there are several articles and discussions
|
||||
* Qt Study group presentation: `Another Qt CLI installer`_
|
||||
|
||||
|
||||
.. _`Fast and lightweight headless Qt Installer from Qt Mirrors - aqtinstall`: https://mindflakes.com/posts/1/01/01/fast-and-lightweight-headless-qt-installer-from-qt-mirrors-aqtinstall/
|
||||
.. _`Fast and lightweight headless Qt Installer from Qt Mirrors - aqtinstall`: https://mindflakes.com/posts/2019/06/02/fast-and-lightweight-headless-qt-installer-from-qt-mirrors-aqtinstall/
|
||||
.. _`Using Azure DevOps Pipelines with Qt`: https://lostdomain.org/2019/12/27/using-azure-devops-pipelines-with-qt/
|
||||
.. _`Using Azure CI for cross-platform Linux and Windows Qt application builds`: https://www.wincak.name/programming/using-azure-ci-for-cross-platform-linux-and-windows-qt-application-builds/
|
||||
.. _`Automatic installation for Travis CI (or any other CI)`: https://forum.qt.io/topic/114520/automatic-installation-for-travis-ci-or-any-other-ci/2
|
||||
|
||||
@@ -22,11 +22,12 @@
|
||||
import posixpath
|
||||
from dataclasses import dataclass, field
|
||||
from logging import getLogger
|
||||
from typing import Dict, Iterable, List, Optional, Tuple
|
||||
from typing import Dict, Iterable, List, Optional, Set, Tuple
|
||||
from xml.etree.ElementTree import Element # noqa
|
||||
|
||||
from defusedxml import ElementTree
|
||||
|
||||
from aqt.exceptions import ArchiveDownloadError, ArchiveListError, NoPackageFound
|
||||
from aqt.exceptions import ArchiveDownloadError, ArchiveListError, ChecksumDownloadFailure, NoPackageFound
|
||||
from aqt.helper import Settings, get_hash, getUrl, ssplit
|
||||
from aqt.metadata import QtRepoProperty, Version
|
||||
|
||||
@@ -124,13 +125,21 @@ class PackageUpdate:
|
||||
description: str
|
||||
release_date: str
|
||||
full_version: str
|
||||
dependencies: List[str]
|
||||
auto_dependon: Optional[List[str]]
|
||||
downloadable_archives: Optional[List[str]]
|
||||
dependencies: Iterable[str]
|
||||
auto_dependon: Iterable[str]
|
||||
downloadable_archives: Iterable[str]
|
||||
default: bool
|
||||
virtual: bool
|
||||
base: str
|
||||
|
||||
def __post_init__(self):
|
||||
for iter_of_str in self.dependencies, self.auto_dependon, self.downloadable_archives:
|
||||
assert isinstance(iter_of_str, Iterable) and not isinstance(iter_of_str, str)
|
||||
for _str in self.name, self.display_name, self.description, self.release_date, self.full_version, self.base:
|
||||
assert isinstance(_str, str)
|
||||
for boolean in self.default, self.virtual:
|
||||
assert isinstance(boolean, bool)
|
||||
|
||||
@property
|
||||
def version(self):
|
||||
return Version.permissive(self.full_version)
|
||||
@@ -219,7 +228,7 @@ class Updates:
|
||||
def merge(self, other):
|
||||
self.package_updates.extend(other.package_updates)
|
||||
|
||||
def get_depends(self, target: str):
|
||||
def get_depends(self, target: str) -> Iterable[str]:
|
||||
# initialize
|
||||
filo = [target]
|
||||
packages = []
|
||||
@@ -237,19 +246,18 @@ class Updates:
|
||||
filo.append(depend)
|
||||
return packages
|
||||
|
||||
def _get_text(self, item):
|
||||
def _get_text(self, item: Optional[Element]) -> str:
|
||||
if item is not None and item.text is not None:
|
||||
return item.text
|
||||
else:
|
||||
return ""
|
||||
return ""
|
||||
|
||||
def _get_list(self, item):
|
||||
def _get_list(self, item: Optional[Element]) -> Iterable[str]:
|
||||
if item is not None and item.text is not None:
|
||||
return ssplit(item.text)
|
||||
else:
|
||||
return None
|
||||
return []
|
||||
|
||||
def _get_boolean(self, item):
|
||||
def _get_boolean(self, item) -> bool:
|
||||
if "true" == item:
|
||||
return True
|
||||
else:
|
||||
@@ -285,7 +293,7 @@ class QtArchives:
|
||||
self.logger = getLogger("aqt.archives")
|
||||
self.archives: List[QtPackage] = []
|
||||
self.subarchives: Optional[Iterable[str]] = subarchives
|
||||
self.mod_list: Iterable[str] = modules or []
|
||||
self.mod_list: Set[str] = set(modules or [])
|
||||
self.is_include_base_package: bool = is_include_base_package
|
||||
self.timeout = timeout
|
||||
try:
|
||||
@@ -342,8 +350,6 @@ class QtArchives:
|
||||
return ModuleToPackage({})
|
||||
base_package = {self._base_module_name(): list(self._base_package_names())}
|
||||
target_packages = ModuleToPackage(base_package if self.is_include_base_package else {})
|
||||
if self.all_extra:
|
||||
return target_packages
|
||||
for module in self.mod_list:
|
||||
suffix = self._module_name_suffix(module)
|
||||
package_names = [
|
||||
@@ -384,7 +390,16 @@ class QtArchives:
|
||||
|
||||
def _download_update_xml(self, update_xml_path):
|
||||
"""Hook for unit test."""
|
||||
xml_hash = get_hash(update_xml_path, "sha256", self.timeout)
|
||||
if not Settings.ignore_hash:
|
||||
try:
|
||||
xml_hash = get_hash(update_xml_path, Settings.hash_algorithm, self.timeout)
|
||||
except ChecksumDownloadFailure:
|
||||
self.logger.warning(
|
||||
"Failed to download checksum for the file 'Updates.xml'. This may happen on unofficial mirrors."
|
||||
)
|
||||
xml_hash = None
|
||||
else:
|
||||
xml_hash = None
|
||||
return getUrl(posixpath.join(self.base, update_xml_path), self.timeout, xml_hash)
|
||||
|
||||
def _parse_update_xml(self, os_target_folder, update_xml_text, target_packages: Optional[ModuleToPackage]):
|
||||
@@ -399,11 +414,11 @@ class QtArchives:
|
||||
for packageupdate in package_updates:
|
||||
if not self.all_extra:
|
||||
target_packages.remove_module_for_package(packageupdate.name)
|
||||
should_filter_archives: bool = self.subarchives and self.should_filter_archives(packageupdate.name)
|
||||
should_filter_archives: bool = bool(self.subarchives) and self.should_filter_archives(packageupdate.name)
|
||||
|
||||
for archive in packageupdate.downloadable_archives:
|
||||
archive_name = archive.split("-", maxsplit=1)[0]
|
||||
if should_filter_archives and archive_name not in self.subarchives:
|
||||
if should_filter_archives and self.subarchives is not None and archive_name not in self.subarchives:
|
||||
continue
|
||||
archive_path = posixpath.join(
|
||||
# online/qtsdkrepository/linux_x64/desktop/qt5_5150/
|
||||
@@ -426,7 +441,7 @@ class QtArchives:
|
||||
# if we have located every requested package, then target_packages will be empty
|
||||
if not self.all_extra and len(target_packages) > 0:
|
||||
message = f"The packages {target_packages} were not found while parsing XML of package information!"
|
||||
raise NoPackageFound(message, suggested_action=self.help_msg(target_packages.get_modules()))
|
||||
raise NoPackageFound(message, suggested_action=self.help_msg(list(target_packages.get_modules())))
|
||||
|
||||
def _append_tool_update(self, os_target_folder, update_xml, target, tool_version_str):
|
||||
packageupdate = update_xml.get(target)
|
||||
@@ -463,12 +478,13 @@ class QtArchives:
|
||||
)
|
||||
)
|
||||
|
||||
def help_msg(self, missing_modules: Iterable[str]) -> Iterable[str]:
|
||||
def help_msg(self, missing_modules: Optional[List[str]] = None) -> List[str]:
|
||||
_missing_modules: List[str] = missing_modules or []
|
||||
base_cmd = f"aqt list-qt {self.os_name} {self.target}"
|
||||
arch = f"Please use '{base_cmd} --arch {self.version}' to show architectures available."
|
||||
mods = f"Please use '{base_cmd} --modules {self.version} <arch>' to show modules available."
|
||||
has_base_pkg: bool = self._base_module_name() in missing_modules
|
||||
has_non_base_pkg: bool = len(list(missing_modules)) > 1 or not has_base_pkg
|
||||
has_base_pkg: bool = self._base_module_name() in _missing_modules
|
||||
has_non_base_pkg: bool = len(list(_missing_modules)) > 1 or not has_base_pkg
|
||||
messages = []
|
||||
if has_base_pkg:
|
||||
messages.append(arch)
|
||||
@@ -499,7 +515,7 @@ class SrcDocExamplesArchives(QtArchives):
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
flavor,
|
||||
flavor: str,
|
||||
os_name,
|
||||
target,
|
||||
version,
|
||||
@@ -510,7 +526,7 @@ class SrcDocExamplesArchives(QtArchives):
|
||||
is_include_base_package: bool = True,
|
||||
timeout=(5, 5),
|
||||
):
|
||||
self.flavor = flavor
|
||||
self.flavor: str = flavor
|
||||
self.target = target
|
||||
self.os_name = os_name
|
||||
self.base = base
|
||||
@@ -548,11 +564,12 @@ class SrcDocExamplesArchives(QtArchives):
|
||||
"""
|
||||
return TargetConfig("src_doc_examples", self.target, self.arch, self.os_name)
|
||||
|
||||
def help_msg(self, missing_modules: Iterable[str]) -> Iterable[str]:
|
||||
def help_msg(self, missing_modules: Optional[List[str]] = None) -> List[str]:
|
||||
_missing_modules: List[str] = missing_modules or []
|
||||
cmd_type = "example" if self.flavor == "examples" else self.flavor
|
||||
base_cmd = f"aqt list-{cmd_type} {self.os_name} {self.version}"
|
||||
mods = f"Please use '{base_cmd} --modules' to show modules available."
|
||||
has_non_base_pkg: bool = len(list(missing_modules)) > 1
|
||||
has_non_base_pkg: bool = len(list(_missing_modules)) > 1
|
||||
messages = []
|
||||
if has_non_base_pkg:
|
||||
messages.append(mods)
|
||||
@@ -574,8 +591,8 @@ class ToolArchives(QtArchives):
|
||||
tool_name: str,
|
||||
base: str,
|
||||
version_str: Optional[str] = None,
|
||||
arch: Optional[str] = None,
|
||||
timeout: Tuple[int, int] = (5, 5),
|
||||
arch: str = "",
|
||||
timeout: Tuple[float, float] = (5, 5),
|
||||
):
|
||||
self.tool_name = tool_name
|
||||
self.os_name = os_name
|
||||
@@ -605,7 +622,7 @@ class ToolArchives(QtArchives):
|
||||
update_xml = Updates.fromstring(self.base, update_xml_text)
|
||||
self._append_tool_update(os_target_folder, update_xml, self.arch, self.tool_version_str)
|
||||
|
||||
def help_msg(self, *args) -> Iterable[str]:
|
||||
def help_msg(self, *args) -> List[str]:
|
||||
return [f"Please use 'aqt list-tool {self.os_name} {self.target} {self.tool_name}' to show tool variants available."]
|
||||
|
||||
def get_target_config(self) -> TargetConfig:
|
||||
|
||||
@@ -234,6 +234,83 @@
|
||||
"qtwebview"
|
||||
],
|
||||
"qt_version": "6.4"
|
||||
},
|
||||
{
|
||||
"modules": [
|
||||
"debug_info",
|
||||
"qt3d",
|
||||
"qt5compat",
|
||||
"qtcharts",
|
||||
"qtconnectivity",
|
||||
"qtdatavis3d",
|
||||
"qtgrpc",
|
||||
"qthttpserver",
|
||||
"qtimageformats",
|
||||
"qtlanguageserver",
|
||||
"qtlocation",
|
||||
"qtlottie",
|
||||
"qtmultimedia",
|
||||
"qtnetworkauth",
|
||||
"qtpdf",
|
||||
"qtpositioning",
|
||||
"qtquick3d",
|
||||
"qtquick3dphysics",
|
||||
"qtquickeffectmaker",
|
||||
"qtquicktimeline",
|
||||
"qtremoteobjects",
|
||||
"qtscxml",
|
||||
"qtsensors",
|
||||
"qtserialbus",
|
||||
"qtserialport",
|
||||
"qtshadertools",
|
||||
"qtspeech",
|
||||
"qtvirtualkeyboard",
|
||||
"qtwaylandcompositor",
|
||||
"qtwebchannel",
|
||||
"qtwebengine",
|
||||
"qtwebsockets",
|
||||
"qtwebview"
|
||||
],
|
||||
"qt_version": "6.5"
|
||||
},
|
||||
{
|
||||
"modules": [
|
||||
"debug_info",
|
||||
"qt3d",
|
||||
"qt5compat",
|
||||
"qtcharts",
|
||||
"qtconnectivity",
|
||||
"qtdatavis3d",
|
||||
"qtgraphs",
|
||||
"qtgrpc",
|
||||
"qthttpserver",
|
||||
"qtimageformats",
|
||||
"qtlanguageserver",
|
||||
"qtlocation",
|
||||
"qtlottie",
|
||||
"qtmultimedia",
|
||||
"qtnetworkauth",
|
||||
"qtpdf",
|
||||
"qtpositioning",
|
||||
"qtquick3d",
|
||||
"qtquick3dphysics",
|
||||
"qtquickeffectmaker",
|
||||
"qtquicktimeline",
|
||||
"qtremoteobjects",
|
||||
"qtscxml",
|
||||
"qtsensors",
|
||||
"qtserialbus",
|
||||
"qtserialport",
|
||||
"qtshadertools",
|
||||
"qtspeech",
|
||||
"qtvirtualkeyboard",
|
||||
"qtwaylandcompositor",
|
||||
"qtwebchannel",
|
||||
"qtwebengine",
|
||||
"qtwebsockets",
|
||||
"qtwebview"
|
||||
],
|
||||
"qt_version": "6.6"
|
||||
}
|
||||
],
|
||||
"new_archive": [
|
||||
@@ -291,6 +368,16 @@
|
||||
"os_name": "linux",
|
||||
"target": "desktop"
|
||||
},
|
||||
{
|
||||
"arch": "wasm_multithread",
|
||||
"os_name": "linux",
|
||||
"target": "desktop"
|
||||
},
|
||||
{
|
||||
"arch": "wasm_singlethread",
|
||||
"os_name": "linux",
|
||||
"target": "desktop"
|
||||
},
|
||||
{
|
||||
"arch": "android",
|
||||
"os_name": "mac",
|
||||
@@ -326,6 +413,16 @@
|
||||
"os_name": "mac",
|
||||
"target": "desktop"
|
||||
},
|
||||
{
|
||||
"arch": "wasm_multithread",
|
||||
"os_name": "mac",
|
||||
"target": "desktop"
|
||||
},
|
||||
{
|
||||
"arch": "wasm_singlethread",
|
||||
"os_name": "mac",
|
||||
"target": "desktop"
|
||||
},
|
||||
{
|
||||
"arch": "ios",
|
||||
"os_name": "mac",
|
||||
@@ -361,6 +458,16 @@
|
||||
"os_name": "windows",
|
||||
"target": "desktop"
|
||||
},
|
||||
{
|
||||
"arch": "wasm_multithread",
|
||||
"os_name": "windows",
|
||||
"target": "desktop"
|
||||
},
|
||||
{
|
||||
"arch": "wasm_singlethread",
|
||||
"os_name": "windows",
|
||||
"target": "desktop"
|
||||
},
|
||||
{
|
||||
"arch": "win32_mingw53",
|
||||
"os_name": "windows",
|
||||
@@ -478,6 +585,12 @@
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
{
|
||||
"arch": "qt.tools.qtcreator",
|
||||
"os_name": "linux",
|
||||
"target": "desktop",
|
||||
"tool_name": "sdktool"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.cmake",
|
||||
"os_name": "linux",
|
||||
@@ -503,7 +616,7 @@
|
||||
"tool_name": "tools_generic"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.ifw.44",
|
||||
"arch": "qt.tools.ifw.46",
|
||||
"os_name": "linux",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_ifw"
|
||||
@@ -521,16 +634,10 @@
|
||||
"tool_name": "tools_ninja"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.openssl.src",
|
||||
"arch": "qt.tools.opensslv3.src",
|
||||
"os_name": "linux",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_openssl_src"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.openssl.gcc_64",
|
||||
"os_name": "linux",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_openssl_x64"
|
||||
"tool_name": "tools_opensslv3_src"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qt3dstudio",
|
||||
@@ -562,6 +669,30 @@
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtcreator"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreator_gui",
|
||||
"os_name": "linux",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtcreator_gui"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreator_gui.src",
|
||||
"os_name": "linux",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtcreator_gui"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreatordbg",
|
||||
"os_name": "linux",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtcreator_gui"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreatordev",
|
||||
"os_name": "linux",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtcreator_gui"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtdesignstudio",
|
||||
"os_name": "linux",
|
||||
@@ -574,12 +705,36 @@
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtdesignstudio_generation2"
|
||||
},
|
||||
{
|
||||
"arch": "qtdesignstudio.lts",
|
||||
"os_name": "linux",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtdesignstudio_generation2_lts"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreator.telemetry",
|
||||
"os_name": "linux",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_telemetry"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreator_gui.telemetry_evaluator",
|
||||
"os_name": "linux",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_telemetry_eval_gui"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreator_gui.telemetry",
|
||||
"os_name": "linux",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_telemetry_gui"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreator",
|
||||
"os_name": "mac",
|
||||
"target": "desktop",
|
||||
"tool_name": "sdktool"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.cmake",
|
||||
"os_name": "mac",
|
||||
@@ -605,7 +760,7 @@
|
||||
"tool_name": "tools_generic"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.ifw.44",
|
||||
"arch": "qt.tools.ifw.46",
|
||||
"os_name": "mac",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_ifw"
|
||||
@@ -646,6 +801,24 @@
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtcreator"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreator_gui",
|
||||
"os_name": "mac",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtcreator_gui"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreatordbg",
|
||||
"os_name": "mac",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtcreator_gui"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreatordev",
|
||||
"os_name": "mac",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtcreator_gui"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtdesignstudio",
|
||||
"os_name": "mac",
|
||||
@@ -658,12 +831,36 @@
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtdesignstudio_generation2"
|
||||
},
|
||||
{
|
||||
"arch": "qtdesignstudio.lts",
|
||||
"os_name": "mac",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtdesignstudio_generation2_lts"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreator.telemetry",
|
||||
"os_name": "mac",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_telemetry"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreator_gui.telemetry_evaluator",
|
||||
"os_name": "mac",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_telemetry_eval_gui"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreator_gui.telemetry",
|
||||
"os_name": "mac",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_telemetry_gui"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreator",
|
||||
"os_name": "windows",
|
||||
"target": "desktop",
|
||||
"tool_name": "sdktool"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.cmake",
|
||||
"os_name": "windows",
|
||||
@@ -689,7 +886,7 @@
|
||||
"tool_name": "tools_generic"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.ifw.44",
|
||||
"arch": "qt.tools.ifw.46",
|
||||
"os_name": "windows",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_ifw"
|
||||
@@ -773,22 +970,16 @@
|
||||
"tool_name": "tools_ninja"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.openssl.src",
|
||||
"arch": "qt.tools.opensslv3.src",
|
||||
"os_name": "windows",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_openssl_src"
|
||||
"tool_name": "tools_opensslv3_src"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.openssl.win_x64",
|
||||
"arch": "qt.tools.opensslv3.win_x64",
|
||||
"os_name": "windows",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_openssl_x64"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.openssl.win_x86",
|
||||
"os_name": "windows",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_openssl_x86"
|
||||
"tool_name": "tools_opensslv3_x64"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qt3dstudio",
|
||||
@@ -820,6 +1011,30 @@
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtcreator"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreator_gui",
|
||||
"os_name": "windows",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtcreator_gui"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreatorcdbext",
|
||||
"os_name": "windows",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtcreator_gui"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreatordbg",
|
||||
"os_name": "windows",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtcreator_gui"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreatordev",
|
||||
"os_name": "windows",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtcreator_gui"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.windows_kits_debuggers",
|
||||
"os_name": "windows",
|
||||
@@ -838,12 +1053,30 @@
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtdesignstudio_generation2"
|
||||
},
|
||||
{
|
||||
"arch": "qtdesignstudio.lts",
|
||||
"os_name": "windows",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_qtdesignstudio_generation2_lts"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreator.telemetry",
|
||||
"os_name": "windows",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_telemetry"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreator_gui.telemetry_evaluator",
|
||||
"os_name": "windows",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_telemetry_eval_gui"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.qtcreator_gui.telemetry",
|
||||
"os_name": "windows",
|
||||
"target": "desktop",
|
||||
"tool_name": "tools_telemetry_gui"
|
||||
},
|
||||
{
|
||||
"arch": "qt.tools.vcredist",
|
||||
"os_name": "windows",
|
||||
@@ -960,7 +1193,17 @@
|
||||
"6.2.4",
|
||||
"6.3.0",
|
||||
"6.3.1",
|
||||
"6.4.0"
|
||||
"6.3.2",
|
||||
"6.4.0",
|
||||
"6.4.1",
|
||||
"6.4.2",
|
||||
"6.4.3",
|
||||
"6.5.0",
|
||||
"6.5.1",
|
||||
"6.5.2",
|
||||
"6.5.3",
|
||||
"6.6.0",
|
||||
"6.6.1"
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -29,7 +29,7 @@ class AqtException(Exception):
|
||||
self.should_show_help: bool = should_show_help or False
|
||||
super(AqtException, self).__init__(*args, **kwargs)
|
||||
|
||||
def __format__(self, format_spec) -> str:
|
||||
def __format__(self, format_spec: str) -> str:
|
||||
base_msg = "{}".format(super(AqtException, self).__format__(format_spec))
|
||||
if not self.suggested_action:
|
||||
return base_msg
|
||||
@@ -40,7 +40,7 @@ class AqtException(Exception):
|
||||
["* " + suggestion for suggestion in self.suggested_action]
|
||||
)
|
||||
|
||||
def append_suggested_follow_up(self, suggestions: List[str]):
|
||||
def append_suggested_follow_up(self, suggestions: List[str]) -> None:
|
||||
self.suggested_action.extend(suggestions)
|
||||
|
||||
|
||||
@@ -106,3 +106,11 @@ class OutOfMemory(AqtException):
|
||||
|
||||
class QmakeNotFound(AqtException):
|
||||
pass
|
||||
|
||||
|
||||
class OutOfDiskSpace(AqtException):
|
||||
pass
|
||||
|
||||
|
||||
class DiskAccessNotPermitted(AqtException):
|
||||
pass
|
||||
|
||||
121
aqt/helper.py
121
aqt/helper.py
@@ -27,10 +27,11 @@ import os
|
||||
import posixpath
|
||||
import secrets
|
||||
import sys
|
||||
from logging import getLogger
|
||||
import threading
|
||||
from logging import Handler, getLogger
|
||||
from logging.handlers import QueueListener
|
||||
from pathlib import Path
|
||||
from typing import Callable, Dict, Generator, List, Optional, Tuple
|
||||
from typing import Any, Callable, Dict, Generator, List, Optional, TextIO, Tuple, Union
|
||||
from urllib.parse import urlparse
|
||||
from xml.etree.ElementTree import Element
|
||||
|
||||
@@ -48,7 +49,7 @@ from aqt.exceptions import (
|
||||
)
|
||||
|
||||
|
||||
def _get_meta(url: str):
|
||||
def _get_meta(url: str) -> requests.Response:
|
||||
return requests.get(url + ".meta4")
|
||||
|
||||
|
||||
@@ -57,7 +58,7 @@ def _check_content_type(ct: str) -> bool:
|
||||
return any(ct.startswith(t) for t in candidate)
|
||||
|
||||
|
||||
def getUrl(url: str, timeout, expected_hash: Optional[bytes] = None) -> str:
|
||||
def getUrl(url: str, timeout: Tuple[float, float], expected_hash: Optional[bytes] = None) -> str:
|
||||
"""
|
||||
Gets a file from `url` via HTTP GET.
|
||||
|
||||
@@ -91,9 +92,17 @@ def getUrl(url: str, timeout, expected_hash: Optional[bytes] = None) -> str:
|
||||
if r.status_code != 200:
|
||||
msg = f"Failed to retrieve file at {url}\nServer response code: {r.status_code}, reason: {r.reason}"
|
||||
raise ArchiveDownloadError(msg)
|
||||
result = r.text
|
||||
result: str = r.text
|
||||
filename = url.split("/")[-1]
|
||||
actual_hash = hashlib.sha256(bytes(result, "utf-8")).digest()
|
||||
_kwargs = {"usedforsecurity": False} if sys.version_info >= (3, 9) else {}
|
||||
if Settings.hash_algorithm == "sha256":
|
||||
actual_hash = hashlib.sha256(bytes(result, "utf-8"), **_kwargs).digest()
|
||||
elif Settings.hash_algorithm == "sha1":
|
||||
actual_hash = hashlib.sha1(bytes(result, "utf-8"), **_kwargs).digest()
|
||||
elif Settings.hash_algorithm == "md5":
|
||||
actual_hash = hashlib.md5(bytes(result, "utf-8"), **_kwargs).digest()
|
||||
else:
|
||||
raise ArchiveChecksumError(f"Unknown hash algorithm: {Settings.hash_algorithm}.\nPlease check settings.ini")
|
||||
if expected_hash is not None and expected_hash != actual_hash:
|
||||
raise ArchiveChecksumError(
|
||||
f"Downloaded file {filename} is corrupted! Detect checksum error.\n"
|
||||
@@ -103,7 +112,7 @@ def getUrl(url: str, timeout, expected_hash: Optional[bytes] = None) -> str:
|
||||
return result
|
||||
|
||||
|
||||
def downloadBinaryFile(url: str, out: Path, hash_algo: str, exp: bytes, timeout):
|
||||
def downloadBinaryFile(url: str, out: Path, hash_algo: str, exp: Optional[bytes], timeout: Tuple[float, float]) -> None:
|
||||
logger = getLogger("aqt.helper")
|
||||
filename = Path(url).name
|
||||
with requests.sessions.Session() as session:
|
||||
@@ -125,7 +134,10 @@ def downloadBinaryFile(url: str, out: Path, hash_algo: str, exp: bytes, timeout)
|
||||
except requests.exceptions.Timeout as e:
|
||||
raise ArchiveConnectionError(f"Connection timeout: {e.args}") from e
|
||||
else:
|
||||
hash = hashlib.new(hash_algo)
|
||||
if sys.version_info >= (3, 9):
|
||||
hash = hashlib.new(hash_algo, usedforsecurity=False)
|
||||
else:
|
||||
hash = hashlib.new(hash_algo)
|
||||
try:
|
||||
with open(out, "wb") as fd:
|
||||
for chunk in r.iter_content(chunk_size=8196):
|
||||
@@ -142,7 +154,7 @@ def downloadBinaryFile(url: str, out: Path, hash_algo: str, exp: bytes, timeout)
|
||||
)
|
||||
|
||||
|
||||
def retry_on_errors(action: Callable[[], any], acceptable_errors: Tuple, num_retries: int, name: str):
|
||||
def retry_on_errors(action: Callable[[], Any], acceptable_errors: Tuple, num_retries: int, name: str) -> Any:
|
||||
logger = getLogger("aqt.helper")
|
||||
for i in range(num_retries):
|
||||
try:
|
||||
@@ -158,7 +170,7 @@ def retry_on_errors(action: Callable[[], any], acceptable_errors: Tuple, num_ret
|
||||
raise e from e
|
||||
|
||||
|
||||
def retry_on_bad_connection(function: Callable[[str], any], base_url: str):
|
||||
def retry_on_bad_connection(function: Callable[[str], Any], base_url: str) -> Any:
|
||||
logger = getLogger("aqt.helper")
|
||||
fallback_url = secrets.choice(Settings.fallbacks)
|
||||
try:
|
||||
@@ -177,7 +189,7 @@ def iter_list_reps(_list: List, num_reps: int) -> Generator:
|
||||
list_index = 0
|
||||
|
||||
|
||||
def get_hash(archive_path: str, algorithm: str, timeout) -> bytes:
|
||||
def get_hash(archive_path: str, algorithm: str, timeout: Tuple[float, float]) -> bytes:
|
||||
"""
|
||||
Downloads a checksum and unhexlifies it to a `bytes` object, guaranteed to be the right length.
|
||||
Raises ChecksumDownloadFailure if the download failed, or if the checksum was un unexpected length.
|
||||
@@ -206,11 +218,11 @@ def get_hash(archive_path: str, algorithm: str, timeout) -> bytes:
|
||||
)
|
||||
|
||||
|
||||
def altlink(url: str, alt: str):
|
||||
def altlink(url: str, alt: str) -> str:
|
||||
"""
|
||||
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.
|
||||
Blacklisting redirected(alt) location based on Settings. Blacklist configuration.
|
||||
When found black url, then try download an url + .meta4 that is a metalink version4
|
||||
xml file, parse it and retrieve the best alternative url.
|
||||
"""
|
||||
logger = getLogger("aqt.helper")
|
||||
if not any(alt.startswith(b) for b in Settings.blacklist):
|
||||
@@ -227,7 +239,7 @@ def altlink(url: str, alt: str):
|
||||
return alt
|
||||
try:
|
||||
mirror_xml = ElementTree.fromstring(m.text)
|
||||
meta_urls = {}
|
||||
meta_urls: Dict[str, str] = {}
|
||||
for f in mirror_xml.iter("{urn:ietf:params:xml:ns:metalink}file"):
|
||||
for u in f.iter("{urn:ietf:params:xml:ns:metalink}url"):
|
||||
meta_urls[u.attrib["priority"]] = u.text
|
||||
@@ -239,21 +251,18 @@ def altlink(url: str, alt: str):
|
||||
else:
|
||||
# Return first priority item which is not blacklist in mirrors list,
|
||||
# if not found then return alt in default
|
||||
return next(
|
||||
filter(
|
||||
lambda mirror: not any(mirror.startswith(b) for b in Settings.blacklist),
|
||||
mirrors,
|
||||
),
|
||||
alt,
|
||||
)
|
||||
try:
|
||||
return next(mirror for mirror in mirrors if not any(mirror.startswith(b) for b in Settings.blacklist))
|
||||
except StopIteration:
|
||||
return alt
|
||||
|
||||
|
||||
class MyQueueListener(QueueListener):
|
||||
def __init__(self, queue):
|
||||
handlers = []
|
||||
handlers: List[Handler] = []
|
||||
super().__init__(queue, *handlers)
|
||||
|
||||
def handle(self, record):
|
||||
def handle(self, record) -> None:
|
||||
"""
|
||||
Handle a record from subprocess.
|
||||
Override logger name then handle at proper logger.
|
||||
@@ -264,7 +273,7 @@ class MyQueueListener(QueueListener):
|
||||
logger.handle(record)
|
||||
|
||||
|
||||
def ssplit(data: str):
|
||||
def ssplit(data: str) -> Generator[str, None, None]:
|
||||
for element in data.split(","):
|
||||
yield element.strip()
|
||||
|
||||
@@ -284,9 +293,9 @@ def xml_to_modules(
|
||||
parsed_xml = ElementTree.fromstring(xml_text)
|
||||
except ElementTree.ParseError as perror:
|
||||
raise ArchiveListError(f"Downloaded metadata is corrupted. {perror}") from perror
|
||||
packages = {}
|
||||
packages: Dict[str, Dict[str, str]] = {}
|
||||
for packageupdate in parsed_xml.iter("PackageUpdate"):
|
||||
if predicate and not predicate(packageupdate):
|
||||
if not predicate(packageupdate):
|
||||
continue
|
||||
name = packageupdate.find("Name").text
|
||||
packages[name] = {}
|
||||
@@ -302,7 +311,7 @@ def xml_to_modules(
|
||||
|
||||
|
||||
class MyConfigParser(configparser.ConfigParser):
|
||||
def getlist(self, section: str, option: str, fallback=[]) -> List[str]:
|
||||
def getlist(self, section: str, option: str, fallback: List[str] = []) -> List[str]:
|
||||
value = self.get(section, option, fallback=None)
|
||||
if value is None:
|
||||
return fallback
|
||||
@@ -312,7 +321,7 @@ class MyConfigParser(configparser.ConfigParser):
|
||||
result = fallback
|
||||
return result
|
||||
|
||||
def getlistint(self, section: str, option: str, fallback=[]):
|
||||
def getlistint(self, section: str, option: str, fallback: List[int] = []) -> List[int]:
|
||||
try:
|
||||
result = [int(x) for x in self.getlist(section, option)]
|
||||
except Exception:
|
||||
@@ -324,15 +333,32 @@ class SettingsClass:
|
||||
"""
|
||||
Class to hold configuration and settings.
|
||||
Actual values are stored in 'settings.ini' file.
|
||||
It also holds a combinations database.
|
||||
It also holds a `combinations` database.
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self.config = MyConfigParser()
|
||||
self.configfile = os.path.join(os.path.dirname(__file__), "settings.ini")
|
||||
self.loggingconf = os.path.join(os.path.dirname(__file__), "logging.ini")
|
||||
# this class is Borg
|
||||
_shared_state: Dict[str, Any] = {
|
||||
"config": None,
|
||||
"configfile": None,
|
||||
"loggingconf": None,
|
||||
"_combinations": None,
|
||||
"_lock": threading.Lock(),
|
||||
}
|
||||
|
||||
def load_settings(self, file=None):
|
||||
def __new__(cls, *p, **k):
|
||||
self = object.__new__(cls, *p, **k)
|
||||
self.__dict__ = cls._shared_state
|
||||
return self
|
||||
|
||||
def __init__(self):
|
||||
if self.config is None:
|
||||
with self._lock:
|
||||
if self.config is None:
|
||||
self.config = MyConfigParser()
|
||||
self.configfile = os.path.join(os.path.dirname(__file__), "settings.ini")
|
||||
self.loggingconf = os.path.join(os.path.dirname(__file__), "logging.ini")
|
||||
|
||||
def load_settings(self, file: Optional[Union[str, TextIO]] = None) -> None:
|
||||
with open(
|
||||
os.path.join(os.path.dirname(__file__), "combinations.json"),
|
||||
"r",
|
||||
@@ -347,15 +373,11 @@ class SettingsClass:
|
||||
else:
|
||||
# passed through command line argparse.FileType("r")
|
||||
self.config.read_file(file)
|
||||
self.configfile = file
|
||||
self.configfile = file.name
|
||||
file.close()
|
||||
else:
|
||||
if isinstance(self.configfile, str):
|
||||
with open(self.configfile, "r") as f:
|
||||
self.config.read_file(f)
|
||||
else:
|
||||
self.configfile.seek(0)
|
||||
self.config.read_file(self.configfile)
|
||||
with open(self.configfile, "r") as f:
|
||||
self.config.read_file(f)
|
||||
|
||||
@property
|
||||
def qt_combinations(self):
|
||||
@@ -445,6 +467,14 @@ class SettingsClass:
|
||||
def max_retries_to_retrieve_hash(self):
|
||||
return self.config.getint("requests", "max_retries_to_retrieve_hash", fallback=int(self.max_retries))
|
||||
|
||||
@property
|
||||
def hash_algorithm(self):
|
||||
return self.config.get("requests", "hash_algorithm", fallback="sha256")
|
||||
|
||||
@property
|
||||
def ignore_hash(self):
|
||||
return self.config.getboolean("requests", "INSECURE_NOT_FOR_PRODUCTION_ignore_hash", fallback=False)
|
||||
|
||||
@property
|
||||
def backoff_factor(self):
|
||||
return self.config.getfloat("requests", "retry_backoff", fallback=0.1)
|
||||
@@ -485,6 +515,5 @@ Settings = SettingsClass()
|
||||
def setup_logging(env_key="LOG_CFG"):
|
||||
config = os.getenv(env_key, None)
|
||||
if config is not None and os.path.exists(config):
|
||||
logging.config.fileConfig(config)
|
||||
else:
|
||||
logging.config.fileConfig(Settings.loggingconf)
|
||||
Settings.loggingconf = config
|
||||
logging.config.fileConfig(Settings.loggingconf)
|
||||
|
||||
407
aqt/installer.py
407
aqt/installer.py
@@ -22,6 +22,7 @@
|
||||
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
import argparse
|
||||
import errno
|
||||
import gc
|
||||
import multiprocessing
|
||||
import os
|
||||
@@ -30,15 +31,17 @@ import posixpath
|
||||
import signal
|
||||
import subprocess
|
||||
import sys
|
||||
import tarfile
|
||||
import time
|
||||
import zipfile
|
||||
from logging import getLogger
|
||||
from logging.handlers import QueueHandler
|
||||
from pathlib import Path
|
||||
from tempfile import TemporaryDirectory
|
||||
from typing import List, Optional
|
||||
from typing import List, Optional, Tuple, cast
|
||||
|
||||
import aqt
|
||||
from aqt.archives import QtArchives, QtPackage, SrcDocExamplesArchives, ToolArchives
|
||||
from aqt.archives import QtArchives, QtPackage, SrcDocExamplesArchives, TargetConfig, ToolArchives
|
||||
from aqt.exceptions import (
|
||||
AqtException,
|
||||
ArchiveChecksumError,
|
||||
@@ -47,6 +50,8 @@ from aqt.exceptions import (
|
||||
ArchiveListError,
|
||||
CliInputError,
|
||||
CliKeyboardInterrupt,
|
||||
DiskAccessNotPermitted,
|
||||
OutOfDiskSpace,
|
||||
OutOfMemory,
|
||||
)
|
||||
from aqt.helper import (
|
||||
@@ -59,7 +64,7 @@ from aqt.helper import (
|
||||
setup_logging,
|
||||
)
|
||||
from aqt.metadata import ArchiveId, MetadataFactory, QtRepoProperty, SimpleSpec, Version, show_list, suggested_follow_up
|
||||
from aqt.updater import Notifier, Updater
|
||||
from aqt.updater import Notifier, Updater, dir_for_version
|
||||
|
||||
try:
|
||||
import py7zr
|
||||
@@ -69,6 +74,75 @@ except ImportError:
|
||||
EXT7Z = True
|
||||
|
||||
|
||||
class BaseArgumentParser(argparse.ArgumentParser):
|
||||
"""Global options and subcommand trick"""
|
||||
|
||||
config: Optional[str]
|
||||
func: object
|
||||
|
||||
|
||||
class ListArgumentParser(BaseArgumentParser):
|
||||
"""List-* command parser arguments and options"""
|
||||
|
||||
arch: Optional[str]
|
||||
archives: List[str]
|
||||
extension: str
|
||||
extensions: str
|
||||
host: str
|
||||
last_version: str
|
||||
latest_version: bool
|
||||
long: bool
|
||||
long_modules: List[str]
|
||||
modules: List[str]
|
||||
qt_version_spec: str
|
||||
spec: str
|
||||
target: str
|
||||
|
||||
|
||||
class ListToolArgumentParser(ListArgumentParser):
|
||||
"""List-tool command options"""
|
||||
|
||||
tool_name: str
|
||||
tool_version: str
|
||||
|
||||
|
||||
class CommonInstallArgParser(BaseArgumentParser):
|
||||
"""Install-*/install common arguments"""
|
||||
|
||||
is_legacy: bool
|
||||
target: str
|
||||
host: str
|
||||
|
||||
outputdir: Optional[str]
|
||||
base: Optional[str]
|
||||
timeout: Optional[float]
|
||||
external: Optional[str]
|
||||
internal: bool
|
||||
keep: bool
|
||||
archive_dest: Optional[str]
|
||||
|
||||
|
||||
class InstallArgParser(CommonInstallArgParser):
|
||||
"""Install-qt arguments and options"""
|
||||
|
||||
arch: Optional[str]
|
||||
qt_version: str
|
||||
qt_version_spec: str
|
||||
|
||||
modules: Optional[List[str]]
|
||||
archives: Optional[List[str]]
|
||||
noarchives: bool
|
||||
autodesktop: bool
|
||||
|
||||
|
||||
class InstallToolArgParser(CommonInstallArgParser):
|
||||
"""Install-tool arguments and options"""
|
||||
|
||||
tool_name: str
|
||||
version: Optional[str]
|
||||
tool_variant: Optional[str]
|
||||
|
||||
|
||||
class Cli:
|
||||
"""CLI main class to parse command line argument and launch proper functions."""
|
||||
|
||||
@@ -121,7 +195,7 @@ class Cli:
|
||||
f"Arguments: `{sys.argv}` Host: `{platform.uname()}`\n"
|
||||
"===========================PLEASE FILE A BUG REPORT===========================\n"
|
||||
"You have discovered a bug in aqt.\n"
|
||||
"Please file a bug report at https://github.com/miurahr/aqtinstall/issues.\n"
|
||||
"Please file a bug report at https://github.com/miurahr/aqtinstall/issues\n"
|
||||
"Please remember to include a copy of this program's output in your report."
|
||||
)
|
||||
return Cli.UNHANDLED_EXCEPTION_CODE
|
||||
@@ -144,21 +218,42 @@ class Cli:
|
||||
def _check_qt_arg_version_offline(self, version):
|
||||
return version in Settings.available_offline_installer_version
|
||||
|
||||
def _set_sevenzip(self, external):
|
||||
sevenzip = external
|
||||
if sevenzip is None:
|
||||
return None
|
||||
def _warning_unknown_qt_version(self, qt_version: str) -> str:
|
||||
return self._warning_on_bad_combination(f'Qt version "{qt_version}"')
|
||||
|
||||
def _warning_unknown_target_arch_combo(self, args: List[str]) -> str:
|
||||
return self._warning_on_bad_combination(f"target combination \"{' '.join(args)}\"")
|
||||
|
||||
def _warning_unexpected_modules(self, unexpected_modules: List[str]) -> str:
|
||||
return self._warning_on_bad_combination(f"modules {unexpected_modules}")
|
||||
|
||||
def _warning_on_bad_combination(self, combo_message: str) -> str:
|
||||
return (
|
||||
f"Specified {combo_message} did not exist when this version of aqtinstall was released. "
|
||||
"This may not install properly, but we will try our best."
|
||||
)
|
||||
|
||||
def _set_sevenzip(self, external: Optional[str]) -> Optional[str]:
|
||||
sevenzip = external
|
||||
fallback = Settings.zipcmd
|
||||
if sevenzip is None:
|
||||
if EXT7Z:
|
||||
self.logger.warning(f"The py7zr module failed to load. Falling back to '{fallback}' for .7z extraction.")
|
||||
self.logger.warning("You can use the '--external | -E' flags to select your own extraction tool.")
|
||||
sevenzip = fallback
|
||||
else:
|
||||
# Just use py7zr
|
||||
return None
|
||||
try:
|
||||
subprocess.run(
|
||||
[sevenzip, "--help"],
|
||||
stdout=subprocess.DEVNULL,
|
||||
stderr=subprocess.DEVNULL,
|
||||
)
|
||||
return sevenzip
|
||||
except FileNotFoundError as e:
|
||||
raise CliInputError("Specified 7zip command executable does not exist: {!r}".format(sevenzip)) from e
|
||||
|
||||
return sevenzip
|
||||
qualifier = "Specified" if sevenzip == external else "Fallback"
|
||||
raise CliInputError(f"{qualifier} 7zip command executable does not exist: '{sevenzip}'") from e
|
||||
|
||||
@staticmethod
|
||||
def _set_arch(arch: Optional[str], os_name: str, target: str, qt_version_or_spec: str) -> str:
|
||||
@@ -188,13 +283,10 @@ class Cli:
|
||||
return False
|
||||
return True
|
||||
|
||||
def _check_modules_arg(self, qt_version, modules):
|
||||
if modules is None:
|
||||
return True
|
||||
def _select_unexpected_modules(self, qt_version: str, modules: Optional[List[str]]) -> List[str]:
|
||||
"""Returns a sorted list of all the requested modules that do not exist in the combinations.json file."""
|
||||
available = Settings.available_modules(qt_version)
|
||||
if available is None:
|
||||
return False
|
||||
return all([m in available for m in modules])
|
||||
return sorted(set(modules or []) - set(available or []))
|
||||
|
||||
@staticmethod
|
||||
def _determine_qt_version(
|
||||
@@ -207,7 +299,8 @@ class Cli:
|
||||
|
||||
def opt_version_for_spec(ext: str, _spec: SimpleSpec) -> Optional[Version]:
|
||||
try:
|
||||
return MetadataFactory(ArchiveId("qt", host, target, ext), spec=_spec, base_url=base_url).getList().latest()
|
||||
meta = MetadataFactory(ArchiveId("qt", host, target), spec=_spec, base_url=base_url)
|
||||
return meta.fetch_latest_version(ext)
|
||||
except AqtException:
|
||||
return None
|
||||
|
||||
@@ -248,7 +341,7 @@ class Cli:
|
||||
dest.mkdir(parents=True, exist_ok=True)
|
||||
return dest
|
||||
|
||||
def run_install_qt(self, args):
|
||||
def run_install_qt(self, args: InstallArgParser):
|
||||
"""Run install subcommand"""
|
||||
start_time = time.perf_counter()
|
||||
self.show_aqt_version()
|
||||
@@ -256,9 +349,8 @@ class Cli:
|
||||
self._warn_on_deprecated_command("install", "install-qt")
|
||||
target: str = args.target
|
||||
os_name: str = args.host
|
||||
arch: str = self._set_arch(
|
||||
args.arch, os_name, target, getattr(args, "qt_version", getattr(args, "qt_version_spec", None))
|
||||
)
|
||||
qt_version_or_spec: str = getattr(args, "qt_version", getattr(args, "qt_version_spec", ""))
|
||||
arch: str = self._set_arch(args.arch, os_name, target, qt_version_or_spec)
|
||||
keep: bool = args.keep or Settings.always_keep_archives
|
||||
archive_dest: Optional[str] = args.archive_dest
|
||||
output_dir = args.outputdir
|
||||
@@ -272,9 +364,6 @@ class Cli:
|
||||
timeout = (Settings.connection_timeout, Settings.response_timeout)
|
||||
modules = args.modules
|
||||
sevenzip = self._set_sevenzip(args.external)
|
||||
if EXT7Z and sevenzip is None:
|
||||
# override when py7zr is not exist
|
||||
sevenzip = self._set_sevenzip("7z")
|
||||
if args.base is not None:
|
||||
if not self._check_mirror(args.base):
|
||||
raise CliInputError(
|
||||
@@ -287,7 +376,7 @@ class Cli:
|
||||
if hasattr(args, "qt_version_spec"):
|
||||
qt_version: str = str(Cli._determine_qt_version(args.qt_version_spec, os_name, target, arch, base_url=base))
|
||||
else:
|
||||
qt_version: str = args.qt_version
|
||||
qt_version = args.qt_version
|
||||
Cli._validate_version_str(qt_version)
|
||||
archives = args.archives
|
||||
if args.noarchives:
|
||||
@@ -297,19 +386,38 @@ class Cli:
|
||||
raise CliInputError("Options `--archives` and `--noarchives` are mutually exclusive.")
|
||||
else:
|
||||
if modules is not None and archives is not None:
|
||||
archives.append(modules)
|
||||
archives.extend(modules)
|
||||
nopatch = args.noarchives or (archives is not None and "qtbase" not in archives) # type: bool
|
||||
if not self._check_qt_arg_versions(qt_version):
|
||||
self.logger.warning("Specified Qt version is unknown: {}.".format(qt_version))
|
||||
if not self._check_qt_arg_combination(qt_version, os_name, target, arch):
|
||||
self.logger.warning(
|
||||
"Specified target combination is not valid or unknown: {} {} {}".format(os_name, target, arch)
|
||||
)
|
||||
all_extra = True if modules is not None and "all" in modules else False
|
||||
if not all_extra and not self._check_modules_arg(qt_version, modules):
|
||||
self.logger.warning("Some of specified modules are unknown.")
|
||||
should_autoinstall: bool = args.autodesktop
|
||||
_version = Version(qt_version)
|
||||
base_path = Path(base_dir)
|
||||
|
||||
qt_archives = retry_on_bad_connection(
|
||||
expect_desktop_archdir, autodesk_arch = self._get_autodesktop_dir_and_arch(
|
||||
should_autoinstall, os_name, target, base_path, _version, arch
|
||||
)
|
||||
|
||||
def get_auto_desktop_archives() -> List[QtPackage]:
|
||||
def to_archives(baseurl: str) -> QtArchives:
|
||||
return QtArchives(os_name, "desktop", qt_version, cast(str, autodesk_arch), base=baseurl, timeout=timeout)
|
||||
|
||||
if autodesk_arch is not None:
|
||||
return cast(QtArchives, retry_on_bad_connection(to_archives, base)).archives
|
||||
else:
|
||||
return []
|
||||
|
||||
auto_desktop_archives: List[QtPackage] = get_auto_desktop_archives()
|
||||
|
||||
if not self._check_qt_arg_versions(qt_version):
|
||||
self.logger.warning(self._warning_unknown_qt_version(qt_version))
|
||||
if not self._check_qt_arg_combination(qt_version, os_name, target, arch):
|
||||
self.logger.warning(self._warning_unknown_target_arch_combo([os_name, target, arch]))
|
||||
all_extra = True if modules is not None and "all" in modules else False
|
||||
if not all_extra:
|
||||
unexpected_modules = self._select_unexpected_modules(qt_version, modules)
|
||||
if unexpected_modules:
|
||||
self.logger.warning(self._warning_unexpected_modules(unexpected_modules))
|
||||
|
||||
qt_archives: QtArchives = retry_on_bad_connection(
|
||||
lambda base_url: QtArchives(
|
||||
os_name,
|
||||
target,
|
||||
@@ -324,23 +432,28 @@ class Cli:
|
||||
),
|
||||
base,
|
||||
)
|
||||
qt_archives.archives.extend(auto_desktop_archives)
|
||||
target_config = qt_archives.get_target_config()
|
||||
with TemporaryDirectory() as temp_dir:
|
||||
_archive_dest = Cli.choose_archive_dest(archive_dest, keep, temp_dir)
|
||||
run_installer(qt_archives.get_packages(), base_dir, sevenzip, keep, _archive_dest)
|
||||
|
||||
if not nopatch:
|
||||
Updater.update(target_config, base_dir)
|
||||
Updater.update(target_config, base_path, expect_desktop_archdir)
|
||||
if autodesk_arch is not None:
|
||||
d_target_config = TargetConfig(str(_version), "desktop", autodesk_arch, os_name)
|
||||
Updater.update(d_target_config, base_path, expect_desktop_archdir)
|
||||
Notifier.notify_sdk(target_config, base_dir)
|
||||
self.logger.info("Finished installation")
|
||||
self.logger.info("Time elapsed: {time:.8f} second".format(time=time.perf_counter() - start_time))
|
||||
|
||||
def _run_src_doc_examples(self, flavor, args, cmd_name: Optional[str] = None):
|
||||
if not cmd_name:
|
||||
cmd_name = flavor
|
||||
|
||||
self.show_aqt_version()
|
||||
if args.is_legacy:
|
||||
self._warn_on_deprecated_command(old_name=cmd_name, new_name=f"install-{cmd_name}")
|
||||
if cmd_name is None:
|
||||
self._warn_on_deprecated_command(old_name=flavor, new_name=f"install-{flavor}")
|
||||
else:
|
||||
self._warn_on_deprecated_command(old_name=cmd_name, new_name=f"install-{cmd_name}")
|
||||
elif getattr(args, "target", None) is not None:
|
||||
self._warn_on_deprecated_parameter("target", args.target)
|
||||
target = "desktop" # The only valid target for src/doc/examples is "desktop"
|
||||
@@ -366,14 +479,11 @@ class Cli:
|
||||
else:
|
||||
timeout = (Settings.connection_timeout, Settings.response_timeout)
|
||||
sevenzip = self._set_sevenzip(args.external)
|
||||
if EXT7Z and sevenzip is None:
|
||||
# override when py7zr is not exist
|
||||
sevenzip = self._set_sevenzip(Settings.zipcmd)
|
||||
modules = getattr(args, "modules", None) # `--modules` is invalid for `install-src`
|
||||
archives = args.archives
|
||||
all_extra = True if modules is not None and "all" in modules else False
|
||||
if not self._check_qt_arg_versions(qt_version):
|
||||
self.logger.warning("Specified Qt version is unknown: {}.".format(qt_version))
|
||||
self.logger.warning(self._warning_unknown_qt_version(qt_version))
|
||||
|
||||
srcdocexamples_archives: SrcDocExamplesArchives = retry_on_bad_connection(
|
||||
lambda base_url: SrcDocExamplesArchives(
|
||||
@@ -425,7 +535,7 @@ class Cli:
|
||||
self._run_src_doc_examples("doc", args)
|
||||
self.logger.info("Time elapsed: {time:.8f} second".format(time=time.perf_counter() - start_time))
|
||||
|
||||
def run_install_tool(self, args):
|
||||
def run_install_tool(self, args: InstallToolArgParser):
|
||||
"""Run tool subcommand"""
|
||||
start_time = time.perf_counter()
|
||||
self.show_aqt_version()
|
||||
@@ -440,9 +550,6 @@ class Cli:
|
||||
else:
|
||||
base_dir = output_dir
|
||||
sevenzip = self._set_sevenzip(args.external)
|
||||
if EXT7Z and sevenzip is None:
|
||||
# override when py7zr is not exist
|
||||
sevenzip = self._set_sevenzip(Settings.zipcmd)
|
||||
version = getattr(args, "version", None)
|
||||
if version is not None:
|
||||
Cli._validate_version_str(version, allow_minus=True)
|
||||
@@ -457,10 +564,10 @@ class Cli:
|
||||
else:
|
||||
timeout = (Settings.connection_timeout, Settings.response_timeout)
|
||||
if args.tool_variant is None:
|
||||
archive_id = ArchiveId("tools", os_name, target, "")
|
||||
archive_id = ArchiveId("tools", os_name, target)
|
||||
meta = MetadataFactory(archive_id, base_url=base, is_latest_version=True, tool_name=tool_name)
|
||||
try:
|
||||
archs = meta.getList()
|
||||
archs: List[str] = cast(list, meta.getList())
|
||||
except ArchiveDownloadError as e:
|
||||
msg = f"Failed to locate XML data for the tool '{tool_name}'."
|
||||
raise ArchiveListError(msg, suggested_action=suggested_follow_up(meta)) from e
|
||||
@@ -470,7 +577,7 @@ class Cli:
|
||||
|
||||
for arch in archs:
|
||||
if not self._check_tools_arg_combination(os_name, tool_name, arch):
|
||||
self.logger.warning("Specified target combination is not valid: {} {} {}".format(os_name, tool_name, arch))
|
||||
self.logger.warning(self._warning_unknown_target_arch_combo([os_name, tool_name, arch]))
|
||||
|
||||
tool_archives: ToolArchives = retry_on_bad_connection(
|
||||
lambda base_url: ToolArchives(
|
||||
@@ -490,22 +597,38 @@ class Cli:
|
||||
self.logger.info("Finished installation")
|
||||
self.logger.info("Time elapsed: {time:.8f} second".format(time=time.perf_counter() - start_time))
|
||||
|
||||
def run_list_qt(self, args: argparse.ArgumentParser):
|
||||
def run_list_qt(self, args: ListArgumentParser):
|
||||
"""Print versions of Qt, extensions, modules, architectures"""
|
||||
|
||||
if args.extensions:
|
||||
self._warn_on_deprecated_parameter("extensions", args.extensions)
|
||||
self.logger.warning(
|
||||
"The '--extensions' flag will always return an empty list, "
|
||||
"because there are no useful arguments for the '--extension' flag."
|
||||
)
|
||||
print("")
|
||||
return
|
||||
if args.extension:
|
||||
self._warn_on_deprecated_parameter("extension", args.extension)
|
||||
self.logger.warning("The '--extension' flag will be ignored.")
|
||||
|
||||
if not args.target:
|
||||
print(" ".join(ArchiveId.TARGETS_FOR_HOST[args.host]))
|
||||
return
|
||||
if args.target not in ArchiveId.TARGETS_FOR_HOST[args.host]:
|
||||
raise CliInputError("'{0.target}' is not a valid target for host '{0.host}'".format(args))
|
||||
if args.modules:
|
||||
modules_ver, modules_query, is_long = args.modules[0], tuple(args.modules), False
|
||||
assert len(args.modules) == 2, "broken argument parser for list-qt"
|
||||
modules_query = MetadataFactory.ModulesQuery(args.modules[0], args.modules[1])
|
||||
modules_ver, is_long = args.modules[0], False
|
||||
elif args.long_modules:
|
||||
modules_ver, modules_query, is_long = args.long_modules[0], tuple(args.long_modules), True
|
||||
assert args.long_modules and len(args.long_modules) == 2, "broken argument parser for list-qt"
|
||||
modules_query = MetadataFactory.ModulesQuery(args.long_modules[0], args.long_modules[1])
|
||||
modules_ver, is_long = args.long_modules[0], True
|
||||
else:
|
||||
modules_ver, modules_query, is_long = None, None, False
|
||||
|
||||
for version_str in (modules_ver, args.extensions, args.arch, args.archives[0] if args.archives else None):
|
||||
for version_str in (modules_ver, args.arch, args.archives[0] if args.archives else None):
|
||||
Cli._validate_version_str(version_str, allow_latest=True, allow_empty=True)
|
||||
|
||||
spec = None
|
||||
@@ -516,23 +639,17 @@ class Cli:
|
||||
raise CliInputError(f"Invalid version specification: '{args.spec}'.\n" + SimpleSpec.usage()) from e
|
||||
|
||||
meta = MetadataFactory(
|
||||
archive_id=ArchiveId(
|
||||
"qt",
|
||||
args.host,
|
||||
args.target,
|
||||
args.extension if args.extension else "",
|
||||
),
|
||||
archive_id=ArchiveId("qt", args.host, args.target),
|
||||
spec=spec,
|
||||
is_latest_version=args.latest_version,
|
||||
modules_query=modules_query,
|
||||
is_long_listing=is_long,
|
||||
extensions_ver=args.extensions,
|
||||
architectures_ver=args.arch,
|
||||
archives_query=args.archives,
|
||||
)
|
||||
show_list(meta)
|
||||
|
||||
def run_list_tool(self, args: argparse.ArgumentParser):
|
||||
def run_list_tool(self, args: ListToolArgumentParser):
|
||||
"""Print tools"""
|
||||
|
||||
if not args.target:
|
||||
@@ -548,13 +665,13 @@ class Cli:
|
||||
)
|
||||
show_list(meta)
|
||||
|
||||
def run_list_src_doc_examples(self, args: argparse.ArgumentParser, cmd_type: str):
|
||||
def run_list_src_doc_examples(self, args: ListArgumentParser, cmd_type: str):
|
||||
target = "desktop" # The only valid target for src/doc/examples is "desktop"
|
||||
version = Cli._determine_qt_version(args.qt_version_spec, args.host, target, arch="")
|
||||
is_fetch_modules: bool = getattr(args, "modules", False)
|
||||
meta = MetadataFactory(
|
||||
archive_id=ArchiveId("qt", args.host, target, "src_doc_examples"),
|
||||
src_doc_examples_query=(cmd_type, version, is_fetch_modules),
|
||||
archive_id=ArchiveId("qt", args.host, target),
|
||||
src_doc_examples_query=MetadataFactory.SrcDocExamplesQuery(cmd_type, version, is_fetch_modules),
|
||||
)
|
||||
show_list(meta)
|
||||
|
||||
@@ -604,6 +721,13 @@ class Cli:
|
||||
action="store_true",
|
||||
help="No base packages; allow mod amendment with --modules option.",
|
||||
)
|
||||
install_qt_parser.add_argument(
|
||||
"--autodesktop",
|
||||
action="store_true",
|
||||
help="For Qt6 android, ios, wasm, and msvc_arm64 installations, an additional desktop Qt installation is "
|
||||
"required. When enabled, this option installs the required desktop version automatically. "
|
||||
"It has no effect when the desktop installation is not required.",
|
||||
)
|
||||
|
||||
def _set_install_tool_parser(self, install_tool_parser, *, is_legacy: bool):
|
||||
install_tool_parser.set_defaults(func=self.run_install_tool, is_legacy=is_legacy)
|
||||
@@ -628,7 +752,7 @@ class Cli:
|
||||
)
|
||||
self._set_common_options(install_tool_parser)
|
||||
|
||||
def _warn_on_deprecated_command(self, old_name: str, new_name: str):
|
||||
def _warn_on_deprecated_command(self, old_name: str, new_name: str) -> None:
|
||||
self.logger.warning(
|
||||
f"The command '{old_name}' is deprecated and marked for removal in a future version of aqt.\n"
|
||||
f"In the future, please use the command '{new_name}' instead."
|
||||
@@ -641,7 +765,7 @@ class Cli:
|
||||
f"In the future, please omit this parameter."
|
||||
)
|
||||
|
||||
def _make_all_parsers(self, subparsers: argparse._SubParsersAction):
|
||||
def _make_all_parsers(self, subparsers: argparse._SubParsersAction) -> None:
|
||||
deprecated_msg = "This command is deprecated and marked for removal in a future version of aqt."
|
||||
|
||||
def make_parser_it(cmd: str, desc: str, is_legacy: bool, set_parser_cmd, formatter_class):
|
||||
@@ -697,18 +821,16 @@ class Cli:
|
||||
|
||||
def _make_list_qt_parser(self, subparsers: argparse._SubParsersAction):
|
||||
"""Creates a subparser that works with the MetadataFactory, and adds it to the `subparsers` parameter"""
|
||||
list_parser: argparse.ArgumentParser = subparsers.add_parser(
|
||||
list_parser: ListArgumentParser = subparsers.add_parser(
|
||||
"list-qt",
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
epilog="Examples:\n"
|
||||
"$ aqt list-qt mac # print all targets for Mac OS\n"
|
||||
"$ aqt list-qt mac desktop # print all versions of Qt 5\n"
|
||||
"$ aqt list-qt mac desktop --extension wasm # print all wasm versions of Qt 5\n"
|
||||
'$ aqt list-qt mac desktop --spec "5.9" # print all versions of Qt 5.9\n'
|
||||
'$ aqt list-qt mac desktop --spec "5.9" --latest-version # print latest Qt 5.9\n'
|
||||
"$ aqt list-qt mac desktop --modules 5.12.0 clang_64 # print modules for 5.12.0\n"
|
||||
"$ aqt list-qt mac desktop --spec 5.9 --modules latest clang_64 # print modules for latest 5.9\n"
|
||||
"$ aqt list-qt mac desktop --extensions 5.9.0 # print choices for --extension flag\n"
|
||||
"$ aqt list-qt mac desktop --arch 5.9.9 # print architectures for 5.9.9/mac/desktop\n"
|
||||
"$ aqt list-qt mac desktop --arch latest # print architectures for the latest Qt 5\n"
|
||||
"$ aqt list-qt mac desktop --archives 5.9.0 clang_64 # list archives in base Qt installation\n"
|
||||
@@ -725,8 +847,7 @@ class Cli:
|
||||
list_parser.add_argument(
|
||||
"--extension",
|
||||
choices=ArchiveId.ALL_EXTENSIONS,
|
||||
help="Extension of packages to list. "
|
||||
"Use the `--extensions` flag to list all relevant options for a host/target.",
|
||||
help="Deprecated since aqt v3.1.0. Use of this flag will emit a warning, but will otherwise be ignored.",
|
||||
)
|
||||
list_parser.add_argument(
|
||||
"--spec",
|
||||
@@ -759,9 +880,8 @@ class Cli:
|
||||
"--extensions",
|
||||
type=str,
|
||||
metavar="(VERSION | latest)",
|
||||
help='Qt version in the format of "5.X.Y", or the keyword "latest". '
|
||||
"When set, this prints all valid arguments for the `--extension` flag "
|
||||
"for either Qt 5.X.Y or the latest version of Qt.",
|
||||
help="Deprecated since v3.1.0. Prints a list of valid arguments for the '--extension' flag. "
|
||||
"Since the '--extension' flag is now deprecated, this will always print an empty list.",
|
||||
)
|
||||
output_modifier_exclusive_group.add_argument(
|
||||
"--arch",
|
||||
@@ -790,15 +910,15 @@ class Cli:
|
||||
|
||||
def _make_list_tool_parser(self, subparsers: argparse._SubParsersAction):
|
||||
"""Creates a subparser that works with the MetadataFactory, and adds it to the `subparsers` parameter"""
|
||||
list_parser: argparse.ArgumentParser = subparsers.add_parser(
|
||||
list_parser: ListArgumentParser = subparsers.add_parser(
|
||||
"list-tool",
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
epilog="Examples:\n"
|
||||
"$ aqt list-tool mac desktop # print all tools for mac desktop\n"
|
||||
"$ aqt list-tool mac desktop tools_ifw # print all tool variant names for QtIFW\n"
|
||||
"$ aqt list-tool mac desktop ifw # print all tool variant names for QtIFW\n"
|
||||
"$ aqt list-tool mac desktop -l tools_ifw # print tool variant names with metadata for QtIFW\n"
|
||||
"$ aqt list-tool mac desktop -l ifw # print tool variant names with metadata for QtIFW\n",
|
||||
"$ aqt list-tool mac desktop # print all tools for mac desktop\n"
|
||||
"$ aqt list-tool mac desktop tools_ifw # print all tool variant names for QtIFW\n"
|
||||
"$ aqt list-tool mac desktop ifw # print all tool variant names for QtIFW\n"
|
||||
"$ aqt list-tool mac desktop tools_ifw --long # print tool variant names with metadata for QtIFW\n"
|
||||
"$ aqt list-tool mac desktop ifw --long # print tool variant names with metadata for QtIFW\n",
|
||||
)
|
||||
list_parser.add_argument("host", choices=["linux", "mac", "windows"], help="host os name")
|
||||
list_parser.add_argument(
|
||||
@@ -922,7 +1042,7 @@ class Cli:
|
||||
|
||||
@staticmethod
|
||||
def _validate_version_str(
|
||||
version_str: str, *, allow_latest: bool = False, allow_empty: bool = False, allow_minus: bool = False
|
||||
version_str: Optional[str], *, allow_latest: bool = False, allow_empty: bool = False, allow_minus: bool = False
|
||||
) -> None:
|
||||
"""
|
||||
Raise CliInputError if the version is not an acceptable Version.
|
||||
@@ -933,8 +1053,13 @@ class Cli:
|
||||
:param allow_minus: If true, everything after the first '-' in the version will be ignored.
|
||||
This allows acceptance of versions like "1.2.3-0-202101020304"
|
||||
"""
|
||||
if (allow_latest and version_str == "latest") or (allow_empty and not version_str):
|
||||
if allow_latest and version_str == "latest":
|
||||
return
|
||||
if not version_str:
|
||||
if allow_empty:
|
||||
return
|
||||
else:
|
||||
raise CliInputError("Invalid empty version! Please use the form '5.X.Y'.")
|
||||
try:
|
||||
if "-" in version_str and allow_minus:
|
||||
version_str = version_str[: version_str.find("-")]
|
||||
@@ -942,6 +1067,50 @@ class Cli:
|
||||
except ValueError as e:
|
||||
raise CliInputError(f"Invalid version: '{version_str}'! Please use the form '5.X.Y'.") from e
|
||||
|
||||
def _get_autodesktop_dir_and_arch(
|
||||
self, should_autoinstall: bool, host: str, target: str, base_path: Path, version: Version, arch: str
|
||||
) -> Tuple[Optional[str], Optional[str]]:
|
||||
"""Returns expected_desktop_arch_dir, desktop_arch_to_install"""
|
||||
is_wasm = arch.startswith("wasm")
|
||||
is_msvc = "msvc" in arch
|
||||
is_win_desktop_msvc_arm64 = host == "windows" and target == "desktop" and is_msvc and arch.endswith("arm64")
|
||||
if version < Version("6.0.0") or (
|
||||
target not in ["ios", "android"] and not is_wasm and not is_win_desktop_msvc_arm64
|
||||
):
|
||||
# We only need to worry about the desktop directory for Qt6 mobile or wasm installs.
|
||||
return None, None
|
||||
|
||||
installed_desktop_arch_dir = QtRepoProperty.find_installed_desktop_qt_dir(host, base_path, version, is_msvc=is_msvc)
|
||||
if installed_desktop_arch_dir:
|
||||
# An acceptable desktop Qt is already installed, so don't do anything.
|
||||
self.logger.info(f"Found installed {host}-desktop Qt at {installed_desktop_arch_dir}")
|
||||
return installed_desktop_arch_dir.name, None
|
||||
|
||||
default_desktop_arch = MetadataFactory(ArchiveId("qt", host, "desktop")).fetch_default_desktop_arch(version, is_msvc)
|
||||
desktop_arch_dir = QtRepoProperty.get_arch_dir_name(host, default_desktop_arch, version)
|
||||
expected_desktop_arch_path = base_path / dir_for_version(version) / desktop_arch_dir
|
||||
|
||||
if is_win_desktop_msvc_arm64:
|
||||
qt_type = "MSVC Arm64"
|
||||
elif is_wasm:
|
||||
qt_type = "Qt6-WASM"
|
||||
else:
|
||||
qt_type = target
|
||||
if should_autoinstall:
|
||||
# No desktop Qt is installed, but the user has requested installation. Find out what to install.
|
||||
self.logger.info(
|
||||
f"You are installing the {qt_type} version of Qt, which requires that the desktop version of Qt "
|
||||
f"is also installed. Now installing Qt: desktop {version} {default_desktop_arch}"
|
||||
)
|
||||
return expected_desktop_arch_path.name, default_desktop_arch
|
||||
else:
|
||||
self.logger.warning(
|
||||
f"You are installing the {qt_type} version of Qt, which requires that the desktop version of Qt "
|
||||
f"is also installed. You can install it with the following command:\n"
|
||||
f" `aqt install-qt {host} desktop {version} {default_desktop_arch}`"
|
||||
)
|
||||
return expected_desktop_arch_path.name, None
|
||||
|
||||
|
||||
def is_64bit() -> bool:
|
||||
"""check if running platform is 64bit python."""
|
||||
@@ -955,7 +1124,7 @@ def run_installer(archives: List[QtPackage], base_dir: str, sevenzip: Optional[s
|
||||
#
|
||||
tasks = []
|
||||
for arc in archives:
|
||||
tasks.append((arc, base_dir, sevenzip, queue, archive_dest, keep))
|
||||
tasks.append((arc, base_dir, sevenzip, queue, archive_dest, Settings.configfile, keep))
|
||||
ctx = multiprocessing.get_context("spawn")
|
||||
if is_64bit():
|
||||
pool = ctx.Pool(Settings.concurrency, init_worker_sh, (), 4)
|
||||
@@ -972,6 +1141,23 @@ def run_installer(archives: List[QtPackage], base_dir: str, sevenzip: Optional[s
|
||||
pool.starmap(installer, tasks)
|
||||
pool.close()
|
||||
pool.join()
|
||||
except PermissionError as e: # subclass of OSError
|
||||
close_worker_pool_on_exception(e)
|
||||
raise DiskAccessNotPermitted(
|
||||
f"Failed to write to base directory at {base_dir}",
|
||||
suggested_action=[
|
||||
"Check that the destination is writable and does not already contain files owned by another user."
|
||||
],
|
||||
) from e
|
||||
except OSError as e:
|
||||
close_worker_pool_on_exception(e)
|
||||
if e.errno == errno.ENOSPC:
|
||||
raise OutOfDiskSpace(
|
||||
"Insufficient disk space to complete installation.",
|
||||
suggested_action=["Check available disk space.", "Check size requirements for installation."],
|
||||
) from e
|
||||
else:
|
||||
raise
|
||||
except KeyboardInterrupt as e:
|
||||
close_worker_pool_on_exception(e)
|
||||
raise CliKeyboardInterrupt("Installer halted by keyboard interrupt.") from e
|
||||
@@ -1010,8 +1196,8 @@ def installer(
|
||||
command: Optional[str],
|
||||
queue: multiprocessing.Queue,
|
||||
archive_dest: Path,
|
||||
keep: bool = False,
|
||||
response_timeout: Optional[int] = None,
|
||||
settings_ini: str,
|
||||
keep: bool,
|
||||
):
|
||||
"""
|
||||
Installer function to download archive files and extract it.
|
||||
@@ -1021,10 +1207,9 @@ def installer(
|
||||
base_url = qt_package.base_url
|
||||
archive: Path = archive_dest / qt_package.archive
|
||||
start_time = time.perf_counter()
|
||||
# set defaults
|
||||
Settings.load_settings()
|
||||
# set logging
|
||||
setup_logging() # XXX: why need to load again?
|
||||
Settings.load_settings(file=settings_ini)
|
||||
# setup queue logger
|
||||
setup_logging()
|
||||
qh = QueueHandler(queue)
|
||||
logger = getLogger()
|
||||
for handler in logger.handlers:
|
||||
@@ -1032,16 +1217,13 @@ def installer(
|
||||
logger.removeHandler(handler)
|
||||
logger.addHandler(qh)
|
||||
#
|
||||
if response_timeout is None:
|
||||
timeout = (Settings.connection_timeout, Settings.response_timeout)
|
||||
else:
|
||||
timeout = (Settings.connection_timeout, response_timeout)
|
||||
hash = get_hash(qt_package.archive_path, algorithm="sha256", timeout=timeout)
|
||||
timeout = (Settings.connection_timeout, Settings.response_timeout)
|
||||
hash = get_hash(qt_package.archive_path, Settings.hash_algorithm, timeout) if not Settings.ignore_hash else None
|
||||
|
||||
def download_bin(_base_url):
|
||||
url = posixpath.join(_base_url, qt_package.archive_path)
|
||||
logger.debug("Download URL: {}".format(url))
|
||||
return downloadBinaryFile(url, archive, "sha256", hash, timeout)
|
||||
return downloadBinaryFile(url, archive, Settings.hash_algorithm, hash, timeout)
|
||||
|
||||
retry_on_errors(
|
||||
action=lambda: retry_on_bad_connection(download_bin, base_url),
|
||||
@@ -1050,22 +1232,23 @@ def installer(
|
||||
name=f"Downloading {name}",
|
||||
)
|
||||
gc.collect()
|
||||
if command is None:
|
||||
|
||||
if tarfile.is_tarfile(archive):
|
||||
with tarfile.open(archive) as tar_archive:
|
||||
if hasattr(tarfile, "data_filter"):
|
||||
tar_archive.extractall(filter="tar", path=base_dir)
|
||||
else:
|
||||
# remove this when the minimum Python version is 3.12
|
||||
logger.warning("Extracting may be unsafe; consider updating Python to 3.11.4 or greater")
|
||||
tar_archive.extractall(path=base_dir)
|
||||
elif zipfile.is_zipfile(archive):
|
||||
with zipfile.ZipFile(archive) as zip_archive:
|
||||
zip_archive.extractall(path=base_dir)
|
||||
elif command is None:
|
||||
with py7zr.SevenZipFile(archive, "r") as szf:
|
||||
szf.extractall(path=base_dir)
|
||||
else:
|
||||
if base_dir is not None:
|
||||
command_args = [
|
||||
command,
|
||||
"x",
|
||||
"-aoa",
|
||||
"-bd",
|
||||
"-y",
|
||||
"-o{}".format(base_dir),
|
||||
str(archive),
|
||||
]
|
||||
else:
|
||||
command_args = [command, "x", "-aoa", "-bd", "-y", str(archive)]
|
||||
command_args = [command, "x", "-aoa", "-bd", "-y", "-o{}".format(base_dir), str(archive)]
|
||||
try:
|
||||
proc = subprocess.run(command_args, stdout=subprocess.PIPE, check=True)
|
||||
logger.debug(proc.stdout)
|
||||
|
||||
421
aqt/metadata.py
421
aqt/metadata.py
@@ -25,8 +25,10 @@ import re
|
||||
import secrets as random
|
||||
import shutil
|
||||
from abc import ABC, abstractmethod
|
||||
from functools import reduce
|
||||
from logging import getLogger
|
||||
from typing import Callable, Dict, Generator, Iterable, Iterator, List, Optional, Tuple, Union
|
||||
from pathlib import Path
|
||||
from typing import Callable, Dict, Generator, Iterable, Iterator, List, NamedTuple, Optional, Set, Tuple, Union, cast
|
||||
from urllib.parse import ParseResult, urlparse
|
||||
from xml.etree.ElementTree import Element
|
||||
|
||||
@@ -133,11 +135,11 @@ class Versions:
|
||||
versions: Union[None, Version, Iterable[Tuple[int, Iterable[Version]]]],
|
||||
):
|
||||
if versions is None:
|
||||
self.versions = list()
|
||||
self.versions: List[List[Version]] = list()
|
||||
elif isinstance(versions, Version):
|
||||
self.versions = [[versions]]
|
||||
else:
|
||||
self.versions: List[List[Version]] = [list(versions_iterator) for _, versions_iterator in versions]
|
||||
self.versions = [list(versions_iterator) for _, versions_iterator in versions]
|
||||
|
||||
def __str__(self) -> str:
|
||||
return str(self.versions)
|
||||
@@ -203,34 +205,22 @@ class ArchiveId:
|
||||
"mac": ["android", "desktop", "ios"],
|
||||
"linux": ["android", "desktop"],
|
||||
}
|
||||
ALL_EXTENSIONS = (
|
||||
"wasm",
|
||||
"src_doc_examples",
|
||||
"preview",
|
||||
"wasm_preview",
|
||||
"x86_64",
|
||||
"x86",
|
||||
"armv7",
|
||||
"arm64_v8a",
|
||||
)
|
||||
EXTENSIONS_REQUIRED_ANDROID_QT6 = "x86_64", "x86", "armv7", "arm64_v8a"
|
||||
EXTENSIONS_REQUIRED_ANDROID_QT6 = {"x86_64", "x86", "armv7", "arm64_v8a"}
|
||||
ALL_EXTENSIONS = {"", "wasm", "src_doc_examples", *EXTENSIONS_REQUIRED_ANDROID_QT6}
|
||||
|
||||
def __init__(self, category: str, host: str, target: str, extension: str = ""):
|
||||
def __init__(self, category: str, host: str, target: str):
|
||||
if category not in ArchiveId.CATEGORIES:
|
||||
raise ValueError("Category '{}' is invalid".format(category))
|
||||
if host not in ArchiveId.HOSTS:
|
||||
raise ValueError("Host '{}' is invalid".format(host))
|
||||
if target not in ArchiveId.TARGETS_FOR_HOST[host]:
|
||||
raise ValueError("Target '{}' is invalid".format(target))
|
||||
if extension and extension not in ArchiveId.ALL_EXTENSIONS:
|
||||
raise ValueError("Extension '{}' is invalid".format(extension))
|
||||
self.category: str = category
|
||||
self.host: str = host
|
||||
self.target: str = target
|
||||
self.extension: str = extension
|
||||
|
||||
def is_preview(self) -> bool:
|
||||
return "preview" in self.extension if self.extension else False
|
||||
return False
|
||||
|
||||
def is_qt(self) -> bool:
|
||||
return self.category == "qt"
|
||||
@@ -238,10 +228,6 @@ class ArchiveId:
|
||||
def is_tools(self) -> bool:
|
||||
return self.category == "tools"
|
||||
|
||||
def is_no_arch(self) -> bool:
|
||||
"""Returns True if there should be no arch attached to the module names"""
|
||||
return self.extension in ("src_doc_examples",)
|
||||
|
||||
def to_url(self) -> str:
|
||||
return "online/qtsdkrepository/{os}{arch}/{target}/".format(
|
||||
os=self.host,
|
||||
@@ -249,20 +235,29 @@ class ArchiveId:
|
||||
target=self.target,
|
||||
)
|
||||
|
||||
def to_folder(self, qt_version_no_dots: str) -> str:
|
||||
def to_folder(self, qt_version_no_dots: str, extension: Optional[str] = None) -> str:
|
||||
return "{category}{major}_{ver}{ext}".format(
|
||||
category=self.category,
|
||||
major=qt_version_no_dots[0],
|
||||
ver=qt_version_no_dots,
|
||||
ext="_" + self.extension if self.extension else "",
|
||||
ext="_" + extension if extension else "",
|
||||
)
|
||||
|
||||
def all_extensions(self, version: Version) -> List[str]:
|
||||
if self.target == "desktop" and QtRepoProperty.is_in_wasm_range(self.host, version):
|
||||
return ["", "wasm"]
|
||||
elif self.target == "desktop" and QtRepoProperty.is_in_wasm_threaded_range(version):
|
||||
return ["", "wasm_singlethread", "wasm_multithread"]
|
||||
elif self.target == "android" and version >= Version("6.0.0"):
|
||||
return list(ArchiveId.EXTENSIONS_REQUIRED_ANDROID_QT6)
|
||||
else:
|
||||
return [""]
|
||||
|
||||
def __str__(self) -> str:
|
||||
return "{cat}/{host}/{target}{ext}".format(
|
||||
return "{cat}/{host}/{target}".format(
|
||||
cat=self.category,
|
||||
host=self.host,
|
||||
target=self.target,
|
||||
ext="" if not self.extension else "/" + self.extension,
|
||||
)
|
||||
|
||||
|
||||
@@ -327,7 +322,7 @@ class TableMetadata(ABC):
|
||||
heading = [self.name_heading, *[self.map_key_to_heading(key) for key in heading_keys]]
|
||||
table.header(heading)
|
||||
table.add_rows(self._rows(heading_keys), header=False)
|
||||
return table.draw()
|
||||
return cast(str, table.draw())
|
||||
|
||||
def __bool__(self):
|
||||
return bool(self.table_data)
|
||||
@@ -374,10 +369,48 @@ class QtRepoProperty:
|
||||
Intended to help decouple the logic of aqt from specific properties of the Qt repository.
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
def dir_for_version(ver: Version) -> str:
|
||||
return "5.9" if ver == Version("5.9.0") else f"{ver.major}.{ver.minor}.{ver.patch}"
|
||||
|
||||
@staticmethod
|
||||
def get_arch_dir_name(host: str, arch: str, version: Version) -> str:
|
||||
if arch.startswith("win64_mingw"):
|
||||
return arch[6:] + "_64"
|
||||
elif arch.startswith("win32_mingw"):
|
||||
return arch[6:] + "_32"
|
||||
elif arch.startswith("win"):
|
||||
m = re.match(r"win\d{2}_(?P<msvc>msvc\d{4})_(?P<winrt>winrt_x\d{2})", arch)
|
||||
if m:
|
||||
return f"{m.group('winrt')}_{m.group('msvc')}"
|
||||
else:
|
||||
return arch[6:]
|
||||
elif host == "mac" and arch == "clang_64":
|
||||
return QtRepoProperty.default_mac_desktop_arch_dir(version)
|
||||
else:
|
||||
return arch
|
||||
|
||||
@staticmethod
|
||||
def default_linux_desktop_arch_dir() -> str:
|
||||
return "gcc_64"
|
||||
|
||||
@staticmethod
|
||||
def default_win_msvc_desktop_arch_dir(_version: Version) -> str:
|
||||
"""_version is unused, but we expect it to matter for future releases"""
|
||||
return "msvc2019_64"
|
||||
|
||||
@staticmethod
|
||||
def default_mac_desktop_arch_dir(version: Version) -> str:
|
||||
return "macos" if version in SimpleSpec(">=6.1.2") else "clang_64"
|
||||
|
||||
@staticmethod
|
||||
def extension_for_arch(architecture: str, is_version_ge_6: bool) -> str:
|
||||
if architecture == "wasm_32":
|
||||
return "wasm"
|
||||
elif architecture == "wasm_singlethread":
|
||||
return "wasm_singlethread"
|
||||
elif architecture == "wasm_multithread":
|
||||
return "wasm_multithread"
|
||||
elif architecture.startswith("android_") and is_version_ge_6:
|
||||
ext = architecture[len("android_") :]
|
||||
if ext in ArchiveId.EXTENSIONS_REQUIRED_ANDROID_QT6:
|
||||
@@ -395,22 +428,106 @@ class QtRepoProperty:
|
||||
return [ext_lt_6]
|
||||
return [ext_lt_6, ext_ge_6]
|
||||
|
||||
# Architecture, as reported in Updates.xml
|
||||
MINGW_ARCH_PATTERN = re.compile(r"^win(?P<bits>\d+)_mingw(?P<version>\d+)?$")
|
||||
# Directory that corresponds to an architecture
|
||||
MINGW_DIR_PATTERN = re.compile(r"^mingw(?P<version>\d+)?_(?P<bits>\d+)$")
|
||||
|
||||
@staticmethod
|
||||
def select_default_mingw(mingw_arches: List[str], is_dir: bool) -> Optional[str]:
|
||||
"""
|
||||
Selects a default architecture from a non-empty list of mingw architectures, matching the pattern
|
||||
MetadataFactory.MINGW_ARCH_PATTERN. Meant to be called on a list of installed mingw architectures,
|
||||
or a list of architectures available for installation.
|
||||
"""
|
||||
|
||||
ArchBitsVer = Tuple[str, int, Optional[int]]
|
||||
pattern = QtRepoProperty.MINGW_DIR_PATTERN if is_dir else QtRepoProperty.MINGW_ARCH_PATTERN
|
||||
|
||||
def mingw_arch_with_bits_and_version(arch: str) -> Optional[ArchBitsVer]:
|
||||
match = pattern.match(arch)
|
||||
if not match:
|
||||
return None
|
||||
bits = int(match.group("bits"))
|
||||
ver = None if not match.group("version") else int(match.group("version"))
|
||||
return arch, bits, ver
|
||||
|
||||
def select_superior_arch(lhs: ArchBitsVer, rhs: ArchBitsVer) -> ArchBitsVer:
|
||||
_, l_bits, l_ver = lhs
|
||||
_, r_bits, r_ver = rhs
|
||||
if l_bits != r_bits:
|
||||
return lhs if l_bits > r_bits else rhs
|
||||
elif r_ver is None:
|
||||
return lhs
|
||||
elif l_ver is None:
|
||||
return rhs
|
||||
return lhs if l_ver > r_ver else rhs
|
||||
|
||||
candidates: List[ArchBitsVer] = list(filter(None, map(mingw_arch_with_bits_and_version, mingw_arches)))
|
||||
if len(candidates) == 0:
|
||||
return None
|
||||
default_arch, _, _ = reduce(select_superior_arch, candidates)
|
||||
return default_arch
|
||||
|
||||
@staticmethod
|
||||
def find_installed_desktop_qt_dir(host: str, base_path: Path, version: Version, is_msvc: bool = False) -> Optional[Path]:
|
||||
"""
|
||||
Locates the default installed desktop qt directory, somewhere in base_path.
|
||||
"""
|
||||
installed_qt_version_dir = base_path / QtRepoProperty.dir_for_version(version)
|
||||
if host == "mac":
|
||||
arch_path = installed_qt_version_dir / QtRepoProperty.default_mac_desktop_arch_dir(version)
|
||||
return arch_path if (arch_path / "bin/qmake").is_file() else None
|
||||
elif host == "linux":
|
||||
arch_path = installed_qt_version_dir / QtRepoProperty.default_linux_desktop_arch_dir()
|
||||
return arch_path if (arch_path / "bin/qmake").is_file() else None
|
||||
elif host == "windows" and is_msvc:
|
||||
arch_path = installed_qt_version_dir / QtRepoProperty.default_win_msvc_desktop_arch_dir(version)
|
||||
return arch_path if (arch_path / "bin/qmake.exe").is_file() else None
|
||||
|
||||
def contains_qmake_exe(arch_path: Path) -> bool:
|
||||
return (arch_path / "bin/qmake.exe").is_file()
|
||||
|
||||
paths = [d for d in installed_qt_version_dir.glob("mingw*")]
|
||||
directories = list(filter(contains_qmake_exe, paths))
|
||||
arch_dirs = [d.name for d in directories]
|
||||
selected_dir = QtRepoProperty.select_default_mingw(arch_dirs, is_dir=True)
|
||||
return installed_qt_version_dir / selected_dir if selected_dir else None
|
||||
|
||||
@staticmethod
|
||||
def is_in_wasm_range(host: str, version: Version) -> bool:
|
||||
return (
|
||||
version in SimpleSpec(">=6.2.0,<6.5.0")
|
||||
or (host == "linux" and version in SimpleSpec(">=5.13,<6"))
|
||||
or version in SimpleSpec(">=5.13.1,<6")
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def is_in_wasm_threaded_range(version: Version) -> bool:
|
||||
return version in SimpleSpec(">=6.5.0")
|
||||
|
||||
|
||||
class MetadataFactory:
|
||||
"""Retrieve metadata of Qt variations, versions, and descriptions from Qt site."""
|
||||
|
||||
Metadata = Union[List[str], Versions, ToolData, ModuleData]
|
||||
Action = Callable[[], Metadata]
|
||||
SrcDocExamplesQuery = NamedTuple(
|
||||
"SrcDocExamplesQuery", [("cmd_type", str), ("version", Version), ("is_modules_query", bool)]
|
||||
)
|
||||
ModulesQuery = NamedTuple("ModulesQuery", [("version_str", str), ("arch", str)])
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
archive_id: ArchiveId,
|
||||
*,
|
||||
base_url: str = Settings.baseurl,
|
||||
base_url: Optional[str] = None,
|
||||
spec: Optional[SimpleSpec] = None,
|
||||
is_latest_version: bool = False,
|
||||
modules_query: Optional[Tuple[str, str]] = None,
|
||||
extensions_ver: Optional[str] = None,
|
||||
modules_query: Optional[ModulesQuery] = None,
|
||||
architectures_ver: Optional[str] = None,
|
||||
archives_query: Optional[List[str]] = None,
|
||||
src_doc_examples_query: Optional[Tuple[str, Version, bool]] = None,
|
||||
src_doc_examples_query: Optional[SrcDocExamplesQuery] = None,
|
||||
tool_name: Optional[str] = None,
|
||||
is_long_listing: bool = False,
|
||||
):
|
||||
@@ -422,7 +539,6 @@ class MetadataFactory:
|
||||
:param is_latest_version: When True, the MetadataFactory will find all versions of Qt
|
||||
matching filters, and only print the most recent version
|
||||
:param modules_query: [Version of Qt, architecture] for which to list modules
|
||||
:param extensions_ver: Version of Qt for which to list extensions
|
||||
:param architectures_ver: Version of Qt for which to list architectures
|
||||
:param archives_query: [Qt_Version, architecture, *module_names]: used to print list of archives
|
||||
:param tool_name: Name of a tool, without architecture, ie "tools_qtcreator" or "tools_ifw"
|
||||
@@ -431,102 +547,99 @@ class MetadataFactory:
|
||||
self.logger = getLogger("aqt.metadata")
|
||||
self.archive_id = archive_id
|
||||
self.spec = spec
|
||||
self.base_url = base_url
|
||||
self.base_url = base_url or Settings.baseurl
|
||||
|
||||
if archive_id.is_tools():
|
||||
if tool_name:
|
||||
if not tool_name.startswith("tools_"):
|
||||
tool_name = "tools_" + tool_name
|
||||
if tool_name is not None:
|
||||
if not tool_name.startswith("tools_") and tool_name != "sdktool":
|
||||
_tool_name = f"tools_{tool_name}"
|
||||
else:
|
||||
_tool_name = tool_name
|
||||
if is_long_listing:
|
||||
self.request_type = "tool long listing"
|
||||
self._action = lambda: self.fetch_tool_long_listing(tool_name)
|
||||
self._action: MetadataFactory.Action = lambda: self.fetch_tool_long_listing(_tool_name)
|
||||
else:
|
||||
self.request_type = "tool variant names"
|
||||
self._action = lambda: self.fetch_tool_modules(tool_name)
|
||||
self._action = lambda: self.fetch_tool_modules(_tool_name)
|
||||
else:
|
||||
self.request_type = "tools"
|
||||
self._action = self.fetch_tools
|
||||
elif is_latest_version:
|
||||
self.request_type = "latest version"
|
||||
self._action = lambda: Versions(self.fetch_latest_version())
|
||||
elif modules_query:
|
||||
self._action = lambda: Versions(self.fetch_latest_version(ext=""))
|
||||
elif modules_query is not None:
|
||||
version, arch = modules_query.version_str, modules_query.arch
|
||||
if is_long_listing:
|
||||
self.request_type = "long modules"
|
||||
version, arch = modules_query
|
||||
self._action = lambda: self.fetch_long_modules(self._to_version(version), arch)
|
||||
self._action = lambda: self.fetch_long_modules(self._to_version(version, arch), arch)
|
||||
else:
|
||||
self.request_type = "modules"
|
||||
version, arch = modules_query
|
||||
self._action = lambda: self.fetch_modules(self._to_version(version), arch)
|
||||
elif extensions_ver:
|
||||
self.request_type = "extensions"
|
||||
self._action = lambda: self.fetch_extensions(self._to_version(extensions_ver))
|
||||
elif architectures_ver:
|
||||
self._action = lambda: self.fetch_modules(self._to_version(version, arch), arch)
|
||||
elif architectures_ver is not None:
|
||||
ver_str: str = architectures_ver
|
||||
self.request_type = "architectures"
|
||||
self._action = lambda: self.fetch_arches(self._to_version(architectures_ver))
|
||||
self._action = lambda: self.fetch_arches(self._to_version(ver_str, None))
|
||||
elif archives_query:
|
||||
if len(archives_query) < 2:
|
||||
raise CliInputError("The '--archives' flag requires a 'QT_VERSION' and an 'ARCHITECTURE' parameter.")
|
||||
self.request_type = "archives for modules" if len(archives_query) > 2 else "archives for qt"
|
||||
version, arch, modules = archives_query[0], archives_query[1], archives_query[2:]
|
||||
self._action = lambda: self.fetch_archives(self._to_version(version), arch, modules)
|
||||
elif src_doc_examples_query:
|
||||
cmd_type, version, is_modules_query = src_doc_examples_query
|
||||
if is_modules_query:
|
||||
self.request_type = f"modules for {cmd_type}"
|
||||
self._action = lambda: self.fetch_modules_sde(cmd_type, version)
|
||||
self._action = lambda: self.fetch_archives(self._to_version(version, arch), arch, modules)
|
||||
elif src_doc_examples_query is not None:
|
||||
q: MetadataFactory.SrcDocExamplesQuery = src_doc_examples_query
|
||||
if q.is_modules_query:
|
||||
self.request_type = f"modules for {q.cmd_type}"
|
||||
self._action = lambda: self.fetch_modules_sde(q.cmd_type, q.version)
|
||||
else:
|
||||
self.request_type = f"archives for {cmd_type}"
|
||||
self._action = lambda: self.fetch_archives_sde(cmd_type, version)
|
||||
self.request_type = f"archives for {q.cmd_type}"
|
||||
self._action = lambda: self.fetch_archives_sde(q.cmd_type, q.version)
|
||||
else:
|
||||
self.request_type = "versions"
|
||||
self._action = self.fetch_versions
|
||||
|
||||
def getList(self) -> Union[List[str], Versions, ToolData]:
|
||||
def getList(self) -> Metadata:
|
||||
return self._action()
|
||||
|
||||
def fetch_arches(self, version: Version) -> List[str]:
|
||||
self.validate_extension(version)
|
||||
if self.archive_id.extension == "src_doc_examples":
|
||||
return []
|
||||
qt_ver_str = self._get_qt_version_str(version)
|
||||
modules = self._fetch_module_metadata(self.archive_id.to_folder(qt_ver_str))
|
||||
|
||||
arches = []
|
||||
for name in modules.keys():
|
||||
ver, arch = name.split(".")[-2:]
|
||||
if ver == qt_ver_str:
|
||||
arches.append(arch)
|
||||
qt_ver_str = self._get_qt_version_str(version)
|
||||
for extension in self.archive_id.all_extensions(version):
|
||||
modules: Dict[str, Dict[str, str]] = {}
|
||||
try:
|
||||
modules = self._fetch_module_metadata(self.archive_id.to_folder(qt_ver_str, extension))
|
||||
except ArchiveDownloadError as e:
|
||||
if extension == "":
|
||||
raise
|
||||
else:
|
||||
self.logger.debug(e)
|
||||
self.logger.debug(
|
||||
f"Failed to retrieve arches list with extension `{extension}`. "
|
||||
f"Please check that this extension exists for this version of Qt: "
|
||||
f"if not, code changes will be necessary."
|
||||
)
|
||||
# It's ok to swallow this error: we will still print the other available architectures that aqt can
|
||||
# install successfully. This is to prevent future errors such as those reported in #643
|
||||
|
||||
for name in modules.keys():
|
||||
ver, arch = name.split(".")[-2:]
|
||||
if ver == qt_ver_str:
|
||||
arches.append(arch)
|
||||
|
||||
return arches
|
||||
|
||||
def fetch_extensions(self, version: Version) -> List[str]:
|
||||
versions_extensions = self.get_versions_extensions(
|
||||
self.fetch_http(self.archive_id.to_url(), False), self.archive_id.category
|
||||
)
|
||||
filtered = filter(
|
||||
lambda ver_ext: ver_ext[0] == version and ver_ext[1],
|
||||
versions_extensions,
|
||||
)
|
||||
return list(map(lambda ver_ext: ver_ext[1], filtered))
|
||||
|
||||
def fetch_versions(self) -> Versions:
|
||||
def filter_by(ver_ext: Tuple[Optional[Version], str]) -> bool:
|
||||
version, extension = ver_ext
|
||||
return version and (self.spec is None or version in self.spec) and (self.archive_id.extension == extension)
|
||||
|
||||
def get_version(ver_ext: Tuple[Version, str]):
|
||||
return ver_ext[0]
|
||||
def fetch_versions(self, extension: str = "") -> Versions:
|
||||
def filter_by(ver: Version, ext: str) -> bool:
|
||||
return (self.spec is None or ver in self.spec) and ext == extension
|
||||
|
||||
versions_extensions = self.get_versions_extensions(
|
||||
self.fetch_http(self.archive_id.to_url(), False), self.archive_id.category
|
||||
)
|
||||
versions = sorted(filter(None, map(get_version, filter(filter_by, versions_extensions))))
|
||||
iterables = itertools.groupby(versions, lambda version: version.minor)
|
||||
return Versions(iterables)
|
||||
versions = sorted([ver for ver, ext in versions_extensions if ver is not None and filter_by(ver, ext)])
|
||||
grouped = cast(Iterable[Tuple[int, Iterable[Version]]], itertools.groupby(versions, lambda version: version.minor))
|
||||
return Versions(grouped)
|
||||
|
||||
def fetch_latest_version(self) -> Optional[Version]:
|
||||
return self.fetch_versions().latest()
|
||||
def fetch_latest_version(self, ext: str) -> Optional[Version]:
|
||||
return self.fetch_versions(ext).latest()
|
||||
|
||||
def fetch_tools(self) -> List[str]:
|
||||
html_doc = self.fetch_http(self.archive_id.to_url(), False)
|
||||
@@ -544,36 +657,6 @@ class MetadataFactory:
|
||||
def fetch_tool_long_listing(self, tool_name: str) -> ToolData:
|
||||
return ToolData(self._fetch_module_metadata(tool_name))
|
||||
|
||||
def validate_extension(self, qt_ver: Version) -> None:
|
||||
"""
|
||||
Checks extension, and raises CliInputError if invalid.
|
||||
|
||||
Rules:
|
||||
1. On Qt6 for Android, an extension for processor architecture is required.
|
||||
2. On any platform other than Android, or on Qt5, an extension for
|
||||
processor architecture is forbidden.
|
||||
3. The "wasm" extension only works on desktop targets for Qt 5.13-5.15, or for 6.2+
|
||||
"""
|
||||
if (
|
||||
self.archive_id.target == "android"
|
||||
and qt_ver.major == 6
|
||||
and self.archive_id.extension not in ArchiveId.EXTENSIONS_REQUIRED_ANDROID_QT6
|
||||
):
|
||||
raise CliInputError(
|
||||
"Qt 6 for Android requires one of the following extensions: "
|
||||
f"{ArchiveId.EXTENSIONS_REQUIRED_ANDROID_QT6}. "
|
||||
"Please add your extension using the `--extension` flag."
|
||||
)
|
||||
if self.archive_id.extension in ArchiveId.EXTENSIONS_REQUIRED_ANDROID_QT6 and (
|
||||
self.archive_id.target != "android" or qt_ver.major != 6
|
||||
):
|
||||
raise CliInputError(f"The extension '{self.archive_id.extension}' is only valid for Qt 6 for Android")
|
||||
is_in_wasm_range = qt_ver in SimpleSpec(">=5.13,<6") or qt_ver in SimpleSpec(">=6.2.0")
|
||||
if "wasm" in self.archive_id.extension and (self.archive_id.target != "desktop" or not is_in_wasm_range):
|
||||
raise CliInputError(
|
||||
f"The extension '{self.archive_id.extension}' is only available in Qt 5.13-5.15 and 6.2+ on desktop."
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def choose_highest_version_in_spec(
|
||||
all_tools_data: Dict[str, Dict[str, str]], simple_spec: SimpleSpec
|
||||
@@ -587,7 +670,7 @@ class MetadataFactory:
|
||||
return None
|
||||
|
||||
# Remove items that don't conform to simple_spec
|
||||
tools_versions = filter(lambda tool_item: tool_item[2] in simple_spec, tools_versions)
|
||||
tools_versions = [tool_item for tool_item in tools_versions if tool_item[2] in simple_spec]
|
||||
|
||||
try:
|
||||
# Return the conforming item with the highest version.
|
||||
@@ -597,7 +680,7 @@ class MetadataFactory:
|
||||
# There were no tools that fit the simple_spec
|
||||
return None
|
||||
|
||||
def _to_version(self, qt_ver: str) -> Version:
|
||||
def _to_version(self, qt_ver: str, arch: Optional[str]) -> Version:
|
||||
"""
|
||||
Turns a string in the form of `5.X.Y | latest` into a semantic version.
|
||||
If the string does not fit either of these forms, CliInputError will be raised.
|
||||
@@ -610,7 +693,8 @@ class MetadataFactory:
|
||||
"""
|
||||
assert qt_ver
|
||||
if qt_ver == "latest":
|
||||
latest_version = self.fetch_latest_version()
|
||||
ext = QtRepoProperty.extension_for_arch(arch, True) if arch else ""
|
||||
latest_version = self.fetch_latest_version(ext)
|
||||
if not latest_version:
|
||||
msg = "There is no latest version of Qt with the criteria '{}'".format(self.describe_filters())
|
||||
raise CliInputError(msg)
|
||||
@@ -623,24 +707,27 @@ class MetadataFactory:
|
||||
|
||||
def fetch_http(self, rest_of_url: str, is_check_hash: bool = True) -> str:
|
||||
timeout = (Settings.connection_timeout, Settings.response_timeout)
|
||||
expected_hash = get_hash(rest_of_url, "sha256", timeout) if is_check_hash else None
|
||||
expected_hash = get_hash(rest_of_url, Settings.hash_algorithm, timeout) if is_check_hash else None
|
||||
base_urls = self.base_url, random.choice(Settings.fallbacks)
|
||||
|
||||
err: BaseException = AssertionError("unraisable")
|
||||
|
||||
for i, base_url in enumerate(base_urls):
|
||||
try:
|
||||
url = posixpath.join(base_url, rest_of_url)
|
||||
return getUrl(url=url, timeout=timeout, expected_hash=expected_hash)
|
||||
|
||||
except (ArchiveDownloadError, ArchiveConnectionError) as e:
|
||||
if i == len(base_urls) - 1:
|
||||
raise e from e
|
||||
else:
|
||||
err = e
|
||||
if i < len(base_urls) - 1:
|
||||
getLogger("aqt.metadata").debug(
|
||||
f"Connection to '{base_url}' failed. Retrying with fallback '{base_urls[i + 1]}'."
|
||||
)
|
||||
raise err from err
|
||||
|
||||
def iterate_folders(self, html_doc: str, html_url: str, *, filter_category: str = "") -> Generator[str, None, None]:
|
||||
def link_to_folder(link: bs4.element.Tag) -> str:
|
||||
raw_url: str = link.get("href", default="")
|
||||
raw_url: str = str(link.get("href", default=""))
|
||||
url: ParseResult = urlparse(raw_url)
|
||||
if url.scheme or url.netloc:
|
||||
return ""
|
||||
@@ -657,6 +744,8 @@ class MetadataFactory:
|
||||
continue
|
||||
if folder.startswith(filter_category):
|
||||
yield folder
|
||||
if filter_category == "tools" and folder == "sdktool":
|
||||
yield folder
|
||||
except Exception as e:
|
||||
raise ArchiveConnectionError(
|
||||
f"Failed to retrieve the expected HTML page at {html_url}",
|
||||
@@ -689,7 +778,7 @@ class MetadataFactory:
|
||||
if downloads is None or update_file is None:
|
||||
return False
|
||||
uncompressed_size = int(update_file.attrib["UncompressedSize"])
|
||||
return downloads.text and uncompressed_size >= Settings.min_module_size
|
||||
return downloads.text is not None and uncompressed_size >= Settings.min_module_size
|
||||
|
||||
def _get_qt_version_str(self, version: Version) -> str:
|
||||
"""Returns a Qt version, without dots, that works in the Qt repo urls and Updates.xml files"""
|
||||
@@ -703,7 +792,7 @@ class MetadataFactory:
|
||||
|
||||
def _fetch_module_metadata(self, folder: str, predicate: Optional[Callable[[Element], bool]] = None):
|
||||
rest_of_url = posixpath.join(self.archive_id.to_url(), folder, "Updates.xml")
|
||||
xml = self.fetch_http(rest_of_url)
|
||||
xml = self.fetch_http(rest_of_url) if not Settings.ignore_hash else self.fetch_http(rest_of_url, False)
|
||||
return xml_to_modules(
|
||||
xml,
|
||||
predicate=predicate if predicate else MetadataFactory._has_nonempty_downloads,
|
||||
@@ -711,34 +800,41 @@ class MetadataFactory:
|
||||
|
||||
def fetch_modules(self, version: Version, arch: str) -> List[str]:
|
||||
"""Returns list of modules"""
|
||||
self.validate_extension(version)
|
||||
extension = QtRepoProperty.extension_for_arch(arch, version >= Version("6.0.0"))
|
||||
qt_ver_str = self._get_qt_version_str(version)
|
||||
# Example: re.compile(r"^(preview\.)?qt\.(qt5\.)?590\.(.+)$")
|
||||
pattern = re.compile(r"^(preview\.)?qt\.(qt" + str(version.major) + r"\.)?" + qt_ver_str + r"\.(.+)$")
|
||||
modules_meta = self._fetch_module_metadata(self.archive_id.to_folder(qt_ver_str))
|
||||
modules_meta = self._fetch_module_metadata(self.archive_id.to_folder(qt_ver_str, extension))
|
||||
|
||||
def to_module_arch(name: str) -> Tuple[Optional[str], Optional[str]]:
|
||||
_match = pattern.match(name)
|
||||
if not _match:
|
||||
return None, None
|
||||
module_with_arch = _match.group(3)
|
||||
if self.archive_id.is_no_arch() or "." not in module_with_arch:
|
||||
if "." not in module_with_arch:
|
||||
return module_with_arch, None
|
||||
module, arch = module_with_arch.rsplit(".", 1)
|
||||
if module.startswith("addons."):
|
||||
module = module[len("addons.") :]
|
||||
return module, arch
|
||||
|
||||
modules = set()
|
||||
modules: Set[str] = set()
|
||||
for name in modules_meta.keys():
|
||||
module, _arch = to_module_arch(name)
|
||||
if _arch == arch:
|
||||
modules.add(module)
|
||||
modules.add(cast(str, module))
|
||||
return sorted(modules)
|
||||
|
||||
@staticmethod
|
||||
def require_text(element: Element, key: str) -> str:
|
||||
node = element.find(key)
|
||||
if node is None:
|
||||
raise ArchiveListError(f"Downloaded metadata does not match the expected structure. Missing key: {key}")
|
||||
return node.text or ""
|
||||
|
||||
def fetch_long_modules(self, version: Version, arch: str) -> ModuleData:
|
||||
"""Returns long listing of modules"""
|
||||
self.validate_extension(version)
|
||||
extension = QtRepoProperty.extension_for_arch(arch, version >= Version("6.0.0"))
|
||||
qt_ver_str = self._get_qt_version_str(version)
|
||||
# Example: re.compile(r"^(preview\.)?qt\.(qt5\.)?590(\.addons)?\.(?P<module>[^.]+)\.gcc_64$")
|
||||
pattern = re.compile(
|
||||
@@ -752,11 +848,16 @@ class MetadataFactory:
|
||||
)
|
||||
|
||||
def matches_arch(element: Element) -> bool:
|
||||
name_node = element.find("Name")
|
||||
return bool(name_node is not None) and bool(pattern.match(str(name_node.text)))
|
||||
return bool(pattern.match(MetadataFactory.require_text(element, "Name")))
|
||||
|
||||
modules_meta = self._fetch_module_metadata(self.archive_id.to_folder(qt_ver_str), matches_arch)
|
||||
m = {pattern.match(key).group("module"): value for key, value in modules_meta.items()}
|
||||
modules_meta = self._fetch_module_metadata(self.archive_id.to_folder(qt_ver_str, extension), matches_arch)
|
||||
m: Dict[str, Dict[str, str]] = {}
|
||||
for key, value in modules_meta.items():
|
||||
match = pattern.match(key)
|
||||
if match is not None:
|
||||
module = match.group("module")
|
||||
if module is not None:
|
||||
m[module] = value
|
||||
|
||||
return ModuleData(m)
|
||||
|
||||
@@ -765,9 +866,8 @@ class MetadataFactory:
|
||||
assert (
|
||||
cmd_type in ("doc", "examples") and self.archive_id.target == "desktop"
|
||||
), "Internal misuse of fetch_modules_sde"
|
||||
self.validate_extension(version)
|
||||
qt_ver_str = self._get_qt_version_str(version)
|
||||
modules_meta = self._fetch_module_metadata(self.archive_id.to_folder(qt_ver_str))
|
||||
modules_meta = self._fetch_module_metadata(self.archive_id.to_folder(qt_ver_str, "src_doc_examples"))
|
||||
# pattern: Match all names "qt.qt5.12345.doc.(\w+)
|
||||
pattern = re.compile(r"^qt\.(qt" + str(version.major) + r"\.)?" + qt_ver_str + r"\." + cmd_type + r"\.(.+)$")
|
||||
|
||||
@@ -783,28 +883,31 @@ class MetadataFactory:
|
||||
assert (
|
||||
cmd_type in ("src", "doc", "examples") and self.archive_id.target == "desktop"
|
||||
), "Internal misuse of fetch_archives_sde"
|
||||
return self.fetch_archives(version, cmd_type, [])
|
||||
return self.fetch_archives(version, cmd_type, [], is_sde=True)
|
||||
|
||||
def fetch_archives(self, version: Version, arch: str, modules: List[str]) -> List[str]:
|
||||
def fetch_archives(self, version: Version, arch: str, modules: List[str], is_sde: bool = False) -> List[str]:
|
||||
extension = "src_doc_examples" if is_sde else QtRepoProperty.extension_for_arch(arch, version >= Version("6.0.0"))
|
||||
qt_version_str = self._get_qt_version_str(version)
|
||||
nonempty = MetadataFactory._has_nonempty_downloads
|
||||
|
||||
def all_modules(element: Element) -> bool:
|
||||
_module, _arch = element.find("Name").text.split(".")[-2:]
|
||||
_module, _arch = MetadataFactory.require_text(element, "Name").split(".")[-2:]
|
||||
return _arch == arch and _module != qt_version_str and nonempty(element)
|
||||
|
||||
def specify_modules(element: Element) -> bool:
|
||||
_module, _arch = element.find("Name").text.split(".")[-2:]
|
||||
_module, _arch = MetadataFactory.require_text(element, "Name").split(".")[-2:]
|
||||
return _arch == arch and _module in modules and nonempty(element)
|
||||
|
||||
def no_modules(element: Element) -> bool:
|
||||
name: Optional[str] = element.find("Name").text
|
||||
return name and name.endswith(f".{qt_version_str}.{arch}") and nonempty(element)
|
||||
name: Optional[str] = getattr(element.find("Name"), "text", None)
|
||||
return name is not None and name.endswith(f".{qt_version_str}.{arch}") and nonempty(element)
|
||||
|
||||
predicate = no_modules if not modules else all_modules if "all" in modules else specify_modules
|
||||
try:
|
||||
mod_metadata = self._fetch_module_metadata(self.archive_id.to_folder(qt_version_str), predicate=predicate)
|
||||
except (AttributeError,) as e:
|
||||
mod_metadata = self._fetch_module_metadata(
|
||||
self.archive_id.to_folder(qt_version_str, extension), predicate=predicate
|
||||
)
|
||||
except (AttributeError, ValueError) as e:
|
||||
raise ArchiveListError(f"Downloaded metadata is corrupted. {e}") from e
|
||||
|
||||
# Did we find all requested modules?
|
||||
@@ -825,6 +928,20 @@ class MetadataFactory:
|
||||
return str(self.archive_id)
|
||||
return "{} with spec {}".format(self.archive_id, self.spec)
|
||||
|
||||
def fetch_default_desktop_arch(self, version: Version, is_msvc: bool = False) -> str:
|
||||
assert self.archive_id.target == "desktop", "This function is meant to fetch desktop architectures"
|
||||
if self.archive_id.host == "linux":
|
||||
return "gcc_64"
|
||||
elif self.archive_id.host == "mac":
|
||||
return "clang_64"
|
||||
elif self.archive_id.host == "windows" and is_msvc:
|
||||
return "win64_msvc2019_64"
|
||||
arches = [arch for arch in self.fetch_arches(version) if QtRepoProperty.MINGW_ARCH_PATTERN.match(arch)]
|
||||
selected_arch = QtRepoProperty.select_default_mingw(arches, is_dir=False)
|
||||
if not selected_arch:
|
||||
raise EmptyMetadata("No default desktop architecture available")
|
||||
return selected_arch
|
||||
|
||||
|
||||
def suggested_follow_up(meta: MetadataFactory) -> List[str]:
|
||||
"""Makes an informed guess at what the user got wrong, in the event of an error."""
|
||||
@@ -833,8 +950,6 @@ def suggested_follow_up(meta: MetadataFactory) -> List[str]:
|
||||
base_cmd = "aqt {0} {1.host} {1.target}".format(list_cmd, meta.archive_id)
|
||||
versions_msg = f"Please use '{base_cmd}' to show versions of Qt available."
|
||||
arches_msg = f"Please use '{base_cmd} --arch <QT_VERSION>' to show architectures available."
|
||||
if meta.archive_id.extension:
|
||||
msg.append(f"Please use '{base_cmd} --extensions <QT_VERSION>' to list valid extensions.")
|
||||
|
||||
if meta.archive_id.is_tools() and meta.request_type == "tool variant names":
|
||||
msg.append(f"Please use '{base_cmd}' to check what tools are available.")
|
||||
|
||||
@@ -16,6 +16,8 @@ max_retries_on_connection_error: 5
|
||||
retry_backoff: 0.1
|
||||
max_retries_on_checksum_error: 5
|
||||
max_retries_to_retrieve_hash: 5
|
||||
hash_algorithm: sha256
|
||||
INSECURE_NOT_FOR_PRODUCTION_ignore_hash: False
|
||||
|
||||
[mirrors]
|
||||
trusted_mirrors:
|
||||
@@ -27,7 +29,6 @@ blacklist:
|
||||
fallbacks:
|
||||
https://qtproject.mirror.liquidtelecom.com/
|
||||
https://mirrors.aliyun.com/qt/
|
||||
https://mirrors.sjtug.sjtu.edu.cn/qt/
|
||||
https://mirrors.ustc.edu.cn/qtproject/
|
||||
https://ftp.jaist.ac.jp/pub/qtproject/
|
||||
https://ftp.yz.yamagata-u.ac.jp/pub/qtproject/
|
||||
|
||||
148
aqt/updater.py
148
aqt/updater.py
@@ -20,30 +20,21 @@
|
||||
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
import logging
|
||||
import os
|
||||
import pathlib
|
||||
import re
|
||||
import stat
|
||||
import subprocess
|
||||
from logging import getLogger
|
||||
from typing import Union
|
||||
from pathlib import Path
|
||||
from typing import Dict, List, Optional, Union
|
||||
|
||||
import patch
|
||||
|
||||
from aqt.archives import TargetConfig
|
||||
from aqt.exceptions import QmakeNotFound, UpdaterError
|
||||
from aqt.helper import Settings
|
||||
from aqt.metadata import SimpleSpec, Version
|
||||
from aqt.metadata import ArchiveId, MetadataFactory, QtRepoProperty, SimpleSpec, Version
|
||||
|
||||
|
||||
def default_desktop_arch_dir(host: str, version: Union[Version, str]) -> str:
|
||||
version: Version = version if isinstance(version, Version) else Version(version)
|
||||
if host == "linux":
|
||||
return "gcc_64"
|
||||
elif host == "mac":
|
||||
return "macos" if version in SimpleSpec(">=6.1.2") else "clang_64"
|
||||
else: # Windows
|
||||
# This is a temporary solution. This arch directory cannot exist for many versions of Qt.
|
||||
# TODO: determine this dynamically
|
||||
return "mingw81_64"
|
||||
dir_for_version = QtRepoProperty.dir_for_version
|
||||
|
||||
|
||||
def dir_for_version(ver: Version) -> str:
|
||||
@@ -71,8 +62,13 @@ def dir_for_arch(arch: str, os_name: str, version: Version) -> str:
|
||||
return arch_dir
|
||||
|
||||
|
||||
def unpatched_path(os_name: str, final_component: str) -> str:
|
||||
return ("/home/qt/work/install" if os_name == "linux" else "/Users/qt/work/install") + "/" + final_component
|
||||
def unpatched_paths() -> List[str]:
|
||||
return [
|
||||
"/home/qt/work/install/",
|
||||
"/Users/qt/work/install/",
|
||||
"\\home\\qt\\work\\install\\",
|
||||
"\\Users\\qt\\work\\install\\",
|
||||
]
|
||||
|
||||
|
||||
class QtConfig:
|
||||
@@ -103,11 +99,13 @@ class QtConfig:
|
||||
|
||||
|
||||
class Updater:
|
||||
def __init__(self, prefix: pathlib.Path, logger):
|
||||
def __init__(self, prefix: Path, logger):
|
||||
self.logger = logger
|
||||
self.prefix = prefix
|
||||
self.qmake_path: Optional[Path] = None
|
||||
self.qconfigs: Dict[str, str] = {}
|
||||
|
||||
def _patch_binfile(self, file: pathlib.Path, key: bytes, newpath: bytes):
|
||||
def _patch_binfile(self, file: Path, key: bytes, newpath: bytes):
|
||||
"""Patch binary file with key/value"""
|
||||
st = file.stat()
|
||||
data = file.read_bytes()
|
||||
@@ -122,7 +120,7 @@ class Updater:
|
||||
file.write_bytes(data)
|
||||
os.chmod(str(file), st.st_mode)
|
||||
|
||||
def _append_string(self, file: pathlib.Path, val: str):
|
||||
def _append_string(self, file: Path, val: str):
|
||||
"""Append string to file"""
|
||||
st = file.stat()
|
||||
data = file.read_text("UTF-8")
|
||||
@@ -130,12 +128,41 @@ class Updater:
|
||||
file.write_text(data, "UTF-8")
|
||||
os.chmod(str(file), st.st_mode)
|
||||
|
||||
def _patch_textfile(self, file: pathlib.Path, old: str, new: str):
|
||||
def _patch_textfile(self, file: Path, old: Union[str, re.Pattern], new: str, *, is_executable: bool = False):
|
||||
st = file.stat()
|
||||
file_mode = st.st_mode | (stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH if is_executable else 0)
|
||||
data = file.read_text("UTF-8")
|
||||
data = data.replace(old, new)
|
||||
if isinstance(old, re.Pattern):
|
||||
data = old.sub(new, data)
|
||||
else:
|
||||
data = data.replace(old, new)
|
||||
file.write_text(data, "UTF-8")
|
||||
os.chmod(str(file), st.st_mode)
|
||||
os.chmod(str(file), file_mode)
|
||||
|
||||
def _detect_qmake(self) -> bool:
|
||||
"""detect Qt configurations from qmake."""
|
||||
for qmake_path in [
|
||||
self.prefix.joinpath("bin", "qmake"),
|
||||
self.prefix.joinpath("bin", "qmake.exe"),
|
||||
]:
|
||||
if not qmake_path.exists():
|
||||
continue
|
||||
try:
|
||||
result = subprocess.run([str(qmake_path), "-query"], stdout=subprocess.PIPE)
|
||||
except (subprocess.SubprocessError, IOError, OSError):
|
||||
return False
|
||||
if result.returncode == 0:
|
||||
self.qmake_path = qmake_path
|
||||
for line in result.stdout.splitlines():
|
||||
vals = line.decode("UTF-8").split(":")
|
||||
self.qconfigs[vals[0]] = vals[1]
|
||||
return True
|
||||
return False
|
||||
|
||||
def patch_prl(self, oldvalue):
|
||||
for prlfile in self.prefix.joinpath("lib").glob("*.prl"):
|
||||
self.logger.info("Patching {}".format(prlfile))
|
||||
self._patch_textfile(prlfile, oldvalue, "$$[QT_INSTALL_LIBS]")
|
||||
|
||||
def patch_pkgconfig(self, oldvalue, os_name):
|
||||
for pcfile in self.prefix.joinpath("lib", "pkgconfig").glob("*.pc"):
|
||||
@@ -189,9 +216,10 @@ class Updater:
|
||||
|
||||
def patch_qmake(self):
|
||||
"""Patch to qmake binary"""
|
||||
try:
|
||||
qmake_config = QtConfig(prefix=self.prefix)
|
||||
self.logger.info("Patching {}".format(str(qmake_config.qmake_path)))
|
||||
if self._detect_qmake():
|
||||
if self.qmake_path is None:
|
||||
return
|
||||
self.logger.info("Patching {}".format(str(self.qmake_path)))
|
||||
self._patch_binfile(
|
||||
qmake_config.qmake_path,
|
||||
key=b"qt_prfxpath=",
|
||||
@@ -210,14 +238,13 @@ class Updater:
|
||||
except QmakeNotFound:
|
||||
pass
|
||||
|
||||
def patch_qmake_script(self, base_dir, qt_version: str, os_name):
|
||||
arch_dir = default_desktop_arch_dir(os_name, qt_version)
|
||||
def patch_qmake_script(self, base_dir, qt_version: str, os_name: str, desktop_arch_dir: str):
|
||||
sep = "\\" if os_name == "windows" else "/"
|
||||
patched = sep.join([base_dir, qt_version, arch_dir, "bin"])
|
||||
unpatched = unpatched_path(os_name, "bin")
|
||||
patched = sep.join([base_dir, qt_version, desktop_arch_dir, "bin"])
|
||||
qmake_path = self.prefix / "bin" / ("qmake.bat" if os_name == "windows" else "qmake")
|
||||
self.logger.info(f"Patching {qmake_path}")
|
||||
self._patch_textfile(qmake_path, unpatched, patched)
|
||||
for unpatched in unpatched_paths():
|
||||
self._patch_textfile(qmake_path, f"{unpatched}bin", patched, is_executable=True)
|
||||
|
||||
def patch_qtcore(self, target):
|
||||
"""patch to QtCore"""
|
||||
@@ -254,7 +281,7 @@ class Updater:
|
||||
f.write("cd /D {}\n".format(os.path.join(base_dir, qt_version, arch_dir)))
|
||||
f.write("echo Remember to call vcvarsall.bat to complete environment setup!\n")
|
||||
|
||||
def set_license(self, base_dir, qt_version, arch_dir):
|
||||
def set_license(self, base_dir: str, qt_version: str, arch_dir: str):
|
||||
"""Update qtconfig.pri as OpenSource"""
|
||||
with open(os.path.join(base_dir, qt_version, arch_dir, "mkspecs", "qconfig.pri"), "r+") as f:
|
||||
lines = f.readlines()
|
||||
@@ -267,58 +294,95 @@ class Updater:
|
||||
line = "QT_LICHECK =\n"
|
||||
f.write(line)
|
||||
|
||||
def patch_target_qt_conf(self, base_dir, qt_version, arch_dir, os_name):
|
||||
def patch_target_qt_conf(self, base_dir: str, qt_version: str, arch_dir: str, os_name: str, desktop_arch_dir: str):
|
||||
target_qt_conf = self.prefix / "bin" / "target_qt.conf"
|
||||
old_targetprefix = f'Prefix={unpatched_path(os_name, "target")}'
|
||||
new_hostprefix = f"HostPrefix=../../{default_desktop_arch_dir(os_name, qt_version)}"
|
||||
new_targetprefix = "Prefix={}".format(str(pathlib.Path(base_dir).joinpath(qt_version, arch_dir, "target")))
|
||||
new_hostprefix = f"HostPrefix=../../{desktop_arch_dir}"
|
||||
new_targetprefix = "Prefix={}".format(str(Path(base_dir).joinpath(qt_version, arch_dir, "target")))
|
||||
new_hostdata = "HostData=../{}".format(arch_dir)
|
||||
self._patch_textfile(target_qt_conf, old_targetprefix, new_targetprefix)
|
||||
new_host_lib_execs = "./bin" if os_name == "windows" else "./libexec"
|
||||
old_host_lib_execs = re.compile(r"^HostLibraryExecutables=[^\n]*$", flags=re.MULTILINE)
|
||||
|
||||
self._patch_textfile(target_qt_conf, old_host_lib_execs, f"HostLibraryExecutables={new_host_lib_execs}")
|
||||
for unpatched in unpatched_paths():
|
||||
self._patch_textfile(target_qt_conf, f"Prefix={unpatched}target", new_targetprefix)
|
||||
self._patch_textfile(target_qt_conf, "HostPrefix=../../", new_hostprefix)
|
||||
self._patch_textfile(target_qt_conf, "HostData=target", new_hostdata)
|
||||
|
||||
def patch_qdevice_file(self, base_dir: str, qt_version: str, arch_dir: str, os_name: str):
|
||||
"""Qt 6.4.1+ specific, but it should not hurt anything if `mkspecs/qdevice.pri` does not exist"""
|
||||
|
||||
qdevice = Path(base_dir) / qt_version / arch_dir / "mkspecs/qdevice.pri"
|
||||
if not qdevice.exists():
|
||||
return
|
||||
|
||||
old_line = re.compile(r"^DEFAULT_ANDROID_NDK_HOST =[^\n]*$", flags=re.MULTILINE)
|
||||
new_line = f"DEFAULT_ANDROID_NDK_HOST = {'darwin' if os_name == 'mac' else os_name}-x86_64"
|
||||
self._patch_textfile(qdevice, old_line, new_line)
|
||||
|
||||
@classmethod
|
||||
def update(cls, target: TargetConfig, base_dir: str):
|
||||
def update(cls, target: TargetConfig, base_path: Path, installed_desktop_arch_dir: Optional[str]):
|
||||
"""
|
||||
Make Qt configuration files, qt.conf and qtconfig.pri.
|
||||
And update pkgconfig and patch Qt5Core and qmake
|
||||
|
||||
:param installed_desktop_arch_dir: This is the path to a desktop Qt installation, like `Qt/6.3.0/mingw_win64`.
|
||||
This may or may not contain an actual desktop Qt installation.
|
||||
If it does not, the Updater will patch files in a mobile Qt installation
|
||||
that point to this directory, and this installation will be non-functional
|
||||
until the user installs a desktop Qt in this directory.
|
||||
"""
|
||||
logger = getLogger("aqt.updater")
|
||||
arch = target.arch
|
||||
version = Version(target.version)
|
||||
os_name = target.os_name
|
||||
version_dir = dir_for_version(version)
|
||||
arch_dir = dir_for_arch(arch, os_name, version)
|
||||
prefix = pathlib.Path(base_dir) / version_dir / arch_dir
|
||||
arch_dir = QtRepoProperty.get_arch_dir_name(os_name, arch, version)
|
||||
base_dir = str(base_path)
|
||||
try:
|
||||
prefix = base_path / version_dir / arch_dir
|
||||
updater = Updater(prefix, logger)
|
||||
updater.set_license(base_dir, version_dir, arch_dir)
|
||||
if target.arch not in [
|
||||
"ios",
|
||||
"android",
|
||||
"wasm_32",
|
||||
"wasm_singlethread",
|
||||
"wasm_multithread",
|
||||
"android_x86_64",
|
||||
"android_arm64_v8a",
|
||||
"android_x86",
|
||||
"android_armv7",
|
||||
"win64_msvc2019_arm64",
|
||||
]: # desktop version
|
||||
updater.make_qtconf(base_dir, version_dir, arch_dir)
|
||||
updater.patch_qmake()
|
||||
if target.os_name == "linux":
|
||||
updater.patch_pkgconfig("/home/qt/work/install", target.os_name)
|
||||
updater.patch_libtool("/home/qt/work/install/lib", target.os_name)
|
||||
updater.patch_prl("/home/qt/work/install/lib")
|
||||
elif target.os_name == "mac":
|
||||
updater.patch_pkgconfig("/Users/qt/work/install", target.os_name)
|
||||
updater.patch_libtool("/Users/qt/work/install/lib", target.os_name)
|
||||
updater.patch_prl("/Users/qt/work/install/lib")
|
||||
elif target.os_name == "windows":
|
||||
updater.patch_pkgconfig("c:/Users/qt/work/install", target.os_name)
|
||||
updater.patch_prl("c:/Users/qt/work/install/lib")
|
||||
updater.make_qtenv2(base_dir, version_dir, arch_dir)
|
||||
if version < Version("5.14.0"):
|
||||
updater.patch_qtcore(target)
|
||||
elif version in SimpleSpec(">=5.0,<6.0"):
|
||||
updater.patch_qmake()
|
||||
else: # qt6 non-desktop
|
||||
updater.patch_qmake_script(base_dir, version_dir, target.os_name)
|
||||
updater.patch_target_qt_conf(base_dir, version_dir, arch_dir, target.os_name)
|
||||
else: # qt6 mobile, wasm, or msvc-arm64
|
||||
if installed_desktop_arch_dir is not None:
|
||||
desktop_arch_dir = installed_desktop_arch_dir
|
||||
else:
|
||||
# Use MetadataFactory to check what the default architecture should be
|
||||
meta = MetadataFactory(ArchiveId("qt", os_name, "desktop"))
|
||||
desktop_arch_dir = meta.fetch_default_desktop_arch(version, is_msvc="msvc" in target.arch)
|
||||
|
||||
updater.patch_qmake_script(base_dir, version_dir, target.os_name, desktop_arch_dir)
|
||||
updater.patch_target_qt_conf(base_dir, version_dir, arch_dir, target.os_name, desktop_arch_dir)
|
||||
updater.patch_qdevice_file(base_dir, version_dir, arch_dir, target.os_name)
|
||||
except IOError as e:
|
||||
raise UpdaterError(f"Updater caused an IO error: {e}") from e
|
||||
|
||||
|
||||
@@ -1,19 +1,11 @@
|
||||
trigger:
|
||||
trigger: none
|
||||
pr: none
|
||||
schedules:
|
||||
- cron: '0 12 * * 0'
|
||||
displayName: Weekly sunday full tests
|
||||
branches:
|
||||
include:
|
||||
- releases/*
|
||||
- refs/tags/v*
|
||||
|
||||
pr:
|
||||
branches:
|
||||
include:
|
||||
- master
|
||||
- releases/*
|
||||
paths:
|
||||
include:
|
||||
- aqt/*
|
||||
- ci/*
|
||||
- azure-pipelines.yml
|
||||
- master
|
||||
|
||||
jobs:
|
||||
- job: MatricesGenerator
|
||||
@@ -23,7 +15,7 @@ jobs:
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
versionSpec: '3.8'
|
||||
versionSpec: '3.9'
|
||||
addToPath: true
|
||||
- bash: python ci/generate_azure_pipelines_matrices.py
|
||||
name: mtrx
|
||||
@@ -32,7 +24,7 @@ jobs:
|
||||
- job: Mac
|
||||
dependsOn: MatricesGenerator
|
||||
pool:
|
||||
vmImage: 'macOS-10.15'
|
||||
vmImage: 'macOS-12'
|
||||
strategy:
|
||||
matrix: $[ dependencies.MatricesGenerator.outputs['mtrx.mac'] ]
|
||||
steps:
|
||||
@@ -56,7 +48,7 @@ jobs:
|
||||
- job: Linux
|
||||
dependsOn: MatricesGenerator
|
||||
pool:
|
||||
vmImage: 'ubuntu-20.04'
|
||||
vmImage: 'ubuntu-22.04'
|
||||
strategy:
|
||||
matrix: $[ dependencies.MatricesGenerator.outputs['mtrx.linux'] ]
|
||||
steps:
|
||||
|
||||
Binary file not shown.
@@ -1,10 +0,0 @@
|
||||
pip install -U pip
|
||||
pip install virtualenv
|
||||
virtualenv build_venv
|
||||
call build_venv\Scripts\activate.bat
|
||||
move pyproject.toml pyproject.toml.bak
|
||||
pip install -e .[test,docs,check]
|
||||
pip install gravitybee
|
||||
gravitybee --with-latest
|
||||
call build_venv\Scripts\deactivate.bat
|
||||
move .gravitybee\dist\latest\aqtinstall-*.exe .gravitybee\dist\latest\aqt.exe
|
||||
@@ -32,8 +32,11 @@ class BuildJob:
|
||||
list_options=None,
|
||||
spec=None,
|
||||
mingw_variant: str = "",
|
||||
is_autodesktop: bool = False,
|
||||
tool_options: Optional[Dict[str, str]] = None,
|
||||
check_output_cmd: Optional[str] = None,
|
||||
emsdk_version: str = "sdk-fastcomp-1.38.27-64bit@3.1.29",
|
||||
autodesk_arch_folder: Optional[str] = None,
|
||||
):
|
||||
self.command = command
|
||||
self.qt_version = qt_version
|
||||
@@ -45,12 +48,15 @@ class BuildJob:
|
||||
self.mirror = mirror
|
||||
self.subarchives = subarchives
|
||||
self.mingw_variant: str = mingw_variant
|
||||
self.is_autodesktop: bool = is_autodesktop
|
||||
self.list_options = list_options if list_options else {}
|
||||
self.tool_options: Dict[str, str] = tool_options if tool_options else {}
|
||||
# `steps.yml` assumes that qt_version is the highest version that satisfies spec
|
||||
self.spec = spec
|
||||
self.output_dir = output_dir
|
||||
self.check_output_cmd = check_output_cmd
|
||||
self.emsdk_version = emsdk_version
|
||||
self.autodesk_arch_folder = autodesk_arch_folder
|
||||
|
||||
def qt_bindir(self, *, sep='/') -> str:
|
||||
out_dir = f"$(Build.BinariesDirectory){sep}Qt" if not self.output_dir else self.output_dir
|
||||
@@ -60,6 +66,14 @@ class BuildJob:
|
||||
def win_qt_bindir(self) -> str:
|
||||
return self.qt_bindir(sep='\\')
|
||||
|
||||
def autodesk_qt_bindir(self, *, sep='/') -> str:
|
||||
out_dir = f"$(Build.BinariesDirectory){sep}Qt" if not self.output_dir else self.output_dir
|
||||
version_dir = "5.9" if self.qt_version == "5.9.0" else self.qt_version
|
||||
return f"{out_dir}{sep}{version_dir}{sep}{self.autodesk_arch_folder or self.archdir}{sep}bin"
|
||||
|
||||
def win_autodesk_qt_bindir(self) -> str:
|
||||
return self.autodesk_qt_bindir(sep='\\')
|
||||
|
||||
def mingw_folder(self) -> str:
|
||||
if not self.mingw_variant:
|
||||
return ""
|
||||
@@ -73,11 +87,9 @@ class PlatformBuildJobs:
|
||||
self.build_jobs = build_jobs
|
||||
|
||||
|
||||
python_versions = [
|
||||
"3.8",
|
||||
]
|
||||
python_versions = ["3.9", "3.11", "3.12"]
|
||||
|
||||
qt_versions = ["5.13.2", "5.15.2"]
|
||||
qt_versions = ["5.12.12", "5.15.14", "6.5.3"]
|
||||
|
||||
linux_build_jobs = []
|
||||
mac_build_jobs = []
|
||||
@@ -123,6 +135,17 @@ windows_build_jobs.extend(
|
||||
mingw_variant="win32_mingw730",
|
||||
mirror=random.choice(MIRRORS),
|
||||
),
|
||||
BuildJob(
|
||||
"install-qt",
|
||||
"5.11.3",
|
||||
"windows",
|
||||
"desktop",
|
||||
"win32_mingw53",
|
||||
"mingw53_32",
|
||||
subarchives="qtwinextras qtmultimedia qtbase qttools",
|
||||
mingw_variant="win32_mingw530",
|
||||
mirror=random.choice(MIRRORS),
|
||||
),
|
||||
BuildJob(
|
||||
"install-qt",
|
||||
"5.13.2",
|
||||
@@ -154,6 +177,16 @@ windows_build_jobs.extend(
|
||||
module="qtcharts qtnetworkauth",
|
||||
mirror=random.choice(MIRRORS),
|
||||
),
|
||||
BuildJob(
|
||||
"install-qt",
|
||||
"5.11.3",
|
||||
"windows",
|
||||
"desktop",
|
||||
"win32_msvc2015",
|
||||
"msvc2015",
|
||||
subarchives="qtwinextras qtmultimedia qtbase qttools",
|
||||
mirror=random.choice(MIRRORS),
|
||||
),
|
||||
BuildJob(
|
||||
"install-qt",
|
||||
"5.9.0",
|
||||
@@ -175,6 +208,21 @@ windows_build_jobs.extend(
|
||||
spec=">1,<5.15", # Don't redirect output! Must be wrapped in quotes!
|
||||
mirror=random.choice(MIRRORS),
|
||||
),
|
||||
BuildJob(
|
||||
"install-qt",
|
||||
"6.5.2",
|
||||
"windows",
|
||||
"desktop",
|
||||
"win64_msvc2019_arm64",
|
||||
"msvc2019_arm64",
|
||||
is_autodesktop=True, # Should install win64_msvc2019_arm64 in parallel
|
||||
),
|
||||
BuildJob(
|
||||
# Archives stored as .zip
|
||||
"install-src", "6.4.3", "windows", "desktop", "gcc_64", "gcc_64", subarchives="qtlottie",
|
||||
# Fail the job if this path does not exist:
|
||||
check_output_cmd="ls -lh ./6.4.3/Src/qtlottie/",
|
||||
),
|
||||
]
|
||||
)
|
||||
|
||||
@@ -200,13 +248,20 @@ linux_build_jobs.extend(
|
||||
"desktop",
|
||||
"gcc_64",
|
||||
"gcc_64",
|
||||
subarchives="qtbase qttools qt icu",
|
||||
subarchives="qtbase qttools qt icu qttools",
|
||||
),
|
||||
BuildJob(
|
||||
# Archives stored as .7z
|
||||
"install-src", "6.1.0", "linux", "desktop", "gcc_64", "gcc_64", subarchives="qtlottie",
|
||||
# Fail the job if this path does not exist:
|
||||
check_output_cmd="ls -lh ./6.1.0/Src/qtlottie/",
|
||||
),
|
||||
BuildJob(
|
||||
# Archives stored as .tar.gz
|
||||
"install-src", "6.4.3", "linux", "desktop", "gcc_64", "gcc_64", subarchives="qtlottie",
|
||||
# Fail the job if this path does not exist:
|
||||
check_output_cmd="ls -lh ./6.4.3/Src/qtlottie/",
|
||||
),
|
||||
# Should install the `qtlottie` module, even though the archive `qtlottieanimation` is not specified:
|
||||
BuildJob(
|
||||
"install-doc", "6.1.0", "linux", "desktop", "gcc_64", "gcc_64",
|
||||
@@ -222,13 +277,9 @@ linux_build_jobs.extend(
|
||||
check_output_cmd="ls -lh ./Examples/Qt-6.1.0/charts/ ./Examples/Qt-6.1.0/demos/ ./Examples/Qt-6.1.0/tutorials/",
|
||||
),
|
||||
# test for list commands
|
||||
BuildJob('list', '5.15.2', 'linux', 'desktop', 'gcc_64', '', spec="<6", list_options={
|
||||
'HAS_EXTENSIONS': "True",
|
||||
}),
|
||||
BuildJob('list', '6.1.0', 'linux', 'android', 'android_armv7', '', spec=">6.0,<6.1.1", list_options={
|
||||
'HAS_EXTENSIONS': "True",
|
||||
'USE_EXTENSION': "armv7",
|
||||
}),
|
||||
BuildJob('list', '5.15.2', 'linux', 'desktop', 'gcc_64', '', spec="<6", list_options={'HAS_WASM': "True"}),
|
||||
BuildJob('list', '6.1.0', 'linux', 'desktop', 'gcc_64', '', spec=">6.0,<6.1.1", list_options={'HAS_WASM': "False"}),
|
||||
BuildJob('list', '6.1.0', 'linux', 'android', 'android_armv7', '', spec=">6.0,<6.1.1", list_options={}),
|
||||
# tests run on linux but query data about other platforms
|
||||
BuildJob('list', '5.14.1', 'mac', 'ios', 'ios', '', spec="<=5.14.1", list_options={}),
|
||||
BuildJob('list', '5.13.1', 'windows', 'winrt', 'win64_msvc2015_winrt_x64', '', spec=">5.13.0,<5.13.2", list_options={}),
|
||||
@@ -261,22 +312,59 @@ mac_build_jobs.extend(
|
||||
linux_build_jobs.append(
|
||||
BuildJob("install-qt", "5.14.2", "linux", "desktop", "wasm_32", "wasm_32")
|
||||
)
|
||||
linux_build_jobs.append(
|
||||
BuildJob("install-qt", "6.4.0", "linux", "desktop", "wasm_32", "wasm_32",
|
||||
is_autodesktop=True, emsdk_version="sdk-3.1.14-64bit", autodesk_arch_folder="gcc_64")
|
||||
)
|
||||
for job_queue, host, desk_arch in (
|
||||
(linux_build_jobs, "linux", "gcc_64"),
|
||||
(mac_build_jobs, "mac", "clang_64"),
|
||||
(windows_build_jobs, "windows", "mingw_64"),
|
||||
):
|
||||
for wasm_arch in ("wasm_singlethread", "wasm_multithread"):
|
||||
job_queue.append(
|
||||
BuildJob("install-qt", "6.5.0", host, "desktop", wasm_arch, wasm_arch,
|
||||
is_autodesktop=True, emsdk_version="sdk-3.1.25-64bit", autodesk_arch_folder=desk_arch)
|
||||
)
|
||||
mac_build_jobs.append(
|
||||
BuildJob("install-qt", "5.14.2", "mac", "desktop", "wasm_32", "wasm_32")
|
||||
)
|
||||
mac_build_jobs.append(
|
||||
BuildJob("install-qt", "6.4.0", "mac", "desktop", "wasm_32", "wasm_32",
|
||||
is_autodesktop=True, emsdk_version="sdk-3.1.14-64bit", autodesk_arch_folder="clang_64")
|
||||
)
|
||||
windows_build_jobs.append(
|
||||
BuildJob("install-qt", "5.14.2", "windows", "desktop", "wasm_32", "wasm_32")
|
||||
)
|
||||
windows_build_jobs.append(
|
||||
BuildJob("install-qt", "6.4.0", "windows", "desktop", "wasm_32", "wasm_32",
|
||||
is_autodesktop=True, emsdk_version="sdk-3.1.14-64bit", autodesk_arch_folder="mingw_64",
|
||||
mingw_variant="win64_mingw900")
|
||||
)
|
||||
|
||||
# mobile SDK
|
||||
mac_build_jobs.extend(
|
||||
[
|
||||
BuildJob("install-qt", "5.15.2", "mac", "ios", "ios", "ios"),
|
||||
BuildJob("install-qt", "6.2.2", "mac", "ios", "ios", "ios", module="qtsensors"),
|
||||
BuildJob(
|
||||
"install-qt", "6.1.0", "mac", "android", "android_armv7", "android_armv7"
|
||||
),
|
||||
BuildJob("install-qt", "6.4.0", "mac", "ios", "ios", "ios", module="qtsensors", is_autodesktop=True),
|
||||
BuildJob("install-qt", "6.2.4", "mac", "ios", "ios", "ios", module="qtsensors", is_autodesktop=False),
|
||||
BuildJob("install-qt", "6.4.1", "mac", "android", "android_armv7", "android_armv7", is_autodesktop=True),
|
||||
BuildJob("install-qt", "6.1.0", "mac", "android", "android_armv7", "android_armv7", is_autodesktop=True),
|
||||
]
|
||||
)
|
||||
linux_build_jobs.extend(
|
||||
[BuildJob("install-qt", "6.1.0", "linux", "android", "android_armv7", "android_armv7")]
|
||||
[
|
||||
BuildJob("install-qt", "6.1.0", "linux", "android", "android_armv7", "android_armv7", is_autodesktop=True),
|
||||
BuildJob("install-qt", "6.4.1", "linux", "android", "android_arm64_v8a", "android_arm64_v8a", is_autodesktop=True),
|
||||
]
|
||||
)
|
||||
|
||||
# Qt 6.3.0 for Windows-Android has win64_mingw available, but not win64_mingw81.
|
||||
# This will test that the path to mingw is not hardcoded.
|
||||
windows_build_jobs.extend(
|
||||
[
|
||||
BuildJob("install-qt", "6.3.0", "windows", "android", "android_armv7", "android_armv7", is_autodesktop=True),
|
||||
BuildJob("install-qt", "6.4.1", "windows", "android", "android_x86_64", "android_x86_64", is_autodesktop=True),
|
||||
]
|
||||
)
|
||||
|
||||
# Test binary patch of qmake
|
||||
@@ -368,11 +456,14 @@ for platform_build_job in all_platform_build_jobs:
|
||||
("SPEC", build_job.spec if build_job.spec else ""),
|
||||
("MINGW_VARIANT", build_job.mingw_variant),
|
||||
("MINGW_FOLDER", build_job.mingw_folder()),
|
||||
("HAS_EXTENSIONS", build_job.list_options.get("HAS_EXTENSIONS", "False")),
|
||||
("USE_EXTENSION", build_job.list_options.get("USE_EXTENSION", "None")),
|
||||
("IS_AUTODESKTOP", str(build_job.is_autodesktop)),
|
||||
("HAS_WASM", build_job.list_options.get("HAS_WASM", "True")),
|
||||
("OUTPUT_DIR", build_job.output_dir if build_job.output_dir else ""),
|
||||
("QT_BINDIR", build_job.qt_bindir()),
|
||||
("WIN_QT_BINDIR", build_job.win_qt_bindir()),
|
||||
("EMSDK_VERSION", (build_job.emsdk_version+"@main").split('@')[0]),
|
||||
("EMSDK_TAG", (build_job.emsdk_version+"@main").split('@')[1]),
|
||||
("WIN_AUTODESK_QT_BINDIR", build_job.win_autodesk_qt_bindir()),
|
||||
("TOOL1_ARGS", build_job.tool_options.get("TOOL1_ARGS", "")),
|
||||
("LIST_TOOL1_CMD", build_job.tool_options.get("LIST_TOOL1_CMD", "")),
|
||||
("TEST_TOOL1_CMD", build_job.tool_options.get("TEST_TOOL1_CMD", "")),
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
import argparse
|
||||
import json
|
||||
import logging
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from typing import Dict, Generator, Iterable, List, Optional, Tuple, Union
|
||||
from typing import Dict, Generator, Iterable, List, Optional, Tuple, Union, NamedTuple
|
||||
|
||||
from jsoncomparison import NO_DIFF, Compare
|
||||
|
||||
@@ -28,44 +29,21 @@ def iter_archive_ids(
|
||||
category: str,
|
||||
hosts: Iterable[str] = ArchiveId.HOSTS,
|
||||
targets: Optional[Iterable[str]] = None,
|
||||
add_extensions: bool = False,
|
||||
) -> Generator[ArchiveId, None, None]:
|
||||
def iter_extensions() -> Generator[str, None, None]:
|
||||
if add_extensions and category == "qt":
|
||||
if target == "android":
|
||||
yield from ("", "x86_64", "x86", "armv7", "arm64_v8a")
|
||||
return
|
||||
elif target == "desktop":
|
||||
yield from ("wasm", "")
|
||||
return
|
||||
yield ""
|
||||
|
||||
for host in sorted(hosts):
|
||||
use_targets = targets
|
||||
if use_targets is None:
|
||||
use_targets = ArchiveId.TARGETS_FOR_HOST[host]
|
||||
for target in use_targets:
|
||||
for ext in iter_extensions():
|
||||
yield ArchiveId(category, host, target, ext)
|
||||
yield ArchiveId(category, host, target)
|
||||
|
||||
|
||||
def iter_arches() -> Generator[dict, None, None]:
|
||||
logger.info("Fetching arches")
|
||||
archive_ids = list(iter_archive_ids(category="qt", add_extensions=True))
|
||||
archive_ids = list(iter_archive_ids(category="qt"))
|
||||
for archive_id in tqdm(archive_ids):
|
||||
for version in ("latest", "5.15.2", "5.13.2", "5.9.9"):
|
||||
if archive_id.extension == "wasm" and (
|
||||
version == "5.9.9" or version == "latest"
|
||||
):
|
||||
continue
|
||||
if archive_id.target == "android":
|
||||
if version == "latest" and archive_id.extension == "":
|
||||
continue
|
||||
if version != "latest" and archive_id.extension != "":
|
||||
continue
|
||||
for arch_name in MetadataFactory(
|
||||
archive_id, architectures_ver=version
|
||||
).getList():
|
||||
for arch_name in MetadataFactory(archive_id, architectures_ver=version).getList():
|
||||
yield {
|
||||
"os_name": archive_id.host,
|
||||
"target": archive_id.target,
|
||||
@@ -107,7 +85,7 @@ def iter_modules_for_qt_minor_groups(
|
||||
yield {
|
||||
"qt_version": f"{major}.{minor}",
|
||||
"modules": MetadataFactory(
|
||||
ArchiveId("qt", host, target), modules_query=(f"{major}.{minor}.0", arch)
|
||||
ArchiveId("qt", host, target), modules_query=MetadataFactory.ModulesQuery(f"{major}.{minor}.0", arch)
|
||||
).getList(),
|
||||
}
|
||||
|
||||
@@ -229,6 +207,6 @@ if __name__ == "__main__":
|
||||
|
||||
tqdm = get_tqdm(args.no_tqdm)
|
||||
|
||||
exit(
|
||||
sys.exit(
|
||||
main(filename=json_filename, is_write_file=args.write, is_verbose=args.verbose)
|
||||
)
|
||||
|
||||
BIN
ci/helloworld_qttools.7z
Normal file
BIN
ci/helloworld_qttools.7z
Normal file
Binary file not shown.
BIN
ci/openglwindow_qt6.7z
Normal file
BIN
ci/openglwindow_qt6.7z
Normal file
Binary file not shown.
@@ -9,7 +9,10 @@ baseurl: https://download.qt.io
|
||||
connection_timeout: 30
|
||||
response_timeout: 30
|
||||
max_retries: 5
|
||||
max_retries_on_connection_error: 5
|
||||
retry_backoff: 0.1
|
||||
max_retries_on_checksum_error: 5
|
||||
max_retries_to_retrieve_hash: 5
|
||||
|
||||
[mirrors]
|
||||
blacklist:
|
||||
|
||||
242
ci/steps.yml
242
ci/steps.yml
@@ -45,12 +45,9 @@ steps:
|
||||
if [[ "$(SUBARCHIVES)" != "" ]]; then
|
||||
opt+=" --archives $(SUBARCHIVES)"
|
||||
fi
|
||||
if [[ "$(SPEC)" == "" ]]; then
|
||||
python -m aqt install-qt $(HOST) $(TARGET) $(QT_VERSION) $(ARCH) $opt
|
||||
else
|
||||
python -m aqt install-qt $(HOST) $(TARGET) "$(SPEC)" $(ARCH) $opt
|
||||
fi
|
||||
if [[ "$(TARGET)" == "android" || "$(TARGET)" == "ios" ]]; then
|
||||
if [[ "$(IS_AUTODESKTOP)" == "True" ]]; then
|
||||
opt+=" --autodesktop"
|
||||
elif [[ "$(TARGET)" == "android" || "$(TARGET)" == "ios" ]]; then
|
||||
if [[ "$(HOST)" == "windows" ]]; then
|
||||
python -m aqt install-qt $(HOST) desktop $(QT_VERSION) mingw81_64 --archives qtbase
|
||||
else
|
||||
@@ -58,6 +55,11 @@ steps:
|
||||
python -m aqt install-qt $(HOST) desktop $(QT_VERSION) --archives qtbase qtdeclarative
|
||||
fi
|
||||
fi
|
||||
if [[ "$(SPEC)" == "" ]]; then
|
||||
python -m aqt install-qt $(HOST) $(TARGET) $(QT_VERSION) $(ARCH) $opt
|
||||
else
|
||||
python -m aqt install-qt $(HOST) $(TARGET) "$(SPEC)" $(ARCH) $opt
|
||||
fi
|
||||
if [[ "$(OUTPUT_DIR)" != "" ]]; then
|
||||
# Use 'strings' to read binary
|
||||
echo "Verify patched value of qt_prfxpath"
|
||||
@@ -80,10 +82,6 @@ steps:
|
||||
fi
|
||||
fi
|
||||
if [[ "$(SUBCOMMAND)" == "list" ]]; then
|
||||
if [[ $(USE_EXTENSION) != "None" ]]; then
|
||||
# In this case, if you don't specify an extension, Updates.xml just shows dependencies
|
||||
ext="--extension $(USE_EXTENSION)"
|
||||
fi
|
||||
aqt list-qt $(HOST) # print all targets for host
|
||||
aqt list-tool $(HOST) $(TARGET) # print all tools for host/target
|
||||
aqt list-tool $(HOST) $(TARGET) qt3dstudio_runtime_240 # print all tool variant names for qt3dstudio
|
||||
@@ -93,25 +91,27 @@ steps:
|
||||
aqt list-tool $(HOST) $(TARGET) tools_qtcreator -l # print tool variant names, versions, release dates
|
||||
fi
|
||||
aqt list-qt $(HOST) $(TARGET) # print all versions of Qt
|
||||
if [[ $(HOST) == "desktop" ]]; then
|
||||
aqt list-qt $(HOST) $(TARGET) --extension wasm # print all wasm versions of Qt
|
||||
else
|
||||
! aqt list-qt $(HOST) $(TARGET) --extension wasm # there are no wasm versions of Qt
|
||||
fi
|
||||
aqt list-qt $(HOST) $(TARGET) $ext --spec "$(SPEC)" # print all versions of Qt in SimpleSpec
|
||||
ver=$(aqt list-qt $(HOST) $(TARGET) $ext --spec "$(SPEC)" --latest-version) # latest Qt in SimpleSpec
|
||||
aqt list-qt $(HOST) $(TARGET) --spec "$(SPEC)" # print all versions of Qt in SimpleSpec
|
||||
ver=$(aqt list-qt $(HOST) $(TARGET) --spec "$(SPEC)" --latest-version) # latest Qt in SimpleSpec
|
||||
[ $ver == $(QT_VERSION) ] # latest version in SPEC must be QT_VERSION
|
||||
aqt list-qt $(HOST) $(TARGET) $ext --spec "$(SPEC)" --modules latest $(ARCH) # print modules for latest in SimpleSpec
|
||||
aqt list-qt $(HOST) $(TARGET) $ext --modules $(QT_VERSION) $(ARCH) # print modules for version/host/target/arch
|
||||
if [[ $(HAS_EXTENSIONS) == "True" ]]; then
|
||||
aqt list-qt $(HOST) $(TARGET) --extensions $(QT_VERSION) # print choices for --extension flag
|
||||
aqt list-qt $(HOST) $(TARGET) --spec "$(SPEC)" --extensions latest
|
||||
else
|
||||
! aqt list-qt $(HOST) $(TARGET) --extensions $(QT_VERSION)
|
||||
! aqt list-qt $(HOST) $(TARGET) --spec "$(SPEC)" --extensions latest
|
||||
aqt list-qt $(HOST) $(TARGET) --spec "$(SPEC)" --modules latest $(ARCH) # print modules for latest in SimpleSpec
|
||||
aqt list-qt $(HOST) $(TARGET) --modules $(QT_VERSION) $(ARCH) # print modules for version/host/target/arch
|
||||
aqt list-qt $(HOST) $(TARGET) --arch $(QT_VERSION) # print architectures for version/host/target
|
||||
if [[ "$(TARGET)" == "desktop" ]]; then
|
||||
if [[ "$(HAS_WASM)" == "True" ]]; then # fail if 'wasm_32' is not in the list
|
||||
aqt list-qt $(HOST) $(TARGET) --arch $(QT_VERSION) | grep -w -q "wasm_32"
|
||||
else # fail if 'wasm_32' is in the list
|
||||
! aqt list-qt $(HOST) $(TARGET) --arch $(QT_VERSION) | grep -w -q "wasm_32"
|
||||
fi
|
||||
|
||||
# Extra check for Qt 6.5.0 WASM:
|
||||
for host in mac linux windows; do
|
||||
export WASM_ARCHES=$(aqt list-qt $host desktop --arch 6.5.0)
|
||||
echo $WASM_ARCHES | grep -w -q "wasm_singlethread" # fail if 'wasm_singlethread' is not in the list
|
||||
echo $WASM_ARCHES | grep -w -q "wasm_multithread" # fail if 'wasm_multithread' is not in the list
|
||||
done
|
||||
fi
|
||||
aqt list-qt $(HOST) $(TARGET) $ext --arch $(QT_VERSION) # print architectures for version/host/target
|
||||
aqt list-qt $(HOST) $(TARGET) $ext --spec "$(SPEC)" --arch latest
|
||||
aqt list-qt $(HOST) $(TARGET) --spec "$(SPEC)" --arch latest
|
||||
|
||||
# list-src/doc/example
|
||||
aqt list-src $(HOST) $(QT_VERSION) # print source archives available for host/desktop/version
|
||||
@@ -172,7 +172,16 @@ steps:
|
||||
export PATH=$(QT_BINDIR):$PATH
|
||||
qmake $(Build.BinariesDirectory)/tests/accelbubble
|
||||
make
|
||||
condition: and(eq(variables['TARGET'], 'android'), or(eq(variables['Agent.OS'], 'Linux'), eq(variables['Agent.OS'], 'Darwin')), ne(variables['SUBCOMMAND'], 'list'), ne(variables['SUBCOMMAND'], 'install-tool'))
|
||||
condition: |
|
||||
and(
|
||||
eq(variables['TARGET'], 'android'),
|
||||
or(
|
||||
eq(variables['Agent.OS'], 'Linux'),
|
||||
eq(variables['Agent.OS'], 'Darwin')
|
||||
),
|
||||
ne(variables['SUBCOMMAND'], 'list'),
|
||||
ne(variables['SUBCOMMAND'], 'install-tool')
|
||||
)
|
||||
displayName: Build accelbubble example application to test for android
|
||||
|
||||
##----------------------------------------------------
|
||||
@@ -250,7 +259,17 @@ steps:
|
||||
export PATH=$(QT_BINDIR):$PATH
|
||||
qmake $(Build.BinariesDirectory)/tests/helloworld
|
||||
make
|
||||
condition: and(eq( variables['TARGET'], 'desktop' ), ne( variables['ARCH'], 'wasm_32' ), or(eq(variables['Agent.OS'], 'Linux'), eq(variables['Agent.OS'], 'Darwin')), eq(variables['MODULE'], ''), eq(variables['SUBCOMMAND'], 'install-qt'))
|
||||
condition: |
|
||||
and(
|
||||
eq( variables['TARGET'], 'desktop' ),
|
||||
not( startsWith( variables['ARCH'], 'wasm_' ) ),
|
||||
or(
|
||||
eq(variables['Agent.OS'], 'Linux'),
|
||||
eq(variables['Agent.OS'], 'Darwin')
|
||||
),
|
||||
eq(variables['MODULE'], ''),
|
||||
eq(variables['SUBCOMMAND'], 'install-qt')
|
||||
)
|
||||
displayName: Build test with qmake for Linux and macOS w/o extra module
|
||||
- powershell: |
|
||||
if ( $env:TOOLCHAIN -eq 'MSVC' ) {
|
||||
@@ -269,7 +288,8 @@ steps:
|
||||
qmake $(Build.BinariesDirectory)\tests\helloworld
|
||||
jom
|
||||
} elseif ( $env:TOOLCHAIN -eq 'MINGW' ) {
|
||||
python -m aqt install-tool --outputdir $(Build.BinariesDirectory)/Qt $(HOST) desktop tools_mingw qt.tools.$(MINGW_VARIANT)
|
||||
python -m aqt install-tool $(if (($QT_BASE_MIRROR + "") -ne "") { "-b $QT_BASE_MIRROR" } else {""}) `
|
||||
--outputdir $(Build.BinariesDirectory)/Qt $(HOST) desktop tools_mingw qt.tools.$(MINGW_VARIANT)
|
||||
if ($?) {
|
||||
Write-Host 'Successfully installed tools_mingw'
|
||||
} else {
|
||||
@@ -284,8 +304,78 @@ steps:
|
||||
qmake $(Build.BinariesDirectory)\tests\helloworld
|
||||
mingw32-make
|
||||
}
|
||||
condition: and(eq( variables['Agent.OS'], 'Windows_NT'), eq(variables['MODULE'], ''), eq(variables['SUBCOMMAND'], 'install-qt'))
|
||||
condition: |
|
||||
and(
|
||||
eq(variables['Agent.OS'], 'Windows_NT'),
|
||||
eq(variables['MODULE'], ''),
|
||||
eq(variables['SUBCOMMAND'], 'install-qt')
|
||||
)
|
||||
displayName: build test with qmake w/o extra module
|
||||
|
||||
# When --archives non-empty
|
||||
- script: |
|
||||
set -ex
|
||||
rm -rf $(Build.BinariesDirectory)/tests
|
||||
mkdir $(Build.BinariesDirectory)/tests
|
||||
(cd $(Build.BinariesDirectory)/tests && 7zr x $(Build.SourcesDirectory)/ci/helloworld_qttools.7z)
|
||||
export PATH=$(QT_BINDIR):$PATH
|
||||
qmake -d $(Build.BinariesDirectory)/tests/helloworld_qttools
|
||||
make
|
||||
condition: |
|
||||
and(
|
||||
eq( variables['TARGET'], 'desktop' ),
|
||||
not( startsWith( variables['ARCH'], 'wasm_' ) ),
|
||||
or(
|
||||
eq(variables['Agent.OS'], 'Linux'),
|
||||
eq(variables['Agent.OS'], 'Darwin')
|
||||
),
|
||||
contains(variables['SUBARCHIVES'], 'qttools'),
|
||||
eq(variables['SUBCOMMAND'], 'install-qt')
|
||||
)
|
||||
displayName: build test with qmake for Linux and macOS with specific Qt modules (QT += uitools)
|
||||
- powershell: |
|
||||
if ( $env:TOOLCHAIN -eq 'MSVC' ) {
|
||||
# Load modules from cache
|
||||
$Env:PSModulePath = '$(MODULES_FOLDER)', $Env:PSModulePath -join [System.IO.Path]::PathSeparator
|
||||
Write-Host $Env:PSModulePath
|
||||
Import-Module "Pscx"
|
||||
Import-Module "VSSetup"
|
||||
|
||||
Import-VisualStudioVars -VisualStudioVersion $(VSVER) -Architecture $(ARCHITECTURE)
|
||||
$env:Path += ";$(WIN_QT_BINDIR)"
|
||||
try { rm -r -fo $(Build.BinariesDirectory)\tests } catch { $Error.Clear() }
|
||||
mkdir $(Build.BinariesDirectory)\tests
|
||||
cd $(Build.BinariesDirectory)\tests
|
||||
7z x $(Build.SourcesDirectory)\ci\helloworld_qttools.7z
|
||||
qmake -d $(Build.BinariesDirectory)\tests\helloworld_qttools
|
||||
nmake
|
||||
} elseif ( $env:TOOLCHAIN -eq 'MINGW' ) {
|
||||
Set-Item -Path Env:Path -Value ("$(Build.BinariesDirectory)\Qt\Tools\$(MINGW_FOLDER)\bin;$(WIN_QT_BINDIR);" + $Env:Path)
|
||||
Write-Host "Path == " + $env:Path
|
||||
if (![bool] (Get-Command -ErrorAction Ignore -Type Application mingw32-make)) {
|
||||
python -m aqt install-tool $(if (($QT_BASE_MIRROR + "") -ne "") { "-b $QT_BASE_MIRROR" } else {""}) `
|
||||
--outputdir $(Build.BinariesDirectory)/Qt $(HOST) desktop tools_mingw qt.tools.$(MINGW_VARIANT)
|
||||
if ($?) {
|
||||
Write-Host 'Successfully installed tools_mingw'
|
||||
} else {
|
||||
throw 'Failed to install tools_mingw'
|
||||
}
|
||||
}
|
||||
try { rm -r -fo $(Build.BinariesDirectory)\tests } catch { $Error.Clear() }
|
||||
mkdir $(Build.BinariesDirectory)\tests
|
||||
cd $(Build.BinariesDirectory)\tests
|
||||
7z x $(Build.SourcesDirectory)\ci\helloworld_qttools.7z
|
||||
qmake -d $(Build.BinariesDirectory)\tests\helloworld_qttools
|
||||
mingw32-make
|
||||
}
|
||||
condition: |
|
||||
and(
|
||||
eq( variables['Agent.OS'], 'Windows_NT'),
|
||||
contains(variables['SUBARCHIVES'], 'qttools'),
|
||||
eq(variables['SUBCOMMAND'], 'install-qt')
|
||||
)
|
||||
displayName: build test with qmake with specific Qt modules (QT += uitools)
|
||||
|
||||
- powershell: |
|
||||
# Load modules from cache
|
||||
$Env:PSModulePath = '$(MODULES_FOLDER)', $Env:PSModulePath -join [System.IO.Path]::PathSeparator
|
||||
@@ -302,7 +392,13 @@ steps:
|
||||
cd ..
|
||||
qmake $(Build.BinariesDirectory)\tests\redditclient
|
||||
nmake
|
||||
condition: and(eq( variables['Agent.OS'], 'Windows_NT'), eq(variables['TOOLCHAIN'], 'MSVC'), ne(variables['MODULE'], ''), ne(variables['VSVER'], '2019'))
|
||||
condition: |
|
||||
and(
|
||||
eq(variables['Agent.OS'], 'Windows_NT'),
|
||||
eq(variables['TOOLCHAIN'], 'MSVC'),
|
||||
ne(variables['MODULE'], ''),
|
||||
ne(variables['VSVER'], '2019')
|
||||
)
|
||||
displayName: build test with qmake with MSVC with extra module
|
||||
- bash: |
|
||||
set -ex
|
||||
@@ -315,27 +411,83 @@ steps:
|
||||
qmake $(Build.BinariesDirectory)/tests/redditclient
|
||||
make
|
||||
condition: |
|
||||
and(eq( variables['TARGET'], 'desktop'),
|
||||
or(eq(variables['Agent.OS'], 'Linux'),
|
||||
eq(variables['Agent.OS'], 'Darwin')),
|
||||
ne(variables['MODULE'], ''),
|
||||
eq(variables['SUBCOMMAND'], 'install-qt'))
|
||||
and(
|
||||
eq( variables['TARGET'], 'desktop'),
|
||||
or(
|
||||
eq(variables['Agent.OS'], 'Linux'),
|
||||
eq(variables['Agent.OS'], 'Darwin')
|
||||
),
|
||||
ne(variables['MODULE'], ''),
|
||||
eq(variables['SUBCOMMAND'], 'install-qt')
|
||||
)
|
||||
displayName: Build test with qmake for Linux and macOS with extra module
|
||||
|
||||
##----------------------------------------------------
|
||||
# wasm_32 on linux and mac
|
||||
# wasm_32/single/multithread on linux and mac
|
||||
- script: |
|
||||
set -ex
|
||||
git clone https://github.com/emscripten-core/emsdk.git
|
||||
set -uex
|
||||
git clone --depth=1 --branch=$(EMSDK_TAG) https://github.com/emscripten-core/emsdk.git
|
||||
cd emsdk
|
||||
./emsdk install sdk-fastcomp-1.38.27-64bit
|
||||
./emsdk activate --embedded sdk-fastcomp-1.38.27-64bit
|
||||
./emsdk install $(EMSDK_VERSION)
|
||||
./emsdk activate --embedded $(EMSDK_VERSION)
|
||||
source $(Build.BinariesDirectory)/emsdk/emsdk_env.sh
|
||||
mkdir $(Build.BinariesDirectory)/tests
|
||||
(cd $(Build.BinariesDirectory)/tests; 7zr x $(Build.SourcesDirectory)/ci/openglwindow.7z)
|
||||
if [[ $(QT_VERSION) = 6* ]]; then
|
||||
OPENGLWINDOW_7Z="openglwindow_qt6.7z"
|
||||
else
|
||||
OPENGLWINDOW_7Z="openglwindow.7z"
|
||||
fi
|
||||
(cd $(Build.BinariesDirectory)/tests; 7zr x $(Build.SourcesDirectory)/ci/$OPENGLWINDOW_7Z)
|
||||
export PATH=$(QT_BINDIR):$PATH
|
||||
qmake $(Build.BinariesDirectory)/tests/openglwindow
|
||||
make
|
||||
workingDirectory: $(Build.BinariesDirectory)
|
||||
condition: and(eq( variables['ARCH'], 'wasm_32' ), or(eq(variables['Agent.OS'], 'Linux'), eq(variables['Agent.OS'], 'Darwin')))
|
||||
displayName: 'Build WebAssembler sample project'
|
||||
condition: |
|
||||
and(
|
||||
startsWith( variables['ARCH'], 'wasm_' ),
|
||||
or(
|
||||
eq(variables['Agent.OS'], 'Linux'),
|
||||
eq(variables['Agent.OS'], 'Darwin')
|
||||
)
|
||||
)
|
||||
displayName: 'Build WebAssembler sample project on mac/linux'
|
||||
|
||||
# wasm_32/single/multithread on Windows cmd.exe
|
||||
- powershell: |
|
||||
git clone --depth=1 --branch=$(EMSDK_TAG) https://github.com/emscripten-core/emsdk.git
|
||||
cd emsdk
|
||||
.\emsdk install $(EMSDK_VERSION)
|
||||
.\emsdk activate --embedded $(EMSDK_VERSION)
|
||||
.\emsdk_env.bat
|
||||
mkdir $(Build.BinariesDirectory)\tests
|
||||
cd $(Build.BinariesDirectory)\tests
|
||||
$env:Path += ";$(WIN_QT_BINDIR)"
|
||||
echo "Add Qt/qmake to PATH at $(WIN_QT_BINDIR):"
|
||||
echo "$env:Path"
|
||||
if ('$(QT_VERSION)' -like '6*') {
|
||||
7z x $(Build.SourcesDirectory)\ci\openglwindow_qt6.7z
|
||||
echo "Inlined qmake.bat command is: $(WIN_AUTODESK_QT_BINDIR)\qmake -qtconf $(WIN_QT_BINDIR)\target_qt.conf $(Build.BinariesDirectory)\tests\openglwindow"
|
||||
$(WIN_AUTODESK_QT_BINDIR)\qmake.exe -qtconf "$(WIN_QT_BINDIR)\target_qt.conf" $(Build.BinariesDirectory)\tests\openglwindow
|
||||
} else {
|
||||
7z x $(Build.SourcesDirectory)\ci\openglwindow.7z
|
||||
echo "Qt5: run qmake.exe"
|
||||
qmake $(Build.BinariesDirectory)\tests\openglwindow
|
||||
}
|
||||
if ($false -eq $?) {
|
||||
Write-Error "qmake failed."
|
||||
Write-Host "##vso[task.logissue type=error]qmake failed."
|
||||
exit(1)
|
||||
}
|
||||
make
|
||||
if ($false -eq $?) {
|
||||
Write-Error "make failed."
|
||||
Write-Host "##vso[task.logissue type=error]nmake failed."
|
||||
exit(1)
|
||||
}
|
||||
workingDirectory: $(Build.BinariesDirectory)
|
||||
condition: |
|
||||
and(
|
||||
startsWith( variables['ARCH'], 'wasm_' ),
|
||||
eq( variables['Agent.OS'], 'Windows_NT' )
|
||||
)
|
||||
displayName: 'Build WebAssembler sample project on windows'
|
||||
|
||||
320
docs/CHANGELOG.rst
Normal file
320
docs/CHANGELOG.rst
Normal file
@@ -0,0 +1,320 @@
|
||||
:tocdepth: 1
|
||||
|
||||
.. default-role:: any
|
||||
|
||||
.. _changes:
|
||||
|
||||
==========
|
||||
ChangeLog
|
||||
==========
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
`Unreleased`_
|
||||
=============
|
||||
|
||||
`v3.1.10`_ (14, Nov. 2023)
|
||||
==========================
|
||||
|
||||
Fixed
|
||||
-----
|
||||
- list_* commands ignore base url setting (#731,#732)
|
||||
|
||||
Changed
|
||||
-------
|
||||
- chore: support build on git export (#730)
|
||||
|
||||
`v3.1.9`_ (6, Nov. 2023)
|
||||
========================
|
||||
|
||||
Security
|
||||
--------
|
||||
* CVE-2023-32681: Bump requests@2.31.0 (#724)
|
||||
|
||||
Changed
|
||||
-------
|
||||
* Remove a specific mirror from fallback (#688)
|
||||
* add ``debug`` extras for test and check (#725)
|
||||
* Bump pytest-remotedata@0.4.1
|
||||
* Bump flake8,flake8-isort@6.0.0 (#726)
|
||||
* docs: change interpreted text to inline literals (#728)
|
||||
|
||||
Added
|
||||
-----
|
||||
* macOS binary build (#722)
|
||||
* ``ignore_hash`` and ``hash_algorithm`` options (#684)
|
||||
|
||||
`v3.1.8`_ (1, Nov. 2023)
|
||||
========================
|
||||
|
||||
Changed
|
||||
-------
|
||||
- Add 6.5.3 and openssl as known versions (#718)
|
||||
- Docs: remove deprecated configuration description (#714)
|
||||
- Test: test on python 3.8, 3.9 and 3.11 (#715)
|
||||
- Docs: Update documentation for ``--autodesktop`` flag (#713)
|
||||
- Use 'tar' filter when extracting tarfiles (#707)
|
||||
- Log a warning when aqtinstall falls back to an external 7z extraction tool (#705)
|
||||
- Bump py7zr@0.20.6(#702)
|
||||
|
||||
Fixed
|
||||
-----
|
||||
- Fix failed CI (#716)
|
||||
- Fix installation of win64_msvc2019_arm64 arch (#711)
|
||||
- Fix ``test_install`` that fails on Python<3.11.4 (#708)
|
||||
- Fix failing documentation builds (#706)
|
||||
- Fix: exception when target path is relative (#702)
|
||||
|
||||
`v3.1.7`_ (1, Aug. 2023)
|
||||
========================
|
||||
|
||||
Added
|
||||
-----
|
||||
Add support for standalone sdktool installation(#677)
|
||||
|
||||
Fixed
|
||||
-----
|
||||
- Fixed command to check tools_mingw90 (#680)
|
||||
- Fixed help text for list-tool
|
||||
|
||||
Changed
|
||||
-------
|
||||
* Add Qt 6.6.0, 6.5.2 and 6.5.1 as known version(#685,#698)
|
||||
* Default blacklist setting(#689)
|
||||
* Add test for sdktool(#678)
|
||||
|
||||
|
||||
`v3.1.6`_ (4, May, 2023)
|
||||
========================
|
||||
|
||||
Added
|
||||
-----
|
||||
* Add opensslv3 as known module (#674)
|
||||
* Add code signature for standalone binary
|
||||
|
||||
`v3.1.5`_ (30, Mar. 2023)
|
||||
=========================
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Fix failure to install Qt 6.4.3 source and docs on Windows(#665)
|
||||
* Fix failed .tar.gz extraction in ``install-src`` and ``install-doc`` (#663)
|
||||
|
||||
`v3.1.4`_ (25, Mar. 2023)
|
||||
=========================
|
||||
|
||||
Changed
|
||||
-------
|
||||
* Add Qt 6.4.3 as known version(#661)
|
||||
* Catch OSError(errno.ENOSPC) and PermissionError (#657)
|
||||
* Update security policy
|
||||
|
||||
|
||||
`v3.1.3`_ (2, Mar. 2023)
|
||||
========================
|
||||
|
||||
Changed
|
||||
-------
|
||||
* make the message about "unknown" Qt versions and modules
|
||||
more friendly and easy to understand (#646,#654)
|
||||
|
||||
|
||||
`v3.1.2`_ (17, Feb. 2023)
|
||||
=========================
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* CI: Pin checkout at v3 in all workflows(#649)
|
||||
* Fix list-qt and install-qt handling of WASM for Qt 6.5.0 (#648)
|
||||
|
||||
Changed
|
||||
-------
|
||||
* Update combinations.xml (#650)
|
||||
* Update documentation for ``--autodesktop`` flag (#638)
|
||||
|
||||
`v3.1.1`_ (10, Feb. 2023)
|
||||
=========================
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* CI: Pin EMSDK version (#641)
|
||||
* Test: update tox.ini config (#634)
|
||||
* Fix errors in install-* caused by duplicate modules (#633)
|
||||
|
||||
|
||||
`v3.1.0`_ (5, Dec. 2022)
|
||||
========================
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Support Qt 6.4.1 Android installation (#621,#626,#627)
|
||||
* Fix URL of Nelson's blog on README
|
||||
|
||||
Changed
|
||||
-------
|
||||
* Update pyproject.toml and drop setup.cfg
|
||||
* Standalone binary build with PyInstaller directly(#598)
|
||||
* Bump dependencies versions
|
||||
- py7zr>=0.20.2
|
||||
- flake8<6
|
||||
- flake8-isort>=4.2.0
|
||||
* metadata: change link to changelog
|
||||
* docs: move CHANGELOG.rst into docs/
|
||||
* Refactoring internals and now check types with mypy
|
||||
|
||||
Deprecated
|
||||
----------
|
||||
* Drop support for python 3.6
|
||||
|
||||
|
||||
`v3.0.2`_ (26, Oct. 2022)
|
||||
=========================
|
||||
|
||||
* Fix installation of Qt6/WASM arch on windows (#583,#584)
|
||||
* Docs: allow localization (#588)
|
||||
* Docs: Add Japanese translation (#595)
|
||||
|
||||
`v3.0.1`_ (30, Sep. 2022)
|
||||
=========================
|
||||
|
||||
* Actions: Fix standalone executable upload (#581)
|
||||
* Actions: Bump versions (#579)
|
||||
- pypa/gh-action-pypi-publish@v1
|
||||
- actions/setup-python@v4
|
||||
|
||||
`v3.0.0`_ (29, Sep. 2022)
|
||||
=========================
|
||||
|
||||
Added
|
||||
-----
|
||||
* Automatically install desktop qt when required for android/ios qt installations(#540)
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Tolerate empty DownloadArchive tags while parsing XML(#563)
|
||||
* Fix standalone executable build for windows (#565,#567)
|
||||
|
||||
Changed
|
||||
-------
|
||||
* Update Security policy
|
||||
* Update combinations.json(#566)
|
||||
* CI: now test on MacOS 12(#541)
|
||||
|
||||
`v2.2.3`_ (17, Aug. 2022)
|
||||
=========================
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Building standalone executable: aqt.exe (#556,#557)
|
||||
|
||||
Added
|
||||
-----
|
||||
* Docs: add explanation of ``list-qt --long-modules`` (#555)
|
||||
|
||||
|
||||
`v2.2.2`_ (11, Aug. 2022)
|
||||
=========================
|
||||
|
||||
Added
|
||||
-----
|
||||
* Add ``aqt list-qt --long-modules`` (#543,#547)
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Fix kwargs passed up AqtException inheritance tree (#550)
|
||||
|
||||
|
||||
`v2.2.1`_ (9, Aug. 2022)
|
||||
------------------------
|
||||
|
||||
Changed
|
||||
-------
|
||||
* ``install-qt`` command respect ``--base`` argument option when
|
||||
retrieve metadata XML files by making ``MetadataFactory``
|
||||
respect ``baseurl`` set. (#545)
|
||||
|
||||
`v2.2.0`_ (2, Aug. 2022)
|
||||
========================
|
||||
|
||||
Added
|
||||
-----
|
||||
* Add code of conduct (#535)
|
||||
|
||||
Changed
|
||||
-------
|
||||
* test: prevent use of flake8@5.0 (#544)
|
||||
* Improve tox and pytest config(#544)
|
||||
* Properly retrieve folder names from html pages of all mirrors(#520)
|
||||
* Log: left align the level name (#539)
|
||||
* Update combinations (#537)
|
||||
* Introduce Updates.xml data class and parser (#533)
|
||||
* archives: do not keep update.xml text in field (#534)
|
||||
* docs: Bump sphinx@5.0 (#524)
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Update readthedocs config (#535)
|
||||
* Fix readme description of list-qt (#527)
|
||||
|
||||
Deprecated
|
||||
----------
|
||||
* Deprecate setup.py file (#531)
|
||||
|
||||
`v2.1.0`_ (14, Apr. 2022)
|
||||
=========================
|
||||
|
||||
Changed
|
||||
-------
|
||||
* Change security policy(#506):
|
||||
Supported 2.0.x
|
||||
Unsupported 1.2.x and before
|
||||
* Bump py7zr@0.18.3(#509)
|
||||
* pyproject.toml configuration
|
||||
* project section(#507)
|
||||
* setuptools_scm settings(#508)
|
||||
* Use SHA256 hash from trusted mirror for integrity check (#493)
|
||||
* Update combinations.xml
|
||||
* QtDesignStudio generation2 (#486)
|
||||
* IFW version (from 42 to 43) change (#495)
|
||||
* Support Qt 6.2.4 (#502)
|
||||
* Update fallback mirror list (#485)
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Fix patching of Qt6.2.2-ios(#510, #503)
|
||||
* Test: Conditionally install dependencies on Ubuntu (#494)
|
||||
|
||||
Added
|
||||
-----
|
||||
* doc: warn about unrelated aqt package (#490)
|
||||
* doc: add explanation of --config flag in CLI docs (#491)
|
||||
* doc: note about MSYS2/Mingw64 environment
|
||||
|
||||
Security
|
||||
--------
|
||||
* Use secrets for secure random numbers(#498)
|
||||
* Use defusedxml to parse Updates.xml file to avoid attack(#498)
|
||||
* Improve get_hash function(#504)
|
||||
* Check Update.xml file with SHA256 hash (#493)
|
||||
|
||||
|
||||
.. _Unreleased: https://github.com/miurahr/aqtinstall/compare/v3.1.10...HEAD
|
||||
.. _v3.1.10: https://github.com/miurahr/aqtinstall/compare/v3.1.9...v3.1.10
|
||||
.. _v3.1.9: https://github.com/miurahr/aqtinstall/compare/v3.1.8...v3.1.9
|
||||
.. _v3.1.8: https://github.com/miurahr/aqtinstall/compare/v3.1.7...v3.1.8
|
||||
.. _v3.1.7: https://github.com/miurahr/aqtinstall/compare/v3.1.6...v3.1.7
|
||||
.. _v3.1.6: https://github.com/miurahr/aqtinstall/compare/v3.1.5...v3.1.6
|
||||
.. _v3.1.5: https://github.com/miurahr/aqtinstall/compare/v3.1.4...v3.1.5
|
||||
.. _v3.1.4: https://github.com/miurahr/aqtinstall/compare/v3.1.3...v3.1.4
|
||||
.. _v3.1.3: https://github.com/miurahr/aqtinstall/compare/v3.1.2...v3.1.3
|
||||
.. _v3.1.2: https://github.com/miurahr/aqtinstall/compare/v3.1.1...v3.1.2
|
||||
.. _v3.1.1: https://github.com/miurahr/aqtinstall/compare/v3.1.0...v3.1.1
|
||||
.. _v3.1.0: https://github.com/miurahr/aqtinstall/compare/v3.0.2...v3.1.0
|
||||
.. _v3.0.2: https://github.com/miurahr/aqtinstall/compare/v3.0.1...v3.0.2
|
||||
.. _v3.0.1: https://github.com/miurahr/aqtinstall/compare/v3.0.0...v3.0.1
|
||||
.. _v3.0.0: https://github.com/miurahr/aqtinstall/compare/v2.2.3...v3.0.0
|
||||
.. _v2.2.3: https://github.com/miurahr/aqtinstall/compare/v2.2.2...v2.2.3
|
||||
.. _v2.2.2: https://github.com/miurahr/aqtinstall/compare/v2.2.1...v2.2.2
|
||||
.. _v2.2.1: https://github.com/miurahr/aqtinstall/compare/v2.2.0...v2.2.1
|
||||
.. _v2.2.0: https://github.com/miurahr/aqtinstall/compare/v2.1.0...v2.2.0
|
||||
.. _v2.1.0: https://github.com/miurahr/aqtinstall/compare/v2.0.6...v2.1.0
|
||||
@@ -140,8 +140,8 @@ Community Impact Guidelines were inspired by `Mozilla's code of conduct enforcem
|
||||
|
||||
For answers to common questions about this code of conduct, see the `FAQ`_ or its translations_.
|
||||
|
||||
.. _`Contributor Covenant`: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
|
||||
.. _`Contributor Covenant`: https://www.contributor-covenant.org/version/2/0/code_of_conduct/
|
||||
.. _`homepage`: https://www.contributor-covenant.org
|
||||
.. _`Mozilla's code of conduct enforcement ladder`: https://github.com/mozilla/diversity
|
||||
.. _`Mozilla's code of conduct enforcement ladder`: https://github.com/mozilla/inclusion
|
||||
.. _`FAQ`: https://www.contributor-covenant.org/faq
|
||||
.. _`translations`: https://www.contributor-covenant.org/translations
|
||||
|
||||
@@ -7,11 +7,11 @@ Supported Versions
|
||||
+---------+---------------------+
|
||||
| Version | Status |
|
||||
+=========+=====================+
|
||||
| 2.1.x | Stable version |
|
||||
| 3.1.x | Stable version |
|
||||
+---------+---------------------+
|
||||
| 2.0.x | Security fixes only |
|
||||
| 3.0.x | Security fixes only |
|
||||
+---------+---------------------+
|
||||
| < 2.0 | not supported |
|
||||
| < 3.0 | not supported |
|
||||
+---------+---------------------+
|
||||
|
||||
Reporting a Vulnerability
|
||||
|
||||
@@ -14,26 +14,29 @@ David also leads many developments and reviews effort after 2.0.
|
||||
|
||||
All contributors, listed alphabetically, are:
|
||||
|
||||
* Alberto Mardegan(ignore_hash option)
|
||||
* Andrei Yankovich (tools ifw installation)
|
||||
* Aurélien Gâteau (patching to qmake)
|
||||
* Benjamin O (Github Actions and more)
|
||||
* Christian Hoffmann (Update mirror list)
|
||||
* David Dalcino (Many improvements on CI automations, List commands, tests, documents and so on)
|
||||
* David Dalcino (Many improvements on CI automations, commands, tests, documents and so on)
|
||||
* Doronin Stanislav (document)
|
||||
* Fabrice Le Bars (32bit binary)
|
||||
* Felix Barz (Android, Explicit extra module installation)
|
||||
* Gamso (improve parsing of update.xml)
|
||||
* Julien Marrec (mypy, type hints)
|
||||
* Kyle Altendorf (7z binary path search)
|
||||
* lightmare (Documents)
|
||||
* Mike Tzou (Update fallback url)
|
||||
* @lebarsfa (ignore_hash/hash_algorithm options)
|
||||
* @lightmare (Documents)
|
||||
* Martin Delille (Documents)
|
||||
* Mike Tzou (Update fallback url)
|
||||
* mite-user (folder index handling of download web sites)
|
||||
* Mizux Seihax (Qt versions)
|
||||
* Mozi (CI/workflow improvement, log format)
|
||||
* Nelson Chen (CI tests)
|
||||
* @nikitalita (Binary distribution)
|
||||
* @pylipp (Documents)
|
||||
* @Steveice10 (MacOS binary build)
|
||||
* Sztergbaum Roman (Version database)
|
||||
* Thomas Grainger (CLI entry point)
|
||||
* @tsteven4 (fix patching to qmake, pkgconfig and libtool)
|
||||
|
||||
81
docs/cli.rst
81
docs/cli.rst
@@ -42,17 +42,15 @@ list-qt command
|
||||
|
||||
aqt list-qt [-h | --help]
|
||||
[-c | --config]
|
||||
[--extension <extension>]
|
||||
[--spec <specification>]
|
||||
[--modules (<Qt version> | latest) <architecture> |
|
||||
--long-modules (<Qt version> | latest) <architecture> |
|
||||
--extensions (<Qt version> | latest) |
|
||||
--arch (<Qt version> | latest) |
|
||||
--archives (<Qt version> | latest) architecture [modules...]
|
||||
--latest-version]
|
||||
<host> [<target>]
|
||||
|
||||
List available versions of Qt, targets, extensions, modules, and architectures.
|
||||
List available versions of Qt, targets, modules, and architectures.
|
||||
|
||||
.. describe:: host
|
||||
|
||||
@@ -68,21 +66,6 @@ List available versions of Qt, targets, extensions, modules, and architectures.
|
||||
|
||||
Display help text
|
||||
|
||||
.. option:: --extension <Extension>
|
||||
|
||||
Extension of packages to list
|
||||
{wasm,src_doc_examples,preview,wasm_preview,x86_64,x86,armv7,arm64_v8a}
|
||||
|
||||
Use the ``--extensions`` flag to list all relevant options for a host/target.
|
||||
Incompatible with the ``--extensions`` flag, but may be combined with any other flag.
|
||||
|
||||
.. option:: --extensions (<Qt version> | latest)
|
||||
|
||||
Qt version in the format of "5.X.Y", or the keyword ``latest``.
|
||||
When set, this prints all valid arguments for the ``--extension`` flag for
|
||||
Qt 5.X.Y, or the latest version of Qt if ``latest`` is specified.
|
||||
Incompatible with the ``--extension`` flag.
|
||||
|
||||
.. option:: --spec <Specification>
|
||||
|
||||
Print versions of Qt within a `SimpleSpec`_ that specifies a range of versions.
|
||||
@@ -98,7 +81,7 @@ List available versions of Qt, targets, extensions, modules, and architectures.
|
||||
|
||||
.. option:: --modules (<Qt version> | latest) <architecture>
|
||||
|
||||
This flag lists all the modules available for Qt 5.X.Y with a host/target/extension/architecture
|
||||
This flag lists all the modules available for Qt 5.X.Y with a host/target/architecture
|
||||
combination, or the latest version of Qt if ``latest`` is specified.
|
||||
You can list available architectures by using ``aqt list-qt`` with the
|
||||
``--arch`` flag described below.
|
||||
@@ -149,7 +132,7 @@ List available versions of Qt, targets, extensions, modules, and architectures.
|
||||
.. option:: --arch (<Qt version> | latest)
|
||||
|
||||
Qt version in the format of "5.X.Y". When set, this prints all architectures
|
||||
available for Qt 5.X.Y with a host/target/extension, or the latest version
|
||||
available for Qt 5.X.Y with a host/target, or the latest version
|
||||
of Qt if ``latest`` is specified.
|
||||
|
||||
.. _`list archives flag`:
|
||||
@@ -174,7 +157,7 @@ List available versions of Qt, targets, extensions, modules, and architectures.
|
||||
.. option:: --latest-version
|
||||
|
||||
Print only the newest version available
|
||||
May be combined with the ``--extension`` and/or ``--spec`` flags.
|
||||
May be combined with the ``--spec`` flag.
|
||||
|
||||
|
||||
.. _list-src command:
|
||||
@@ -404,7 +387,7 @@ are described here:
|
||||
|
||||
.. _py7zr: https://pypi.org/project/py7zr/
|
||||
.. _7-zip: https://www.7-zip.org/
|
||||
.. _Choco: https://community.chocolatey.org/packages/7zip/19.0
|
||||
.. _Choco: https://community.chocolatey.org/packages/7zip/
|
||||
.. _brew: https://formulae.brew.sh/formula/p7zip
|
||||
|
||||
.. option:: --internal
|
||||
@@ -510,6 +493,7 @@ install-qt command
|
||||
[-d | --archive-dest] <path>
|
||||
[-m | --modules (all | <module> [<module>...])]
|
||||
[--archives <archive> [<archive>...]]
|
||||
[--autodesktop]
|
||||
[--noarchives]
|
||||
<host> <target> (<Qt version> | <spec>) [<arch>]
|
||||
|
||||
@@ -523,6 +507,8 @@ There are various combinations to accept according to Qt version.
|
||||
.. describe:: target
|
||||
|
||||
desktop, ios, winrt, or android. The type of device for which you are developing Qt programs.
|
||||
If your target is ios, please be aware that versions of Qt older than 6.2.4 are expected to be
|
||||
non-functional with current versions of XCode (applies to any XCode greater than or equal to 13).
|
||||
|
||||
.. describe:: Qt version
|
||||
|
||||
@@ -557,6 +543,13 @@ There are various combinations to accept according to Qt version.
|
||||
|
||||
Use the :ref:`List-Qt Command` to list available architectures.
|
||||
|
||||
.. option:: --autodesktop
|
||||
|
||||
If you are installing an ios, android, WASM, or msvc_arm64 version of Qt6,
|
||||
the corresponding desktop version of Qt must be installed alongside of it.
|
||||
Turn this option on to install it automatically.
|
||||
This option will have no effect if the desktop version of Qt is not required.
|
||||
|
||||
.. option:: --noarchives
|
||||
|
||||
[Advanced] Specify not to install all base packages.
|
||||
@@ -796,12 +789,12 @@ Command examples
|
||||
|
||||
.. program:: None
|
||||
|
||||
Example: Installing Qt SDK 5.12.0 for Linux with QtCharts and QtNetworkAuth:
|
||||
Example: Installing Qt SDK 5.12.12 for Linux with QtCharts and QtNetworkAuth:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install aqtinstall
|
||||
sudo aqt install-qt --outputdir /opt linux desktop 5.12.0 -m qtcharts qtnetworkauth
|
||||
sudo aqt install-qt --outputdir /opt linux desktop 5.12.12 -m qtcharts qtnetworkauth
|
||||
|
||||
|
||||
Example: Installing the newest LTS version of Qt 5.12:
|
||||
@@ -812,11 +805,18 @@ Example: Installing the newest LTS version of Qt 5.12:
|
||||
sudo aqt install-qt linux desktop 5.12 win64_mingw73
|
||||
|
||||
|
||||
Example: Installing Android (armv7) Qt 5.10.2:
|
||||
Example: Installing Android (armv7) Qt 5.13.2:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
aqt install-qt linux android 5.10.2 android_armv7
|
||||
aqt install-qt linux android 5.13.2 android_armv7
|
||||
|
||||
|
||||
Example: Installing Android (armv7) Qt 6.4.2:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
aqt install-qt linux android 6.4.2 android_armv7 --autodesktop
|
||||
|
||||
|
||||
Example: Install examples, doc and source:
|
||||
@@ -849,6 +849,13 @@ Example: Install Web Assembly
|
||||
aqt install-qt linux desktop 5.15.0 wasm_32
|
||||
|
||||
|
||||
Example: Install Qt6 for Web Assembly
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
aqt install-qt linux desktop 6.2.4 wasm_32 --autodesktop
|
||||
|
||||
|
||||
Example: List available versions of Qt on Linux
|
||||
|
||||
.. code-block:: console
|
||||
@@ -912,18 +919,34 @@ Example: Install vcredist on Windows:
|
||||
.. code-block:: doscon
|
||||
|
||||
|
||||
aqt install-tool windows tools_vcredist
|
||||
aqt install-tool windows desktop tools_vcredist
|
||||
.\Qt\Tools\vcredist\vcredist_msvc2019_x64.exe /norestart /q
|
||||
|
||||
|
||||
Example: Install MinGW on Windows
|
||||
Example: Install MinGW 8.1.0 on Windows:
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
aqt install-tool -O c:\Qt windows tools_mingw qt.tools.win64_mingw810
|
||||
aqt install-tool -O c:\Qt windows desktop tools_mingw qt.tools.win64_mingw810
|
||||
set PATH=C:\Qt\Tools\mingw810_64\bin
|
||||
|
||||
|
||||
Example: Install MinGW 11.2.0 on Windows:
|
||||
|
||||
.. code-block:: doscon
|
||||
|
||||
aqt install-tool -O c:\Qt windows desktop tools_mingw90
|
||||
set PATH=C:\Qt\Tools\mingw1120_64\bin
|
||||
|
||||
.. note::
|
||||
|
||||
This is not a typo; it is a mislabelled tool name!
|
||||
``tools_mingw90`` and the tool variant ``qt.tools.win64_mingw900``
|
||||
do not contain MinGW 9.0.0; they actually contain MinGW 11.2.0!
|
||||
Verify with ``aqt list-tool --long windows desktop tools_mingw90``
|
||||
in a wide terminal.
|
||||
|
||||
|
||||
Example: Show help message
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
@@ -55,7 +55,7 @@ master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'aqtinstall'
|
||||
copyright = u'2019-2021, Hiroshi Miura'
|
||||
copyright = u'2019-2023, Hiroshi Miura'
|
||||
author = u'Hiroshi Miura'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
@@ -299,3 +299,5 @@ extlinks = {'issue': ('https://github.com/miurahr/aqtinstall/issues/%s',
|
||||
linkcheck_ignore = [r'https://github.com/miurahr/aqtinstall/compare/.+',
|
||||
'http://mirrors.tuna.tsinghua.edu.cn',
|
||||
'http://mirrors.geekpie.club/']
|
||||
|
||||
locale_dirs=['locale/']
|
||||
|
||||
@@ -31,6 +31,8 @@ A file is like as follows:
|
||||
retry_backoff: 0.1
|
||||
max_retries_on_checksum_error: 5
|
||||
max_retries_to_retrieve_hash: 5
|
||||
hash_algorithm: sha256
|
||||
INSECURE_NOT_FOR_PRODUCTION_ignore_hash: False
|
||||
|
||||
[mirrors]
|
||||
trusted_mirrors:
|
||||
@@ -97,7 +99,7 @@ min_module_size:
|
||||
and they are exactly 40 bytes when uncompressed.
|
||||
The authors feel that it is not useful for ``aqt list-*`` to list these empty modules.
|
||||
If you want to print these modules with ``aqt list-*``, please feel free to change
|
||||
the `min_module_size` value to something less than 40.
|
||||
the ``min_module_size`` value to something less than 40.
|
||||
|
||||
This setting has no effect on your ability to install these modules.
|
||||
``aqt install-*`` can will still install them without any warnings.
|
||||
@@ -130,6 +132,18 @@ max_retries_on_checksum_error:
|
||||
This setting controls how many times ``aqt`` will attempt to download a file,
|
||||
in the case of a checksum error.
|
||||
|
||||
hash_algorithm:
|
||||
This is either ``sha256``, ``sha1`` or ``md5``. ``sha256`` is the only safe
|
||||
value to use here. Default is ``sha256`` if not set.
|
||||
See also ``trusted_mirrors`` setting.
|
||||
|
||||
INSECURE_NOT_FOR_PRODUCTION_ignore_hash:
|
||||
This is either ``True`` or ``False``.
|
||||
The ``True`` setting disables hash checking when downloading files. Although
|
||||
this is not recommended, this may help when hashes are not available.
|
||||
The ``False`` setting will enforce hash checking. This is highly recommended
|
||||
to avoid corrupted files.
|
||||
|
||||
|
||||
The ``[mirrors]`` section is a configuration for mirror handling.
|
||||
|
||||
@@ -156,8 +170,8 @@ blacklist:
|
||||
Some mirror sites ignore a connection from IP addresses out of their preffered one.
|
||||
It will cause connection error or connection timeout.
|
||||
There are some known mirror sites in default.
|
||||
When you are happy with the default sites,
|
||||
you can override with your custom settings.
|
||||
If you are not happy with the default sites,
|
||||
you can override them with custom settings.
|
||||
|
||||
fallbacks:
|
||||
It is a list of URL where is a good for access.
|
||||
|
||||
@@ -75,7 +75,7 @@ Qt 6.2.0 for Windows Desktop. To do this, we can use :ref:`aqt list-qt <list-qt
|
||||
.. code-block:: console
|
||||
|
||||
$ aqt list-qt windows desktop --arch 6.2.0
|
||||
win64_mingw81 win64_msvc2019_64 win64_msvc2019_arm64
|
||||
win64_mingw81 win64_msvc2019_64 win64_msvc2019_arm64 wasm_32
|
||||
|
||||
Notice that this is a very small subset of the architectures listed in the
|
||||
`Available Qt versions`_ wiki page. If we need to use some architecture that
|
||||
@@ -83,7 +83,7 @@ is not on this list, we can use the `Available Qt versions`_ wiki page to get
|
||||
a rough idea of what versions support the architecture we want, and then use
|
||||
:ref:`aqt list-qt <list-qt command>` to confirm that the architecture is available.
|
||||
|
||||
Let's say that we want to install Qt 6.2.0 with architecture `win64_mingw81`.
|
||||
Let's say that we want to install Qt 6.2.0 with architecture ``win64_mingw81``.
|
||||
The installation command we need is:
|
||||
|
||||
.. code-block:: console
|
||||
@@ -120,7 +120,7 @@ installed by default, using this command:
|
||||
$ aqt install-qt linux desktop 6.2.0 gcc_64 --external 7z
|
||||
|
||||
.. _py7zr: https://pypi.org/project/py7zr/
|
||||
.. _p7zip: http://p7zip.sourceforge.net/
|
||||
.. _p7zip: https://p7zip.sourceforge.net/
|
||||
.. _7-zip: https://www.7-zip.org/
|
||||
|
||||
Changing the output directory
|
||||
@@ -128,7 +128,7 @@ Changing the output directory
|
||||
|
||||
By default, ``aqt`` will install all of the Qt packages into the current
|
||||
working directory, in the subdirectory ``./<Qt version>/<arch>/``.
|
||||
For example, if we install Qt 6.2.0 for Windows desktop with arch `win64_mingw81`,
|
||||
For example, if we install Qt 6.2.0 for Windows desktop with arch ``win64_mingw81``,
|
||||
it would end up in ``./6.2.0/win64_mingw81``.
|
||||
|
||||
If you would prefer to install it to another location, you
|
||||
@@ -160,6 +160,8 @@ combination, so we will need to supply :ref:`aqt list-qt <list-qt command>` with
|
||||
qtcharts qtdatavis3d qtlottie qtnetworkauth qtpurchasing qtquick3d
|
||||
qtquicktimeline qtscript qtvirtualkeyboard qtwebengine qtwebglplugin
|
||||
|
||||
.. _long_modules explanation:
|
||||
|
||||
Let's say that we want to know more about these modules before we install them.
|
||||
We can use the ``--long-modules`` flag for that:
|
||||
|
||||
@@ -182,10 +184,30 @@ We can use the ``--long-modules`` flag for that:
|
||||
|
||||
Note that if your terminal is wider than 95 characters, this command will show
|
||||
release dates and sizes in extra columns to the right.
|
||||
If you try this, you will notice that `debug_info` is 5.9 gigabytes installed.
|
||||
If you try this, you will notice that ``debug_info`` is 5.9 gigabytes installed.
|
||||
|
||||
Let's say that we want to install `qtcharts` and `qtnetworkauth`.
|
||||
We can do that by using the `-m` flag with the :ref:`aqt install-qt <qt installation command>` command.
|
||||
Also, notice that the 'Display Name' indicates which compiler the module is
|
||||
intended to be used with. In this case, for the architecture ``win64_mingw81``,
|
||||
you will most likely want to use the "MinGW 8.1.0 64-bit" compiler.
|
||||
Here's what the command prints when you use it with the ambiguously-named
|
||||
``win64_mingw`` architecture:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ python -m aqt list-qt windows desktop --long-modules 6.2.4 win64_mingw
|
||||
Module Name Display Name
|
||||
=======================================================================
|
||||
debug_info Desktop MinGW 11.2.0 64-bit debug information files
|
||||
qt3d Qt 3D for MinGW 11.2.0 64-bit
|
||||
qt5compat Qt 5 Compatibility Module for MinGW 11.2.0 64-bit
|
||||
qtactiveqt Qt 3D for MinGW 11.2.0 64-bit
|
||||
qtcharts Qt Charts for MinGW 11.2.0 64-bit
|
||||
...
|
||||
|
||||
You can find out how to install MinGW 8.1.0 and 11.2.0 in the `Installing Tools`_ section.
|
||||
|
||||
Let's say that we want to install ``qtcharts`` and ``qtnetworkauth``.
|
||||
We can do that by using the ``-m`` flag with the :ref:`aqt install-qt <qt installation command>` command.
|
||||
This flag receives the name of at least one module as an argument:
|
||||
|
||||
.. code-block:: console
|
||||
@@ -213,8 +235,8 @@ The ``xargs`` equivalent to this command is an exercise left to the reader.
|
||||
If you want to install all available modules, you are probably better off using
|
||||
the ``all`` keyword, as discussed above. This scripting example is presented to
|
||||
give you a sense of how to accomplish something more complicated.
|
||||
Perhaps you want to install all modules except `qtnetworkauth`; you could write a script
|
||||
that removes `qtnetworkauth` from the output of :ref:`aqt list-qt <list-qt command>`,
|
||||
Perhaps you want to install all modules except ``qtnetworkauth``; you could write a script
|
||||
that removes ``qtnetworkauth`` from the output of :ref:`aqt list-qt <list-qt command>`,
|
||||
and pipe that into :ref:`aqt install-qt <qt installation command>`.
|
||||
This exercise is left to the reader.
|
||||
|
||||
@@ -222,106 +244,61 @@ This exercise is left to the reader.
|
||||
Installing Qt for Android
|
||||
-------------------------
|
||||
|
||||
Let's install Qt for Android. Installing Qt 5 will be similar to installing Qt
|
||||
for Desktop on Windows, but there will be differences when we get to Qt 6.
|
||||
Let's install Qt for Android. This will be similar to installing Qt for Desktop on Windows.
|
||||
|
||||
.. note::
|
||||
|
||||
Versions of aqtinstall older than 3.1.0 required the use of the ``--extensions`` and
|
||||
``--extension`` flag to list any architectures, modules, or archives for Qt 6 and above.
|
||||
These flags are no longer necessary, so please do not use them.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ aqt list-qt windows android # Print Qt versions available
|
||||
5.9.0 5.9.1 ...
|
||||
...
|
||||
6.2.0
|
||||
6.4.0
|
||||
|
||||
$ aqt list-qt windows android --arch 5.15.2 # Print architectures available
|
||||
android
|
||||
$ aqt list-qt windows android --arch 6.2.4 # Print architectures available
|
||||
android_x86_64 android_armv7 android_x86 android_arm64_v8a
|
||||
|
||||
$ aqt list-qt windows android --modules 5.15.2 android # Print modules available
|
||||
qtcharts qtdatavis3d qtlottie qtnetworkauth qtpurchasing qtquick3d qtquicktimeline qtscript
|
||||
$ aqt list-qt windows android --modules 6.2.4 android_armv7 # Print modules available
|
||||
qt3d qt5compat qtcharts qtconnectivity qtdatavis3d ...
|
||||
|
||||
$ aqt install-qt windows android 5.15.2 android -m qtcharts qtnetworkauth # Install
|
||||
$ aqt install-qt windows android 6.2.4 android_armv7 -m qtcharts qtnetworkauth # Install
|
||||
|
||||
Let's see what happens when we try to list architectures and modules for Qt 6:
|
||||
Please note that when you install Qt6 for android or ios, the installation will not
|
||||
be functional unless you install the corresponding desktop version of Qt alongside it.
|
||||
You can do this automatically with the ``--autodesktop`` flag:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ aqt list-qt windows android --arch 6.2.0 # Print architectures available
|
||||
Command line input error: Qt 6 for Android requires one of the following extensions:
|
||||
('x86_64', 'x86', 'armv7', 'arm64_v8a').
|
||||
Please add your extension using the `--extension` flag.
|
||||
|
||||
$ aqt list-qt windows android --modules 6.2.0 android_armv7 # Print modules available
|
||||
Command line input error: Qt 6 for Android requires one of the following extensions:
|
||||
('x86_64', 'x86', 'armv7', 'arm64_v8a').
|
||||
Please add your extension using the `--extension` flag.
|
||||
|
||||
The Qt 6 for Android repositories are a little different than the Qt 5 repositories,
|
||||
and the :ref:`aqt list-qt <list-qt command>` tool doesn't know where to look for modules and architectures
|
||||
if you don't tell it what architecture you need. I know, it sounds a little
|
||||
backwards, but that's how the Qt repo was put together.
|
||||
|
||||
There are four architectures available, and the error message from :ref:`aqt list-qt <list-qt command>`
|
||||
just told us what they are: `x86_64`, `x86`, `armv7`, and `arm64_v8a`.
|
||||
|
||||
We know we want to use `armv7` for the architecture, but we don't know exactly
|
||||
what value for 'architecture' we need to pass to :ref:`aqt install-qt <qt installation command>`
|
||||
yet, so we will use :ref:`aqt list-qt <list-qt command>` again:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ aqt list-qt windows android --extension armv7 --arch 6.2.0
|
||||
android_armv7
|
||||
|
||||
You should be thinking, "Well, that was silly. All it did was add `android_` to
|
||||
the beginning of the architecture I gave it. Why do I need to use
|
||||
``aqt list-qt --arch`` for that?" The answer is, ``aqt list-qt --arch`` is
|
||||
checking to see what actually exists in the Qt repository. If it prints an error
|
||||
message, instead of the obvious `android_armv7`, we would know that Qt 6.2.0
|
||||
for that architecture doesn't exist for some reason, and any attempt to install
|
||||
it with :ref:`aqt install-qt <qt installation command>` will fail.
|
||||
|
||||
If we want to install Qt 6.2.0 for armv7, we use this command to print available modules:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ aqt list-qt windows android --extension armv7 --modules 6.2.0 android_armv7
|
||||
qt3d qt5compat qtcharts qtconnectivity qtdatavis3d qtimageformats qtlottie
|
||||
qtmultimedia qtnetworkauth qtpositioning qtquick3d qtquicktimeline
|
||||
qtremoteobjects qtscxml qtsensors qtserialbus qtserialport qtshadertools
|
||||
qtvirtualkeyboard qtwebchannel qtwebsockets qtwebview
|
||||
|
||||
Finally, let's install Qt 6.2.0 for Android armv7 with the ``qtcharts`` and
|
||||
``qtnetworkauth`` modules:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ aqt install-qt linux android 6.2.0 android_armv7 -m qtcharts qtnetworkauth
|
||||
|
||||
$ aqt install-qt linux android 6.2.4 android_armv7 -m qtcharts qtnetworkauth --autodesktop
|
||||
|
||||
Installing Qt for WASM
|
||||
----------------------
|
||||
|
||||
To find out how to install Qt for WASM, we need to tell :ref:`aqt list-qt <list-qt command>` that we are
|
||||
using the `wasm` architecture. We can do that by using the ``--extension wasm`` flag.
|
||||
To find out how to install Qt for WASM, we will need to use the ``wasm_32`` architecture.
|
||||
We can find out whether or not that architecture is available for our version of Qt with the
|
||||
``--arch`` flag.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ aqt list-qt windows desktop --extension wasm
|
||||
5.13.1 5.13.2
|
||||
5.14.0 5.14.1 5.14.2
|
||||
5.15.0 5.15.1 5.15.2
|
||||
$ python -m aqt list-qt windows desktop --arch 6.1.3
|
||||
win64_mingw81 win64_msvc2019_64
|
||||
$ python -m aqt list-qt windows desktop --arch 6.2.0
|
||||
win64_mingw81 win64_msvc2019_64 win64_msvc2019_arm64 wasm_32
|
||||
|
||||
There are only a few versions of Qt that support WASM, and they are only available
|
||||
for desktop targets. If we tried this command with `android`, `winrt`, or `ios`
|
||||
targets, we would have seen an error message.
|
||||
Not every version of Qt supports WASM. This command shows us that we cannot use WASM with Qt 6.1.3.
|
||||
|
||||
We can check the architecture and modules available as before:
|
||||
Please note that the WASM architecture for Qt 6.5.0+ changed from ``wasm_32`` to ``wasm_singlethread`` and
|
||||
``wasm_multithread``. Always use ``aqt list-qt`` to check what architectures are available for the desired version of Qt.
|
||||
|
||||
We can check the modules available as before:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ aqt list-qt windows desktop --extension wasm --arch 5.15.2 # available architectures
|
||||
wasm_32
|
||||
|
||||
$ aqt list-qt windows desktop --extension wasm --modules 5.15.2 wasm_32 # available modules
|
||||
$ aqt list-qt windows desktop --modules 5.15.2 wasm_32 # available modules
|
||||
qtcharts qtdatavis3d qtlottie qtnetworkauth qtpurchasing qtquicktimeline qtscript
|
||||
qtvirtualkeyboard qtwebglplugin
|
||||
|
||||
@@ -331,6 +308,14 @@ We can install Qt for WASM as before:
|
||||
|
||||
$ aqt install-qt windows desktop 5.15.2 wasm_32 -m qtcharts qtnetworkauth
|
||||
|
||||
Please note that when you install Qt for WASM version 6 and above, the installation will not
|
||||
be functional unless you install a non-WASM desktop version of Qt alongside it.
|
||||
You can do this automatically with the ``--autodesktop`` flag:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ aqt install-qt linux desktop 6.2.0 wasm_32 -m qtcharts qtnetworkauth --autodesktop
|
||||
|
||||
|
||||
Installing Tools
|
||||
----------------
|
||||
@@ -350,11 +335,12 @@ Let's find out what tools are available for Windows Desktop by using the
|
||||
tools_openssl_src
|
||||
tools_ninja
|
||||
tools_mingw
|
||||
tools_mingw90
|
||||
tools_ifw
|
||||
tools_conan
|
||||
tools_cmake
|
||||
|
||||
Let's see what tool variants are available in `tools_mingw`:
|
||||
Let's see what tool variants are available in ``tools_mingw``:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
@@ -392,31 +378,55 @@ Let's see some more details, using the ``-l`` or ``--long`` flag:
|
||||
qt.tools.win64_mingw810 8.1.0-1-202004170606 2020-04-17
|
||||
|
||||
The ``-l`` flag causes :ref:`aqt list-tool <list-tool command>` to print a table
|
||||
that shows plenty of data pertinent to each tool variant available in `tools_mingw`.
|
||||
that shows plenty of data pertinent to each tool variant available in ``tools_mingw``.
|
||||
:ref:`aqt list-tool <list-tool command>` additionally prints the 'Display Name'
|
||||
and 'Description' for each tool if your terminal is wider than 95 characters;
|
||||
terminals that are narrower than this cannot display this table in a readable way.
|
||||
|
||||
Now let's install `mingw`, using the :ref:`aqt install-tool <tools installation command>` command.
|
||||
Please be aware that the tool ``tools_mingw90`` appears to be mislabelled:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ aqt list-tool windows desktop tools_mingw90 -l
|
||||
|
||||
Tool Variant Name Version Release Date
|
||||
=============================================================
|
||||
qt.tools.win64_mingw900 9.0.0-1-202203221220 2022-03-22
|
||||
|
||||
$ aqt list-tool windows desktop tools_mingw90 -l
|
||||
|
||||
Tool Variant Name Version Release Date Display Name Description
|
||||
============================================================================================================
|
||||
qt.tools.win64_mingw900 9.0.0-1-202203221220 2022-03-22 MinGW 11.2.0 64-bit MinGW-builds 11.2.0
|
||||
64-bit toolchain with
|
||||
gcc 11.2.0
|
||||
|
||||
The 'narrow display' for ``tools_mingw90`` cuts off the two columns of the table that
|
||||
show you what's really in that package: ``MinGW 11.2.0 64-bit``.
|
||||
If you are using the ``win64_mingw`` architecture for Qt 6.2.2+, then this is
|
||||
probably the compiler you want to install (see `long_modules explanation`_).
|
||||
|
||||
|
||||
Now let's install ``mingw``, using the :ref:`aqt install-tool <tools installation command>` command.
|
||||
This command receives four parameters:
|
||||
|
||||
1. The host operating system (windows, mac, or linux)
|
||||
2. The target SDK (desktop, android, ios, or winrt)
|
||||
3. The name of the tool (this is `tools_mingw` in our case)
|
||||
3. The name of the tool (this is ``tools_mingw`` in our case)
|
||||
4. (Optional) The tool variant name. We saw a list of these when we ran
|
||||
:ref:`aqt list-tool <list-tool command>` with the `tool name` argument filled in.
|
||||
:ref:`aqt list-tool <list-tool command>` with the ``tool name`` argument filled in.
|
||||
|
||||
To install `mingw`, you could use this command (please don't):
|
||||
To install ``mingw``, you could use this command (please don't):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ aqt install-tool windows desktop tools_mingw # please don't run this!
|
||||
|
||||
Using this command will install every tool variant available in `tools_mingw`;
|
||||
Using this command will install every tool variant available in ``tools_mingw``;
|
||||
in this case, you would install 10 different versions of the same tool.
|
||||
For some tools, like `qtcreator` or `ifw`, this is an appropriate thing to do,
|
||||
For some tools, like ``qtcreator`` or ``ifw``, this is an appropriate thing to do,
|
||||
since each tool variant is a different program.
|
||||
However, for tools like `mingw` and `vcredist`, it would make more sense to use
|
||||
However, for tools like ``mingw`` and ``vcredist``, it would make more sense to use
|
||||
:ref:`aqt list-tool <list-tool command>` to see what tool variants are available,
|
||||
and then install just the tool variant you are interested in, like this:
|
||||
|
||||
@@ -446,7 +456,7 @@ reduce the footprint of your Qt installation.
|
||||
|
||||
.. note::
|
||||
|
||||
Be careful about using the ``--archives`` flag; it is marked `Advanced` for a reason!
|
||||
Be careful about using the ``--archives`` flag; it is marked ``Advanced`` for a reason!
|
||||
It is very easy to misuse this command and end up with a Qt installation that
|
||||
is missing the components that you need.
|
||||
Don't use it unless you know what you are doing!
|
||||
|
||||
@@ -14,7 +14,8 @@ Contents:
|
||||
CODE_OF_CONDUCT
|
||||
SECURITY
|
||||
authors
|
||||
changes
|
||||
CHANGELOG
|
||||
previous_changes
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
@@ -8,16 +8,15 @@ Installation
|
||||
Requirements
|
||||
------------
|
||||
|
||||
- Minimum Python version: 3.6
|
||||
- Recommended Python version: 3.7.5 or later
|
||||
- Minimum Python version: 3.7.5
|
||||
|
||||
- Dependent libraries: requests, py7zr, semantic_version, patch, texttable, bs4
|
||||
- Dependencies: requests, py7zr, semantic_version, patch, texttable, bs4, defusedxml, humanize
|
||||
|
||||
|
||||
Install by pip command
|
||||
----------------------
|
||||
|
||||
Same as usual, it can be installed with `pip`
|
||||
Same as usual, it can be installed with ``pip``
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
|
||||
270
docs/locale/ja/LC_MESSAGES/CODE_OF_CONDUCT.po
Normal file
270
docs/locale/ja/LC_MESSAGES/CODE_OF_CONDUCT.po
Normal file
@@ -0,0 +1,270 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:3
|
||||
msgid "Contributor Covenant Code of Conduct"
|
||||
msgstr "Contributor Covenant Code of Conduct"
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:6
|
||||
msgid "Our Pledge"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:8
|
||||
msgid ""
|
||||
"We as members, contributors, and leaders pledge to make participation in "
|
||||
"our community a harassment-free experience for everyone, regardless of "
|
||||
"age, body size, visible or invisible disability, ethnicity, sex "
|
||||
"characteristics, gender identity and expression, level of experience, "
|
||||
"education, socio-economic status, nationality, personal appearance, race,"
|
||||
" religion, or sexual identity and orientation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:15
|
||||
msgid ""
|
||||
"We pledge to act and interact in ways that contribute to an open, "
|
||||
"welcoming, diverse, inclusive, and healthy community."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:19
|
||||
msgid "Our Standards"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:21
|
||||
msgid ""
|
||||
"Examples of behavior that contributes to a positive environment for our "
|
||||
"community include:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:24
|
||||
msgid "Demonstrating empathy and kindness toward other people"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:25
|
||||
msgid "Being respectful of differing opinions, viewpoints, and experiences"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:26
|
||||
msgid "Giving and gracefully accepting constructive feedback"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:27
|
||||
msgid ""
|
||||
"Accepting responsibility and apologizing to those affected by our "
|
||||
"mistakes, and learning from the experience"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:29
|
||||
msgid ""
|
||||
"Focusing on what is best not just for us as individuals, but for the "
|
||||
"overall community"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:32
|
||||
msgid "Examples of unacceptable behavior include:"
|
||||
msgstr "Examples of unacceptable behavior include:"
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:34
|
||||
msgid ""
|
||||
"The use of sexualized language or imagery, and sexual attention or "
|
||||
"advances of any kind"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:36
|
||||
msgid ""
|
||||
"Trolling, insulting or derogatory comments, and personal or political "
|
||||
"attacks"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:37
|
||||
msgid "Public or private harassment"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:38
|
||||
msgid ""
|
||||
"Publishing others' private information, such as a physical or email "
|
||||
"address, without their explicit permission"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:40
|
||||
msgid ""
|
||||
"Other conduct which could reasonably be considered inappropriate in a "
|
||||
"professional setting"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:44
|
||||
msgid "Enforcement Responsibilities"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:46
|
||||
msgid ""
|
||||
"Community leaders are responsible for clarifying and enforcing our "
|
||||
"standards of acceptable behavior and will take appropriate and fair "
|
||||
"corrective action in response to any behavior that they deem "
|
||||
"inappropriate, threatening, offensive, or harmful."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:51
|
||||
msgid ""
|
||||
"Community leaders have the right and responsibility to remove, edit, or "
|
||||
"reject comments, commits, code, wiki edits, issues, and other "
|
||||
"contributions that are not aligned to this Code of Conduct, and will "
|
||||
"communicate reasons for moderation decisions when appropriate."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:57
|
||||
msgid "Scope"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:59
|
||||
msgid ""
|
||||
"This Code of Conduct applies within all community spaces, and also "
|
||||
"applies when an individual is officially representing the community in "
|
||||
"public spaces. Examples of representing our community include using an "
|
||||
"official e-mail address, posting via an official social media account, or"
|
||||
" acting as an appointed representative at an online or offline event."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:66
|
||||
msgid "Enforcement"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:68
|
||||
msgid ""
|
||||
"Instances of abusive, harassing, or otherwise unacceptable behavior may "
|
||||
"be reported to the community leaders responsible for enforcement at "
|
||||
"Hiroshi Miura <miurahr@linux.com>. All complaints will be reviewed and "
|
||||
"investigated promptly and fairly."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:73
|
||||
msgid ""
|
||||
"All community leaders are obligated to respect the privacy and security "
|
||||
"of the reporter of any incident."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:77
|
||||
msgid "Enforcement Guidelines"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:79
|
||||
msgid ""
|
||||
"Community leaders will follow these Community Impact Guidelines in "
|
||||
"determining the consequences for any action they deem in violation of "
|
||||
"this Code of Conduct:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:83
|
||||
msgid "Phase 1. Correction"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:87 ../../CODE_OF_CONDUCT.rst:98
|
||||
#: ../../CODE_OF_CONDUCT.rst:112 ../../CODE_OF_CONDUCT.rst:127
|
||||
msgid "**Community Impact**:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:86
|
||||
msgid ""
|
||||
"Use of inappropriate language or other behavior deemed unprofessional or "
|
||||
"unwelcome in the community."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:92 ../../CODE_OF_CONDUCT.rst:106
|
||||
#: ../../CODE_OF_CONDUCT.rst:119 ../../CODE_OF_CONDUCT.rst:131
|
||||
msgid "**Consequence**:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:90
|
||||
msgid ""
|
||||
"A private, written warning from community leaders, providing clarity "
|
||||
"around the nature of the violation and an explanation of why the behavior"
|
||||
" was inappropriate. A public apology may be requested."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:95
|
||||
msgid "Phase 2. Warning"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:98
|
||||
msgid "A violation through a single incident or series of actions."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:101
|
||||
msgid ""
|
||||
"A warning with consequences for continued behavior. No interaction with "
|
||||
"the people involved, including unsolicited interaction with those "
|
||||
"enforcing the Code of Conduct, for a specified period of time. This "
|
||||
"includes avoiding interactions in community spaces as well as external "
|
||||
"channels like social media. Violating these terms may lead to a temporary"
|
||||
" or permanent ban."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:109
|
||||
msgid "Phase 3. Temporary Ban"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:112
|
||||
msgid ""
|
||||
"A serious violation of community standards, including sustained "
|
||||
"inappropriate behavior."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:115
|
||||
msgid ""
|
||||
"A temporary ban from any sort of interaction or public communication with"
|
||||
" the community for a specified period of time. No public or private "
|
||||
"interaction with the people involved, including unsolicited interaction "
|
||||
"with those enforcing the Code of Conduct, is allowed during this period. "
|
||||
"Violating these terms may lead to a permanent ban."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:122
|
||||
msgid "Phase 4. Permanent Ban"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:125
|
||||
msgid ""
|
||||
"Demonstrating a pattern of violation of community standards, including "
|
||||
"sustained inappropriate behavior, harassment of an individual, or "
|
||||
"aggression toward or disparagement of classes of individuals."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:130
|
||||
msgid "A permanent ban from any sort of public interaction within the community."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:134
|
||||
msgid "Attribution"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:136
|
||||
msgid ""
|
||||
"This Code of Conduct is adapted from the `Contributor Covenant`_ version "
|
||||
"2.0. You can take it from Contributor Covenant `homepage`_."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:139
|
||||
msgid ""
|
||||
"Community Impact Guidelines were inspired by `Mozilla's code of conduct "
|
||||
"enforcement ladder`_."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:141
|
||||
msgid ""
|
||||
"For answers to common questions about this code of conduct, see the "
|
||||
"`FAQ`_ or its translations_."
|
||||
msgstr ""
|
||||
|
||||
90
docs/locale/ja/LC_MESSAGES/CONTRIBUTE.po
Normal file
90
docs/locale/ja/LC_MESSAGES/CONTRIBUTE.po
Normal file
@@ -0,0 +1,90 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: ../../CONTRIBUTE.rst:3
|
||||
msgid "Contribution guide"
|
||||
msgstr "コントリビューションガイド"
|
||||
|
||||
#: ../../CONTRIBUTE.rst:5
|
||||
msgid ""
|
||||
"This is contribution guide for aqtinstall project. You are welcome to "
|
||||
"send a Pull-Request, reporting bugs and ask questions."
|
||||
msgstr "aqtinstallプロジェクトへの貢献ガイドです。Pull-Requestを送信してバグを報告し、質問をすることを歓迎します。"
|
||||
|
||||
#: ../../CONTRIBUTE.rst:9
|
||||
msgid "Resources"
|
||||
msgstr "リソース"
|
||||
|
||||
#: ../../CONTRIBUTE.rst:11
|
||||
msgid "Project owner: Hiroshi Miura"
|
||||
msgstr "プロジェクトオーナー:三浦広志"
|
||||
|
||||
#: ../../CONTRIBUTE.rst:12
|
||||
msgid "Bug Tracker: Github issue `Tracker`_"
|
||||
msgstr "バグトラッカー: Github issue `Tracker`_"
|
||||
|
||||
#: ../../CONTRIBUTE.rst:13
|
||||
msgid "Status: Beta"
|
||||
msgstr "ステータス:ベータ"
|
||||
|
||||
#: ../../CONTRIBUTE.rst:14
|
||||
msgid "Activity: moderate"
|
||||
msgstr "活動度:中等度"
|
||||
|
||||
#: ../../CONTRIBUTE.rst:19
|
||||
msgid "Bug triage"
|
||||
msgstr "バグ・トリアージ"
|
||||
|
||||
#: ../../CONTRIBUTE.rst:21
|
||||
msgid ""
|
||||
"Every report to github issue tracker should be in triage. whether it is "
|
||||
"bug, question or invalid."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CONTRIBUTE.rst:26
|
||||
msgid "Send patch"
|
||||
msgstr "パッチを送信"
|
||||
|
||||
#: ../../CONTRIBUTE.rst:28
|
||||
msgid "Here is small amount rule when you want to send patch the project;"
|
||||
msgstr "プロジェクトにパッチを送りたい場合の少量のルールを以下に示します。"
|
||||
|
||||
#: ../../CONTRIBUTE.rst:30
|
||||
msgid "every proposal for modification should send as 'Pull Request'"
|
||||
msgstr "修正案はすべて「プルリクエスト」として送信する必要があります。"
|
||||
|
||||
#: ../../CONTRIBUTE.rst:32
|
||||
msgid "each pull request can consist of multiple commits."
|
||||
msgstr "各プルリクエストは複数のコミットで構成されます。"
|
||||
|
||||
#: ../../CONTRIBUTE.rst:34
|
||||
msgid ""
|
||||
"you are encourage to split modifications to individual commits that are "
|
||||
"logical subpart."
|
||||
msgstr "変更を論理的なサブパートである個々のコミットに分割することをお勧めします。"
|
||||
|
||||
#: ../../CONTRIBUTE.rst:37
|
||||
msgid "CI tests"
|
||||
msgstr "CIテスト"
|
||||
|
||||
#: ../../CONTRIBUTE.rst:39
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr "プロジェクトは、Azure Pipelines、Githubアクション、Coverallsを使用してリグレッションテストを行うように設定されています。テスト結果はバッジで確認でき、詳細はバッジからリンクされたWebページで確認できます。"
|
||||
|
||||
65
docs/locale/ja/LC_MESSAGES/SECURITY.po
Normal file
65
docs/locale/ja/LC_MESSAGES/SECURITY.po
Normal file
@@ -0,0 +1,65 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: ../../SECURITY.rst:2
|
||||
msgid "Security Policy"
|
||||
msgstr "セキュリティポリシー"
|
||||
|
||||
#: ../../SECURITY.rst:5
|
||||
msgid "Supported Versions"
|
||||
msgstr "サポートされているバージョン"
|
||||
|
||||
#: ../../SECURITY.rst:8
|
||||
msgid "Version"
|
||||
msgstr "バージョン"
|
||||
|
||||
#: ../../SECURITY.rst:8
|
||||
msgid "Status"
|
||||
msgstr "ステータス"
|
||||
|
||||
#: ../../SECURITY.rst:10
|
||||
msgid "3.0.x"
|
||||
msgstr "3.0.x"
|
||||
|
||||
#: ../../SECURITY.rst:10
|
||||
msgid "Stable version"
|
||||
msgstr "安定バージョン"
|
||||
|
||||
#: ../../SECURITY.rst:12
|
||||
msgid "2.2.x"
|
||||
msgstr "2.2.x"
|
||||
|
||||
#: ../../SECURITY.rst:12
|
||||
msgid "Security fixes only"
|
||||
msgstr "セキュリティ修正のみ"
|
||||
|
||||
#: ../../SECURITY.rst:14
|
||||
msgid "< 2.2"
|
||||
msgstr "< 2.2"
|
||||
|
||||
#: ../../SECURITY.rst:14
|
||||
msgid "not supported"
|
||||
msgstr "サポートされない"
|
||||
|
||||
#: ../../SECURITY.rst:18
|
||||
msgid "Reporting a Vulnerability"
|
||||
msgstr "脆弱性の報告"
|
||||
|
||||
#: ../../SECURITY.rst:20
|
||||
msgid "Please disclose security vulnerabilities privately at miurahr@linux.com"
|
||||
msgstr "セキュリティの脆弱性については、miurahr@linux.com に提示してください。"
|
||||
|
||||
152
docs/locale/ja/LC_MESSAGES/authors.po
Normal file
152
docs/locale/ja/LC_MESSAGES/authors.po
Normal file
@@ -0,0 +1,152 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: ../../authors.rst:6
|
||||
msgid "Authors"
|
||||
msgstr "作者"
|
||||
|
||||
#: ../../authors.rst:8
|
||||
msgid "Aqtinstall is written and maintained by Hiroshi Miura <miurahr@linux.com>"
|
||||
msgstr "Aqtinstallは、三浦広志 <miurahr@linux.com> 氏により作成され、管理されています。"
|
||||
|
||||
#: ../../authors.rst:10
|
||||
msgid "Original qli-installer is written by Linus Jahn"
|
||||
msgstr "オリジナルのqli-installerはLinus Jahn氏によって書かれました。"
|
||||
|
||||
#: ../../authors.rst:12
|
||||
msgid ""
|
||||
"Significant contributions for improvements of version 2.0 and 2.1 by "
|
||||
"David Dalcino David also leads many developments and reviews effort after"
|
||||
" 2.0."
|
||||
msgstr "David Dalcinoによるバージョン2.0と2.1の改善への重要な貢献がありました。バージョン2.0以降の多くの開発とレビューの取り組みも主導しています。"
|
||||
|
||||
#: ../../authors.rst:15
|
||||
msgid "All contributors, listed alphabetically, are:"
|
||||
msgstr "すべてのコントリビュータ(アルファベット順)は次のとおりです。"
|
||||
|
||||
#: ../../authors.rst:17
|
||||
msgid "Andrei Yankovich (tools ifw installation)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:18
|
||||
msgid "Aurélien Gâteau (patching to qmake)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:19
|
||||
msgid "Benjamin O (Github Actions and more)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:20
|
||||
msgid "Christian Hoffmann (Update mirror list)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:21
|
||||
msgid ""
|
||||
"David Dalcino (Many improvements on CI automations, commands, tests, "
|
||||
"documents and so on)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:22
|
||||
msgid "Doronin Stanislav (document)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:23
|
||||
msgid "Fabrice Le Bars (32bit binary)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:24
|
||||
msgid "Felix Barz (Android, Explicit extra module installation)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:25
|
||||
msgid "Gamso (improve parsing of update.xml)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:26
|
||||
msgid "Julien Marrec (mypy, type hints)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:27
|
||||
msgid "Kyle Altendorf (7z binary path search)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:28
|
||||
msgid "lightmare (Documents)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:29
|
||||
msgid "Mike Tzou (Update fallback url)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:30
|
||||
msgid "Martin Delille (Documents)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:31
|
||||
msgid "mite-user (folder index handling of download web sites)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:32
|
||||
msgid "Mizux Seihax (Qt versions)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:33
|
||||
msgid "Mozi (CI/workflow improvement, log format)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:34
|
||||
msgid "Nelson Chen (CI tests)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:35
|
||||
msgid "@nikitalita (Binary distribution)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:36
|
||||
msgid "@pylipp (Documents)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:37
|
||||
msgid "Sztergbaum Roman (Version database)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:38
|
||||
msgid "Thomas Grainger (CLI entry point)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:39
|
||||
msgid "@tsteven4 (fix patching to qmake, pkgconfig and libtool)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:40
|
||||
msgid "Vadim Peretokin (Version database)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:41
|
||||
msgid "Vladyslav Hnatiuk (Version database)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:42
|
||||
msgid "@ypnos (Documents)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:44
|
||||
msgid ""
|
||||
"and many other participants and contributors. If you find a missing name "
|
||||
"to record, please feel free to tell me."
|
||||
msgstr "他にも多くの参加者や貢献者がいます。記録に名前がない方は、遠慮なく言ってください。"
|
||||
|
||||
1736
docs/locale/ja/LC_MESSAGES/changes.po
Normal file
1736
docs/locale/ja/LC_MESSAGES/changes.po
Normal file
File diff suppressed because it is too large
Load Diff
764
docs/locale/ja/LC_MESSAGES/cli.po
Normal file
764
docs/locale/ja/LC_MESSAGES/cli.po
Normal file
@@ -0,0 +1,764 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: ../../cli.rst:4
|
||||
msgid "Command Line Options"
|
||||
msgstr "コマンドラインオプション"
|
||||
|
||||
#: ../../cli.rst:6
|
||||
msgid ""
|
||||
"The CLI uses argparse to parse the command line options so the short or "
|
||||
"long versions may be used and the long options may be truncated to the "
|
||||
"shortest unambiguous abbreviation."
|
||||
msgstr "コマンドラインのインタフェースは、argparseライブラリを使用してコマンドラインのオプションを解析します。そのため、オプションに、短いバージョンや長いバージョンが使用できるます。長いオプションは最も短い明確な省略形も提供ます。"
|
||||
|
||||
#: ../../cli.rst:10
|
||||
msgid "Generic commands"
|
||||
msgstr "一般的なコマンド"
|
||||
|
||||
#: ../../cli.rst:18
|
||||
msgid "show generic help"
|
||||
msgstr "汎用ヘルプの表示"
|
||||
|
||||
#: ../../cli.rst:26
|
||||
msgid "display version"
|
||||
msgstr "バージョンの表示"
|
||||
|
||||
#: ../../cli.rst:30
|
||||
msgid "List-* Commands"
|
||||
msgstr "List-*コマンド"
|
||||
|
||||
#: ../../cli.rst:32
|
||||
msgid ""
|
||||
"These commands are used to list the packages available for installation "
|
||||
"with ``aqt``."
|
||||
msgstr "このコマンドは、``aqt`でインストールできるパッケージを一覧表示するために使用します。"
|
||||
|
||||
#: ../../cli.rst:37
|
||||
msgid "list-qt command"
|
||||
msgstr "list-qtコマンド"
|
||||
|
||||
#: ../../cli.rst:55
|
||||
msgid ""
|
||||
"List available versions of Qt, targets, extensions, modules, and "
|
||||
"architectures."
|
||||
msgstr "Qtの利用可能なバージョン、ターゲット、拡張、モジュール、アーキテクチャを表示します。"
|
||||
|
||||
#: ../../cli.rst:59 ../../cli.rst:197 ../../cli.rst:237 ../../cli.rst:282
|
||||
#: ../../cli.rst:320 ../../cli.rst:605 ../../cli.rst:665 ../../cli.rst:719
|
||||
#: ../../cli.rst:771
|
||||
msgid "linux, windows or mac"
|
||||
msgstr "linux、windows、またはmac"
|
||||
|
||||
#: ../../cli.rst:63 ../../cli.rst:324
|
||||
msgid ""
|
||||
"desktop, winrt, ios or android. When omitted, the command prints all the "
|
||||
"targets available for a host OS. Note that winrt is only available on "
|
||||
"Windows, and ios is only available on Mac OS."
|
||||
msgstr "desktop、winrt、iosまたはandroid。省略すると、ホストOSで使用可能なすべてのターゲットが出力されます。winrtはWindowsでしか使用できず、iosはMac OSでしか使用できません。"
|
||||
|
||||
#: ../../cli.rst:69 ../../cli.rst:338 ../../cli.rst:376
|
||||
msgid "Display help text"
|
||||
msgstr "ヘルプテキストを表示する"
|
||||
|
||||
#: ../../cli.rst:73
|
||||
msgid ""
|
||||
"Extension of packages to list "
|
||||
"{wasm,src_doc_examples,preview,wasm_preview,x86_64,x86,armv7,arm64_v8a}"
|
||||
msgstr "リスト表示するパッケージ拡張{wasm,src_doc_examples,preview,wasm_preview,x86_64,x86,armv7,arm64_v8a}"
|
||||
|
||||
#: ../../cli.rst:76
|
||||
msgid ""
|
||||
"Use the ``--extensions`` flag to list all relevant options for a "
|
||||
"host/target. Incompatible with the ``--extensions`` flag, but may be "
|
||||
"combined with any other flag."
|
||||
msgstr "ホスト/ターゲットに関連するすべてのオプションをリストするには、`--extensions``フラグを使用してください。`--extensions``フラグとは互換性がありませんが、他のフラグと組み合わせることができます。"
|
||||
|
||||
#: ../../cli.rst:81
|
||||
msgid ""
|
||||
"Qt version in the format of \"5.X.Y\", or the keyword ``latest``. When "
|
||||
"set, this prints all valid arguments for the ``--extension`` flag for Qt "
|
||||
"5.X.Y, or the latest version of Qt if ``latest`` is specified. "
|
||||
"Incompatible with the ``--extension`` flag."
|
||||
msgstr "\"5.X.Y\"形式のQtバージョン、またはキーワード``latest``。これを設定すると、Qt 5.X.Yの ``--extension`` フラグの有効な引数をすべて出力します。または、``latest``が指定されている場合はQtの最新バージョンを出力します。`--extension`フラグとは互換性がありません。"
|
||||
|
||||
#: ../../cli.rst:88
|
||||
msgid ""
|
||||
"Print versions of Qt within a `SimpleSpec`_ that specifies a range of "
|
||||
"versions. You can specify partial versions, inequalities, etc. ``\"*\"`` "
|
||||
"would match all versions of Qt; ``\">6.0.2,<6.2.0\"`` would match all "
|
||||
"versions of Qt between 6.0.2 and 6.2.0, etc. For example, ``aqt list-qt "
|
||||
"windows desktop --spec \"5.12\"`` would print all versions of Qt for "
|
||||
"Windows Desktop beginning with 5.12. May be combined with any other flag "
|
||||
"to filter the output of that flag."
|
||||
msgstr "バージョンの範囲を指定する `SimpleSpec`_ 内のQtのバージョンを表示します。部分的なバージョンや不等式などを指定できます。``\"*\"`` はQtのすべてのバージョンにマッチし、``\">6.0.2,<6.2.0\"`` は6.0.2から6.2.0までのQtのすべてのバージョンにマッチします。例えば、``aqt list-qt windows desktop --spec \"5.12\"`` と入力すると、5.12から始まるWindows デスクトップ用のQtのすべてのバージョンが出力されます。他のフラグと組み合わせて、そのフラグの出力をフィルタリングすることができます。"
|
||||
|
||||
#: ../../cli.rst:101
|
||||
msgid ""
|
||||
"This flag lists all the modules available for Qt 5.X.Y with a "
|
||||
"host/target/extension/architecture combination, or the latest version of "
|
||||
"Qt if ``latest`` is specified. You can list available architectures by "
|
||||
"using ``aqt list-qt`` with the ``--arch`` flag described below."
|
||||
msgstr "このフラグは、Qt 5.X.Yで利用可能なすべてのモジュールをホスト/ターゲット/拡張/アーキテクチャの組み合わせで一覧表示します。``latest`` が指定されている場合はQtの最新バージョンを表示します。利用可能なアーキテクチャを一覧表示するには、以下で説明する ``--arch`` フラグを付けて ``aqt list-qt`` を使用します。"
|
||||
|
||||
#: ../../cli.rst:108
|
||||
msgid ""
|
||||
"Long display for modules: Similar to ``--modules``, but shows extra "
|
||||
"metadata associated with each module. This metadata is displayed in a "
|
||||
"table that includes long display names for each module. If your terminal "
|
||||
"is wider than 95 characters, ``aqt list-qt`` will also display release "
|
||||
"dates and sizes for each module. An example of this output is displayed "
|
||||
"below."
|
||||
msgstr "モジュールの長い表示: ``--modules`` と似ていますが、各モジュールに関連付けられた追加のメタデータを表示します。このメタデータは、各モジュールの長い表示名を含む表に表示されます。端末の表示幅が95文字を超える場合、``aqt list-qt`` には各モジュールのリリース日とサイズも表示されます。この出力例を以下に示します。"
|
||||
|
||||
#: ../../cli.rst:151
|
||||
msgid ""
|
||||
"Qt version in the format of \"5.X.Y\". When set, this prints all "
|
||||
"architectures available for Qt 5.X.Y with a host/target/extension, or the"
|
||||
" latest version of Qt if ``latest`` is specified."
|
||||
msgstr "Qt version in the format of \"5.X.Y\". 設定すると、ホスト/ターゲット/拡張機能を持つQt 5.X.Yで利用可能なすべてのアーキテクチャを出力します。``latest`` が指定されている場合は、最新バージョンのQtを出力します。"
|
||||
|
||||
#: ../../cli.rst:158
|
||||
msgid ""
|
||||
"This flag requires a list of at least two arguments: 'Qt version' and "
|
||||
"'architecture'. The 'Qt version' argument can be in the format \"5.X.Y\" "
|
||||
"or the \"latest\" keyword. You can use the ``--arch`` flag to see a list "
|
||||
"of acceptable values for the 'architecture' argument. Any following "
|
||||
"arguments must be the names of modules available for the preceding "
|
||||
"version and architecture. You can use the ``--modules`` flag to see a "
|
||||
"list of acceptable values."
|
||||
msgstr "このフラグには、'Qt version'と'architecture'の2つ以上の引数のリストが必要です。'Qt version'引数は、\"5.X.Y\"または\"latest\"キーワードの形式にすることができます。'architecture' 引数に指定できる値のリストを見るには、``--arch`` フラグを使用します。後続の引数は、以前のバージョンとアーキテクチャーで使用できるモジュールの名前である必要があります。受け入れ可能な値のリストを見るために、``--modules`` フラグを使うことができます。"
|
||||
|
||||
#: ../../cli.rst:164
|
||||
msgid ""
|
||||
"If you do not add a list of modules to this flag, this command will print"
|
||||
" a list of all the archives that make up the base Qt installation."
|
||||
msgstr "このフラグにモジュールのリストを追加しない場合、このコマンドは基本Qtインストールを構成するすべてのアーカイブのリストを出力します。"
|
||||
|
||||
#: ../../cli.rst:167
|
||||
msgid ""
|
||||
"If you add a list of modules to this flag, this command will print a list"
|
||||
" of all the archives that make up the specified modules."
|
||||
msgstr "このフラグにモジュールのリストを追加すると、指定されたモジュールを構成するすべてのアーカイブのリストが出力されます。"
|
||||
|
||||
#: ../../cli.rst:170
|
||||
msgid ""
|
||||
"The purpose of this command is to show you what arguments you can pass to"
|
||||
" the :ref:`archives flag <install archives flag>` when using the "
|
||||
"``install-*`` commands. This flag allows you to avoid installing parts of"
|
||||
" Qt that you do not need."
|
||||
msgstr "このコマンドの目的は、 ``install-*`` コマンドを使うときに :ref:`archives flag <install archives flag>` に渡すことができる引数を表示することです。このフラグを使うと、Qtの不要な部分をインストールするのを避けることができます。"
|
||||
|
||||
#: ../../cli.rst:176
|
||||
msgid ""
|
||||
"Print only the newest version available May be combined with the "
|
||||
"``--extension`` and/or ``--spec`` flags."
|
||||
msgstr "入手可能な最新バージョンのみを印刷します。 ``--extension`` フラグや ``--spec`` フラグと組み合わせることができます。"
|
||||
|
||||
#: ../../cli.rst:183
|
||||
msgid "list-src command"
|
||||
msgstr "list-srcコマンド"
|
||||
|
||||
#: ../../cli.rst:193
|
||||
msgid ""
|
||||
"List source archives available for installation using the `install-src "
|
||||
"command`_."
|
||||
msgstr "`install-src command`_ を使って、インストール可能なソースアーカイブを一覧表示します。"
|
||||
|
||||
#: ../../cli.rst:201 ../../cli.rst:241 ../../cli.rst:286 ../../cli.rst:532
|
||||
#: ../../cli.rst:614 ../../cli.rst:674 ../../cli.rst:728
|
||||
msgid ""
|
||||
"This is a Qt version such as 5.9.7, 5.12.1 etc. Use the :ref:`List-Qt "
|
||||
"Command` to list available versions."
|
||||
msgstr "これは5.9.7、5.12.1などのQtバージョンです。有効なバージョンを調べるには、:ref:`List-Qt Command` を使用してください。"
|
||||
|
||||
#: ../../cli.rst:206 ../../cli.rst:246 ../../cli.rst:291 ../../cli.rst:537
|
||||
#: ../../cli.rst:619 ../../cli.rst:679 ../../cli.rst:733
|
||||
msgid ""
|
||||
"This is a `SimpleSpec`_ that specifies a range of versions. If you type "
|
||||
"something in the ``<Qt version>`` positional argument that cannot be "
|
||||
"interpreted as a version, it will be interpreted as a `SimpleSpec`_, and "
|
||||
"``aqt`` will select the highest available version within that "
|
||||
"`SimpleSpec`_."
|
||||
msgstr "これはバージョンの範囲を指定する `SimpleSpec`_ です。バージョンとして解釈できない何かを位置引数 ``<Qt version>`` に入力すると、それは `SimpleSpec`_ として解釈され、``aqt`` はその`SimpleSpec`_ 内で利用可能な最高バージョンを選択します。"
|
||||
|
||||
#: ../../cli.rst:211
|
||||
msgid ""
|
||||
"For example, ``aqt list-src mac 5.12`` would print archives for the "
|
||||
"latest version of Qt 5.12 available (5.12.11 at the time of this "
|
||||
"writing)."
|
||||
msgstr "例えば、``aqt list-src mac 5.12``は入手可能な最新バージョンのQt 5.12(この記事を書いている時点では5.12.11)のアーカイブを出力します。"
|
||||
|
||||
#: ../../cli.rst:218
|
||||
msgid "list-doc command"
|
||||
msgstr "list-docコマンド"
|
||||
|
||||
#: ../../cli.rst:229
|
||||
msgid ""
|
||||
"List documentation archives and modules available for installation using "
|
||||
"the `install-doc command`_."
|
||||
msgstr "`install-docコマンド`_ を使ってインストール可能なドキュメントアーカイブとモジュールをリストアップできます。"
|
||||
|
||||
#: ../../cli.rst:232
|
||||
msgid ""
|
||||
"By default, ``list-doc`` will print a list of archives available for "
|
||||
"installation using the `install-doc command`_, with the ``--archives`` "
|
||||
"option."
|
||||
msgstr "デフォルトでは、 ``list-doc`` は `install-docコマンド`_ と ``--archives`` オプションを使ってインストール可能なアーカイブのリストを出力します。"
|
||||
|
||||
#: ../../cli.rst:251
|
||||
msgid ""
|
||||
"For example, ``aqt list-doc mac 5.12`` would print archives for the "
|
||||
"latest version of Qt 5.12 available (5.12.11 at the time of this "
|
||||
"writing)."
|
||||
msgstr "例えば、``aqt list-doc mac 5.12`` は入手可能な最新バージョンのQt 5.12(この記事を書いている時点では5.12.11)のアーカイブを出力します。"
|
||||
|
||||
#: ../../cli.rst:256
|
||||
msgid ""
|
||||
"This flag causes ``list-doc`` to print a list of modules available for "
|
||||
"installation using the `install-doc command`_, with the ``--modules`` "
|
||||
"option."
|
||||
msgstr "このフラグは、``list-doc``に `install-doc command`_ と ``--modules`` オプションを使ってインストール可能なモジュールのリストを出力させます。"
|
||||
|
||||
#: ../../cli.rst:263
|
||||
msgid "list-example command"
|
||||
msgstr "list-exampleコマンド"
|
||||
|
||||
#: ../../cli.rst:274
|
||||
msgid ""
|
||||
"List example archives and modules available for installation using the "
|
||||
"`install-example command`_."
|
||||
msgstr "`install-example command`_ を使ってインストール可能なアーカイブとモジュールの例を挙げます。"
|
||||
|
||||
#: ../../cli.rst:277
|
||||
msgid ""
|
||||
"By default, ``list-example`` will print a list of archives available for "
|
||||
"installation using the `install-example command`_, with the "
|
||||
"``--archives`` option."
|
||||
msgstr "デフォルトでは、 ``list-example`` は `install-example command`_ と ``--archives`` オプションを使ってインストール可能なアーカイブのリストを出力します。"
|
||||
|
||||
#: ../../cli.rst:296
|
||||
msgid ""
|
||||
"For example, ``aqt list-example mac 5.12`` would print archives for the "
|
||||
"latest version of Qt 5.12 available (5.12.11 at the time of this "
|
||||
"writing)."
|
||||
msgstr "例えば、 ``aqt list-example mac 5.12`` は入手可能な最新バージョンのQt 5.12(この記事を書いている時点では5.12.11)のアーカイブを出力します。"
|
||||
|
||||
#: ../../cli.rst:301
|
||||
msgid ""
|
||||
"This flag causes ``list-example`` to print a list of modules available "
|
||||
"for installation using the `install-example command`_, with the "
|
||||
"``--modules`` option."
|
||||
msgstr "このフラグは、 ``list-example`` に `install-example command`_ と ``--modules`` オプションを使ってインストール可能なモジュールのリストを出力させます。"
|
||||
|
||||
#: ../../cli.rst:308
|
||||
msgid "list-tool command"
|
||||
msgstr "list-toolコマンド"
|
||||
|
||||
#: ../../cli.rst:316
|
||||
msgid "List available tools"
|
||||
msgstr "使用可能なツールを一覧表示"
|
||||
|
||||
#: ../../cli.rst:330
|
||||
msgid ""
|
||||
"The name of a tool. Use ``aqt list-tool <host> <target>`` to see accepted"
|
||||
" values. When set, this prints all 'tool variant names' available."
|
||||
msgstr "ツールの名前です。利用可能な値を確認するには、 ``aqt list-tool <host> <target>`` を使用してください設定すると、利用可能なすべての 'ツールバリアント名' を出力します。"
|
||||
|
||||
#: ../../cli.rst:333
|
||||
msgid ""
|
||||
"The output of this command is meant to be used with the :ref:`aqt "
|
||||
"install-tool <Tools installation command>` below."
|
||||
msgstr "このコマンドの出力は、以下の :ref:`aqt install-tool <Tools installation command>` で使うことを意図しています。"
|
||||
|
||||
#: ../../cli.rst:343
|
||||
msgid ""
|
||||
"Long display: shows extra metadata associated with each tool variant. "
|
||||
"This metadata is displayed in a table, and includes versions and release "
|
||||
"dates for each tool. If your terminal is wider than 95 characters, ``aqt "
|
||||
"list-tool`` will also display the names and descriptions for each tool. "
|
||||
"An example of this output is displayed below."
|
||||
msgstr "長い表示: 各ツールバリアントに関連付けられた追加のメタデータを表示します。このメタデータは表形式で表示され、各ツールのバージョンとリリース日が含まれます。あなたの端末の表示幅が95文字を超える場合、``aqt list-tool`` は各ツールの名前と説明も表示します。この出力例を以下に示します。"
|
||||
|
||||
#: ../../cli.rst:360
|
||||
msgid "Install-* Commands"
|
||||
msgstr "Install-*コマンド"
|
||||
|
||||
#: ../../cli.rst:362
|
||||
msgid "These commands are used to install Qt, tools, source, docs, and examples."
|
||||
msgstr "これらのコマンドは、Qt、ツール、ソース、ドキュメント、サンプルをインストールするために使用されます。"
|
||||
|
||||
#: ../../cli.rst:368
|
||||
msgid "Common Options"
|
||||
msgstr "共通オプション"
|
||||
|
||||
#: ../../cli.rst:370
|
||||
msgid ""
|
||||
"Most of these commands share the same command line options, and these "
|
||||
"options are described here:"
|
||||
msgstr "これらのコマンドのほとんどは、同じコマンドラインオプションを共有しています。次に、これらのオプションについて説明します。"
|
||||
|
||||
#: ../../cli.rst:380
|
||||
msgid ""
|
||||
"Specify output directory. By default, aqt installs to the current working"
|
||||
" directory."
|
||||
msgstr "出力ディレクトリを指定します。デフォルトでは、aqtは現在の作業ディレクトリにインストールされます。"
|
||||
|
||||
#: ../../cli.rst:385
|
||||
msgid ""
|
||||
"Specify mirror site base url such as -b "
|
||||
"``https://mirrors.dotsrc.org/qtproject`` where 'online' folder exist."
|
||||
msgstr "'online' フォルダが存在する -b ``https://mirrors.dotsrc.org/qtproject`` などのミラーサイトベースURLを指定します。"
|
||||
|
||||
#: ../../cli.rst:390
|
||||
msgid ""
|
||||
"Specify the path to your own ``settings.ini`` file. See :ref:`the "
|
||||
"Configuration section<configuration-ref>`."
|
||||
msgstr "独自の ``settings.ini`` ファイルへのパスを指定します。:ref:`the Configuration section <configuration-ref>` を参照してください。"
|
||||
|
||||
#: ../../cli.rst:394
|
||||
msgid ""
|
||||
"The connection timeout, in seconds, for the download site. (default: 5 "
|
||||
"sec)"
|
||||
msgstr "ダウンロードサイトの接続タイムアウト(秒単位)。(デフォルト:5秒)"
|
||||
|
||||
#: ../../cli.rst:398
|
||||
msgid ""
|
||||
"Specify external 7zip command path. By default, aqt uses py7zr_ for this "
|
||||
"task."
|
||||
msgstr "外部7zipコマンドのパスを指定します。デフォルトでは、aqtはこのタスクに py7zr_ を使用します。"
|
||||
|
||||
#: ../../cli.rst:400
|
||||
msgid ""
|
||||
"In the past, our users have had success using 7-zip_ on Windows, Linux "
|
||||
"and Mac. You can install 7-zip on Windows with Choco_. The Linux/Mac port"
|
||||
" of 7-zip is called ``p7zip``, and you can install it with brew_ on Mac, "
|
||||
"or on Linux with your package manager."
|
||||
msgstr "これまで、ユーザは Windows、Linux、Macで 7-zip_ を使ってうまくやってきました。Windowsでは Choco_ を使って7-zipをインストールすることができます。Linux/Macのポートである 7-zipは ``p7zip`` と呼ばれており、brew_ on Macでインストールするか、Linuxではパッケージマネージャを使ってインストールすることができます。"
|
||||
|
||||
#: ../../cli.rst:412
|
||||
msgid "Use the internal extractor, py7zr_"
|
||||
msgstr "内部エクストラクタ py7zr_ を使用します。"
|
||||
|
||||
#: ../../cli.rst:416
|
||||
msgid ""
|
||||
"Keep downloaded archive when specified, otherwise remove after install. "
|
||||
"Use ``--archive-dest <path>`` to choose where aqt will place these files."
|
||||
" If you do not specify a download destination, aqt will place these files"
|
||||
" in the current working directory."
|
||||
msgstr "指定された場合はダウンロードされたアーカイブを保持します。指定されていない場合はインストール後に削除します。これらのファイルをaqtが配置する場所を選択するには、 ``--archive-dest <path>``を使用します。ダウンロード先を指定しない場合、aqtはこれらのファイルを現在の作業ディレクトリに配置します。"
|
||||
|
||||
#: ../../cli.rst:423
|
||||
msgid ""
|
||||
"Set the destination path for downloaded archives (temp directory by "
|
||||
"default). All downloaded archives will be automatically deleted unless "
|
||||
"you have specified the ``--keep`` option above, or ``aqt`` crashes."
|
||||
msgstr "ダウンロードしたアーカイブの保存先パスを設定します(デフォルトディレクトリ)を設定します。上記の ``--keep`` オプションが指定されていないか、または ``aqt`` がクラッシュしない限り、ダウンロードしたアーカイブはすべて自動的に削除されます。"
|
||||
|
||||
#: ../../cli.rst:427
|
||||
msgid ""
|
||||
"Note that this option refers to the intermediate ``.7z`` archives that "
|
||||
"``aqt`` downloads and then extracts to ``--outputdir``. Most users will "
|
||||
"not need to keep these files."
|
||||
msgstr "このオプションは、 ``aqt`` がダウンロードして ``--outputdir`` に展開する中間の ``.7z`` アーカイブを参照していることに注意してください。ほとんどのユーザはこれらのファイルを保持する必要はありません。"
|
||||
|
||||
#: ../../cli.rst:433
|
||||
msgid ""
|
||||
"Specify extra modules to install as a list. Use the appropriate ``aqt "
|
||||
"list-*`` command to list available modules:"
|
||||
msgstr "リストとしてインストールする追加モジュールを指定してください。適切な ``aqt list-*`` コマンドを使って、利用可能なモジュールをリストしてください:"
|
||||
|
||||
#: ../../cli.rst:437 ../../cli.rst:480
|
||||
msgid "Install command"
|
||||
msgstr "インストール・コマンド"
|
||||
|
||||
#: ../../cli.rst:437 ../../cli.rst:480
|
||||
msgid "List command"
|
||||
msgstr "リストコマンド"
|
||||
|
||||
#: ../../cli.rst:437 ../../cli.rst:480
|
||||
msgid "Usage of list command"
|
||||
msgstr "リストコマンドの使用法"
|
||||
|
||||
#: ../../cli.rst:439 ../../cli.rst:482
|
||||
msgid "install-qt"
|
||||
msgstr "install-qt"
|
||||
|
||||
#: ../../cli.rst:439 ../../cli.rst:482
|
||||
msgid "`list-qt command`_"
|
||||
msgstr "`list-qt command`_"
|
||||
|
||||
#: ../../cli.rst:439
|
||||
msgid "``list-qt <host> <target> --modules <version> <arch>``"
|
||||
msgstr "``list-qt <host> <target> --modules <version> <arch>``"
|
||||
|
||||
#: ../../cli.rst:441 ../../cli.rst:484
|
||||
msgid "install-example"
|
||||
msgstr "install-example"
|
||||
|
||||
#: ../../cli.rst:441 ../../cli.rst:484
|
||||
msgid "`list-example command`_"
|
||||
msgstr "`list-example command`_"
|
||||
|
||||
#: ../../cli.rst:441
|
||||
msgid "``list-example <host> <version> --modules``"
|
||||
msgstr "``list-example <host> <version> --modules``"
|
||||
|
||||
#: ../../cli.rst:443 ../../cli.rst:488
|
||||
msgid "install-doc"
|
||||
msgstr "install-doc"
|
||||
|
||||
#: ../../cli.rst:443 ../../cli.rst:488
|
||||
msgid "`list-doc command`_"
|
||||
msgstr "`list-doc command`_"
|
||||
|
||||
#: ../../cli.rst:443
|
||||
msgid "``list-doc <host> <version> --modules``"
|
||||
msgstr "``list-doc <host> <version> --modules``"
|
||||
|
||||
#: ../../cli.rst:447
|
||||
msgid ""
|
||||
"This option only applicable to ``install-qt``, ``install-example``, and "
|
||||
"``install-doc``."
|
||||
msgstr "このオプションは、 ``install-qt``、 ``install-example`` 、 ``install-doc`` にのみ適用できます。"
|
||||
|
||||
#: ../../cli.rst:449
|
||||
msgid "You can install multiple modules like this:"
|
||||
msgstr "次のように、複数のモジュールをインストールできます。"
|
||||
|
||||
#: ../../cli.rst:457
|
||||
msgid ""
|
||||
"If you wish to install every module available, you may use the ``all`` "
|
||||
"keyword instead of a list of modules, like this:"
|
||||
msgstr "利用可能なすべてのモジュールをインストールしたい場合は、次のように、モジュールのリストの代わりに ``all``キーワードを使うことができます。"
|
||||
|
||||
#: ../../cli.rst:468
|
||||
msgid ""
|
||||
"[Advanced] Specify subset of archives to **limit** installed archives. It"
|
||||
" will only affect the base Qt installation and the ``debug_info`` module."
|
||||
" 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."
|
||||
msgstr "[高度] アーカイブのサブセットを指定して、インストールされているアーカイブを**制限**します。これはQtの基本インストールと ``debug_info`` モジュールにのみ影響します。これは高度なオプションであり、一般的な使用にはお勧めできません。主な目的は、インストールされているモジュールを制限することによってCI/CDプロセスを高速化することです。Qt SDKのインストールが失敗する可能性があります。"
|
||||
|
||||
#: ../../cli.rst:474
|
||||
msgid ""
|
||||
"This option is applicable to all the ``install-*`` commands except for "
|
||||
"``install-tool``."
|
||||
msgstr "このオプションは、``install-tool``を除くすべての ``install-*`` コマンドに適用できます。"
|
||||
|
||||
#: ../../cli.rst:476
|
||||
msgid ""
|
||||
"You can print a list of all acceptable values to use with this command by"
|
||||
" using the appropriate ``aqt list-*`` command:"
|
||||
msgstr "適切な``aqt list-*`` コマンドを使えば、このコマンドで使える全ての値のリストを出力することができます。"
|
||||
|
||||
#: ../../cli.rst:482
|
||||
msgid "``list-qt <host> <target> --archives <version>``"
|
||||
msgstr "``list-qt <host> <target> --archives <version>``"
|
||||
|
||||
#: ../../cli.rst:484
|
||||
msgid "``list-example <host> <version>``"
|
||||
msgstr "``list-example <host> <version>``"
|
||||
|
||||
#: ../../cli.rst:486
|
||||
msgid "install-src"
|
||||
msgstr "install-src"
|
||||
|
||||
#: ../../cli.rst:486
|
||||
msgid "`list-src command`_"
|
||||
msgstr "`list-src command`_"
|
||||
|
||||
#: ../../cli.rst:486
|
||||
msgid "``list-src <host> <version>``"
|
||||
msgstr "``list-src <host> <version>``"
|
||||
|
||||
#: ../../cli.rst:488
|
||||
msgid "``list-doc <host> <version>``"
|
||||
msgstr "``list-doc <host> <version>``"
|
||||
|
||||
#: ../../cli.rst:495
|
||||
msgid "install-qt command"
|
||||
msgstr "install-qtコマンド"
|
||||
|
||||
#: ../../cli.rst:517
|
||||
msgid ""
|
||||
"Install Qt library, with specified version and target. There are various "
|
||||
"combinations to accept according to Qt version."
|
||||
msgstr "指定されたバージョンとターゲットでQtライブラリをインストールします。Qtのバージョンに応じて、さまざまな組み合わせを受け入れることができます。"
|
||||
|
||||
#: ../../cli.rst:522
|
||||
msgid ""
|
||||
"linux, windows or mac. The operating system on which the Qt development "
|
||||
"tools will run."
|
||||
msgstr "linux, windows または、mac. Qt開発ツールが実行されるオペレーティングシステム。"
|
||||
|
||||
#: ../../cli.rst:526
|
||||
msgid ""
|
||||
"desktop, ios, winrt, or android. The type of device for which you are "
|
||||
"developing Qt programs. If your target is ios, please be aware that "
|
||||
"versions of Qt older than 6.2.4 are expected to be non-functional with "
|
||||
"current versions of XCode (applies to any XCode greater than or equal to "
|
||||
"13)."
|
||||
msgstr "desktop, ios, winrt, または androidQtプログラムを開発するデバイスのタイプ。ターゲットがiosの場合、6.2.4よりも古いバージョンのQtは、現在のバージョンのXCodeでは機能しないことに注意してください(バージョン13以上のXCodeに適用されます)。"
|
||||
|
||||
#: ../../cli.rst:542
|
||||
msgid ""
|
||||
"For example, ``aqt install-qt mac desktop 5.12`` would install the newest"
|
||||
" version of Qt 5.12 available, and ``aqt install-qt mac desktop \"*\"`` "
|
||||
"would install the highest version of Qt available."
|
||||
msgstr "例えば、``aqt install-qt mac desktop 5.12`` はQt 5.12の最新バージョンをインストールし、``aqt install-qt mac desktop \"*\"`` はQtの最新バージョンをインストールします。"
|
||||
|
||||
#: ../../cli.rst:546
|
||||
msgid ""
|
||||
"When using this option, ``aqt`` will print the version that it has "
|
||||
"installed in the logs so that you can verify it easily."
|
||||
msgstr "このオプションを使用すると、``aqt`` はインストールされたバージョンをログに出力するので、簡単に確認できます。"
|
||||
|
||||
#: ../../cli.rst:551
|
||||
msgid "The compiler architecture for which you are developing. Options:"
|
||||
msgstr "開発対象のコンパイラアーキテクチャ。オプション:"
|
||||
|
||||
#: ../../cli.rst:553
|
||||
msgid "gcc_64 for linux desktop"
|
||||
msgstr "Linuxデスクトップの場合: gcc_64"
|
||||
|
||||
#: ../../cli.rst:555
|
||||
msgid "clang_64 for mac desktop"
|
||||
msgstr "mac デスクトップの場合: clang_64"
|
||||
|
||||
#: ../../cli.rst:557
|
||||
msgid ""
|
||||
"win64_msvc2019_64, win64_msvc2017_64, win64_msvc2015_64, win32_msvc2015, "
|
||||
"win32_mingw53 for windows desktop"
|
||||
msgstr "Windowsデスクトップの場合は、win64_msvc2019_64, win64_msvc2017_64, win64_msvc2015_64, win32_msvc2015, win32_mingw53 "
|
||||
|
||||
#: ../../cli.rst:559
|
||||
msgid "android_armv7, android_arm64_v8a, android_x86, android_x86_64 for android"
|
||||
msgstr "Androidの場合は: android_armv7, android_arm64_v8a, android_x86, android_x86_64"
|
||||
|
||||
#: ../../cli.rst:561
|
||||
msgid "Use the :ref:`List-Qt Command` to list available architectures."
|
||||
msgstr ":ref:`List-Qt Command` を使用して、利用可能なアーキテクチャを一覧表示してください。"
|
||||
|
||||
#: ../../cli.rst:565
|
||||
msgid ""
|
||||
"If you are installing an ios or android version of Qt, the corresponding "
|
||||
"desktop version of Qt must be installed alongside of it. Turn this option"
|
||||
" on to install it automatically."
|
||||
msgstr "iosまたはandroidバージョンのQtをインストールする場合は、対応するデスクトップバージョンのQtも一緒にインストールする必要があります。このオプションをオンにすると、自動的にインストールされます。"
|
||||
|
||||
#: ../../cli.rst:570
|
||||
msgid ""
|
||||
"[Advanced] Specify not to install all base packages. This is advanced "
|
||||
"option and you should use it with ``--modules`` option. This allow you to"
|
||||
" add modules to existent Qt installation."
|
||||
msgstr "[高度]すべての基本パッケージをインストールしないように指定します。これは拡張オプションなので、``--modules`` オプションと一緒に使うべきです。これにより、既存のQtインストールにモジュールを追加できます。"
|
||||
|
||||
#: ../../cli.rst:574 ../../cli.rst:635 ../../cli.rst:688 ../../cli.rst:743
|
||||
#: ../../cli.rst:790
|
||||
msgid "See `common options`_."
|
||||
msgstr "`common options`_ 参照"
|
||||
|
||||
#: ../../cli.rst:580
|
||||
msgid "install-src command"
|
||||
msgstr "install-srcコマンド"
|
||||
|
||||
#: ../../cli.rst:600
|
||||
msgid "Install Qt source code for the specified version and target."
|
||||
msgstr "指定されたバージョンとターゲットのQtソースコードをインストールします。"
|
||||
|
||||
#: ../../cli.rst:609 ../../cli.rst:669 ../../cli.rst:723
|
||||
msgid ""
|
||||
"Deprecated and marked for removal in a future version of aqt. This "
|
||||
"parameter exists for backwards compatibility reasons, and its value is "
|
||||
"ignored."
|
||||
msgstr "将来のバージョンのaqtでは廃止され、削除される予定です。このパラメータは下位互換性のために存在し、その値は無視されます。"
|
||||
|
||||
#: ../../cli.rst:624
|
||||
msgid ""
|
||||
"For example, ``aqt install-src mac 5.12`` would install sources for the "
|
||||
"newest version of Qt 5.12 available, and ``aqt install-src mac \"*\"`` "
|
||||
"would install sources for the highest version of Qt available."
|
||||
msgstr "例えば、``aqt install-src mac 5.12`` は入手可能な最新バージョンのQt 5.12のソースをインストールし、``aqt install-src mac \"*\"`` は入手可能な最新バージョンのQtのソースをインストールします。"
|
||||
|
||||
#: ../../cli.rst:630
|
||||
msgid ""
|
||||
"by adding ``--kde`` option, KDE patch collection is applied for qtbase "
|
||||
"tree. It is only applied to Qt 5.15.2. When specified version is other "
|
||||
"than it, command will abort with error when using ``--kde``."
|
||||
msgstr "「--kde」オプションを追加すると、qtbaseのソースツリーにKDEパッチコレクションが適用されます。これはQt 5.15.2にのみ適用されます。指定されたバージョンがそれ以外の場合、``--kde`` を指定したコマンドはエラーで中断されます。"
|
||||
|
||||
#: ../../cli.rst:641
|
||||
msgid "install-doc command"
|
||||
msgstr "install-docコマンド"
|
||||
|
||||
#: ../../cli.rst:661
|
||||
msgid "Install Qt documentation for the specified version and target."
|
||||
msgstr "指定されたバージョンとターゲットのQtドキュメントをインストールします。"
|
||||
|
||||
#: ../../cli.rst:684
|
||||
msgid ""
|
||||
"For example, ``aqt install-doc mac 5.12`` would install documentation for"
|
||||
" the newest version of Qt 5.12 available, and ``aqt install-doc mac "
|
||||
"\"*\"`` would install documentation for the highest version of Qt "
|
||||
"available."
|
||||
msgstr "例えば、``aqt install-doc mac 5.12`` と指定するとQt 5.12の最新バージョンのドキュメントがインストールされ、``aqt install-doc mac \"*\"`` と指定するとQtの最新バージョンのドキュメントがインストールされます。"
|
||||
|
||||
#: ../../cli.rst:694
|
||||
msgid "install-example command"
|
||||
msgstr "install-exampleコマンド"
|
||||
|
||||
#: ../../cli.rst:714
|
||||
msgid "Install Qt examples for the specified version and target."
|
||||
msgstr "指定されたバージョンとターゲットのQtサンプルをインストールします。"
|
||||
|
||||
#: ../../cli.rst:738
|
||||
msgid ""
|
||||
"For example, ``aqt install-example mac 5.12`` would install examples for "
|
||||
"the newest version of Qt 5.12 available, and ``aqt install-example mac "
|
||||
"\"*\"`` would install examples for the highest version of Qt available."
|
||||
msgstr "例えば、``aqt install-example mac 5.12``はQt 5.12の最新バージョンのサンプルをインストールし、``aqt install-example mac \"*\"``はQtの最新バージョンのサンプルをインストールします。"
|
||||
|
||||
#: ../../cli.rst:749
|
||||
msgid "install-tool command"
|
||||
msgstr "install-toolコマンド"
|
||||
|
||||
#: ../../cli.rst:767
|
||||
msgid "Install tools like QtIFW, mingw, Cmake, Conan, and vcredist."
|
||||
msgstr "QtIFW、mingw、Cmake、Conan、vcredistなどのツールをインストールします。"
|
||||
|
||||
#: ../../cli.rst:775
|
||||
msgid "desktop, ios or android"
|
||||
msgstr "desktop、ios、またはAndroid"
|
||||
|
||||
#: ../../cli.rst:779
|
||||
msgid ""
|
||||
"install tools specified. tool name may be 'tools_openssl_x64', "
|
||||
"'tools_vcredist', 'tools_ninja', 'tools_ifw', 'tools_cmake'"
|
||||
msgstr "指定されたツールをインストールします。ツール名は'tools_openssl_x64'、'tools_vcredist'、'tools_ninja'、'tools_ifw'、'tools_cmake'のいずれかです。"
|
||||
|
||||
#: ../../cli.rst:784
|
||||
msgid ""
|
||||
"Optional field to specify tool variant. It may be required for vcredist "
|
||||
"and mingw installation. tool variant names may be "
|
||||
"'qt.tools.win64_mingw810', 'qt.tools.vcredist_msvc2013_x64'."
|
||||
msgstr "ツールバリアントを指定するオプションのフィールド。vcredistおよびmingwのインストールで必要になる場合があります。ツールバリアント名は'qt.tools.win64_mingw810','qt.tools.vcredist_msvc2013_x64'のようになります。"
|
||||
|
||||
#: ../../cli.rst:787
|
||||
msgid ""
|
||||
"You should use the :ref:`List-Tool command` to display what tools and "
|
||||
"tool variant names are available."
|
||||
msgstr ":ref:`List-Tool command`を使用して、使用可能なツールとツールバリアント名を表示する必要があります。"
|
||||
|
||||
#: ../../cli.rst:794
|
||||
msgid "Legacy subcommands"
|
||||
msgstr "従来のサブコマンド"
|
||||
|
||||
#: ../../cli.rst:796
|
||||
msgid ""
|
||||
"The subcommands ``install``, ``tool``, ``src``, ``doc``, and ``examples``"
|
||||
" have been deprecated in favor of the newer ``install-*`` commands, but "
|
||||
"they remain in aqt in case you still need to use them. Documentation for "
|
||||
"these older commands is still available at "
|
||||
"https://aqtinstall.readthedocs.io/en/v1.2.4/"
|
||||
msgstr "サブコマンドの「install」、「tool」、「src」、「doc」、および「examples」は、新しい「install-*」コマンドのために廃止されましたが、まだ使用する必要がある場合に備えて、aqtに残っています。これらの古いコマンドのドキュメントは、https://aqtinstall.readthedocs.io/en/v1.2.4/でまだ入手できます。"
|
||||
|
||||
#: ../../cli.rst:803
|
||||
msgid "Command examples"
|
||||
msgstr "コマンドの例"
|
||||
|
||||
#: ../../cli.rst:807
|
||||
msgid ""
|
||||
"Example: Installing Qt SDK 5.12.12 for Linux with QtCharts and "
|
||||
"QtNetworkAuth:"
|
||||
msgstr "例:QtChartsとQtNetworkAuthでQt SDK 5.12.12 for Linuxをインストールする:"
|
||||
|
||||
#: ../../cli.rst:815
|
||||
msgid "Example: Installing the newest LTS version of Qt 5.12:"
|
||||
msgstr "例:Qt 5.12の最新のLTSバージョンをインストールする"
|
||||
|
||||
#: ../../cli.rst:823
|
||||
msgid "Example: Installing Android (armv7) Qt 5.13.2:"
|
||||
msgstr "例:Android(armv7)Qt 5.13.2のインストール:"
|
||||
|
||||
#: ../../cli.rst:830
|
||||
msgid "Example: Install examples, doc and source:"
|
||||
msgstr "例: example、docおよびsourceのインストール:"
|
||||
|
||||
#: ../../cli.rst:838
|
||||
msgid ""
|
||||
"Example: Print archives available for installation with ``install-"
|
||||
"example/doc/src``:"
|
||||
msgstr "例: ``install-example/doc/src`` でインストール可能なアーカイブを一覧表示します。"
|
||||
|
||||
#: ../../cli.rst:846
|
||||
msgid ""
|
||||
"Example: Print modules available for installation with ``install-"
|
||||
"example/doc``:"
|
||||
msgstr "例: ``install-example/doc`` でインストール可能なモジュールを一覧表示します:"
|
||||
|
||||
#: ../../cli.rst:853
|
||||
msgid "Example: Install Web Assembly"
|
||||
msgstr "例: Webアセンブリのインストール"
|
||||
|
||||
#: ../../cli.rst:860
|
||||
msgid "Example: List available versions of Qt on Linux"
|
||||
msgstr "例: Linuxで利用可能なQtのバージョンを一覧表示する"
|
||||
|
||||
#: ../../cli.rst:867
|
||||
msgid "Example: List available versions of Qt6 on macOS"
|
||||
msgstr "例:macOS上で利用可能なQt6のバージョンを一覧表示する"
|
||||
|
||||
#: ../../cli.rst:874
|
||||
msgid "Example: List available modules for latest version of Qt on macOS"
|
||||
msgstr "例:macOS上のQtの最新バージョンで利用可能なモジュールを一覧表示する"
|
||||
|
||||
#: ../../cli.rst:881
|
||||
msgid "Example: List available architectures for Qt 6.1.2 on windows"
|
||||
msgstr "例:Windows上のQt 6.1.2で利用可能なアーキテクチャを一覧表示する"
|
||||
|
||||
#: ../../cli.rst:888
|
||||
msgid "Example: List available tools on windows"
|
||||
msgstr "例: WIndowsで使用可能なツールを一覧表示する"
|
||||
|
||||
#: ../../cli.rst:895
|
||||
msgid "Example: List the variants of IFW available:"
|
||||
msgstr "例:使用可能なIFWのバリエーションを一覧表示する。"
|
||||
|
||||
#: ../../cli.rst:904
|
||||
msgid ""
|
||||
"Example: List the variants of IFW, including version, release date, "
|
||||
"description, etc.:"
|
||||
msgstr "例:バージョン、リリース日、説明など、IFWのバリエーションを一覧表示する。"
|
||||
|
||||
#: ../../cli.rst:911
|
||||
msgid "Example: Install an Install FrameWork (IFW):"
|
||||
msgstr "例:Install FrameWork(IFW)のインストール:"
|
||||
|
||||
#: ../../cli.rst:918
|
||||
msgid "Example: Install vcredist on Windows:"
|
||||
msgstr "例:Windowsへのvcredistのインストール:"
|
||||
|
||||
#: ../../cli.rst:927
|
||||
msgid "Example: Install MinGW on Windows"
|
||||
msgstr "例:WindowsへのMinGWのインストール"
|
||||
|
||||
#: ../../cli.rst:935
|
||||
msgid "Example: Show help message"
|
||||
msgstr "例:ヘルプメッセージの表示"
|
||||
|
||||
261
docs/locale/ja/LC_MESSAGES/configuration.po
Normal file
261
docs/locale/ja/LC_MESSAGES/configuration.po
Normal file
@@ -0,0 +1,261 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: ../../configuration.rst:4
|
||||
msgid "Configuration"
|
||||
msgstr "構成"
|
||||
|
||||
#: ../../configuration.rst:6
|
||||
msgid ""
|
||||
"``aqtinstall`` can be configured through a configuration file. A default "
|
||||
"configuration is stored in ``aqt/settings.ini`` file."
|
||||
msgstr "``aqtinstall``は設定ファイルで設定できます。デフォルトの設定は ``aqt/settings.ini`` ファイルに保存されています。"
|
||||
|
||||
#: ../../configuration.rst:9
|
||||
msgid ""
|
||||
"You can specify custom configuration file through ``AQT_CONFIG`` "
|
||||
"environment variable or \"-c\" or \"--config\" command line option."
|
||||
msgstr "環境変数 ``AQT_CONFIG`` やコマンドラインオプション``-c``や``--config`` でカスタム設定ファイルを指定することができます。"
|
||||
|
||||
#: ../../configuration.rst:12
|
||||
msgid "A file is like as follows:"
|
||||
msgstr "設定ファイルは次のようになります。"
|
||||
|
||||
#: ../../configuration.rst:54
|
||||
msgid "Settings"
|
||||
msgstr "設定"
|
||||
|
||||
#: ../../configuration.rst:56
|
||||
msgid "The ``[aqt]`` section configures basic behavior."
|
||||
msgstr "``[aqt]`` セクションは基本的な動作を設定します。"
|
||||
|
||||
#: ../../configuration.rst:60
|
||||
msgid "concurrency:"
|
||||
msgstr "concurrency:"
|
||||
|
||||
#: ../../configuration.rst:59
|
||||
msgid ""
|
||||
"``concurrency`` is a setting how many download concurrently starts. It "
|
||||
"should be a integer value."
|
||||
msgstr "``concurrency`` は、同時に開始するダウンロードの数を設定します。これは整数値でなくてはなりません。"
|
||||
|
||||
#: ../../configuration.rst:65
|
||||
msgid "baseurl:"
|
||||
msgstr "baseurl:"
|
||||
|
||||
#: ../../configuration.rst:63
|
||||
msgid ""
|
||||
"``baseurl`` is a URL of Qt download site. When you have your own Qt "
|
||||
"download site repository, you can set it here. It is as same as "
|
||||
"``--base`` option."
|
||||
msgstr "``baseurl`` はQtダウンロードサイトのURLです。独自のQtダウンロードサイトリポジトリがある場合は、ここで設定できます。これは``--base``オプションと同じです。"
|
||||
|
||||
#: ../../configuration.rst:71
|
||||
msgid "7zcmd:"
|
||||
msgstr "7zcmd:"
|
||||
|
||||
#: ../../configuration.rst:68
|
||||
msgid ""
|
||||
"It is a command name of 7-zip. When ``aqtinstall`` is installed "
|
||||
"**without** recommended library ``py7zr``, it is used to extract archive "
|
||||
"instead of ``py7zr`` library. When ``--external`` option specified, a "
|
||||
"value is override with option's one."
|
||||
msgstr "圧縮解凍ツールの7-zipのコマンド名です。``aqtinstall`` が **推奨ライブラリ``py7zr``なしで** インストールされている場合、``py7zr`` ライブラリの代わりにアーカイブを抽出するために使用されます。``--external`` オプションが指定されている場合、オプションの指定値で上書きされます。"
|
||||
|
||||
#: ../../configuration.rst:78
|
||||
msgid "print_stacktrace_on_error:"
|
||||
msgstr "print_stacktrace_on_error:"
|
||||
|
||||
#: ../../configuration.rst:74
|
||||
msgid ""
|
||||
"``print_stacktrace_on_error`` is either ``True`` or ``False``. The "
|
||||
"``True`` setting causes a stack trace to be printed to stderr any time an"
|
||||
" error occurs that will end the program. The ``False`` setting will hide "
|
||||
"the stack trace, unless an unhandled exception occurs."
|
||||
msgstr "``print_stacktrace_on_error`` は、 ``True`` か``False``を値にとります。``True`` に設定すると、プログラムを終了させるエラーが発生するたびにスタックトレースがstderrに出力されます。``False``に設定すると、未処理の例外が発生しない限り、スタックトレースは表示されません。"
|
||||
|
||||
#: ../../configuration.rst:85
|
||||
msgid "always_keep_archives:"
|
||||
msgstr "always_keep_archives:"
|
||||
|
||||
#: ../../configuration.rst:81
|
||||
msgid ""
|
||||
"This is either ``True`` or ``False``. The ``True`` setting turns on the "
|
||||
"``--keep`` option every time you run aqt, and cannot be overridden by "
|
||||
"command line options. The ``False`` setting will require you to set "
|
||||
"``--keep`` manually every time you run aqt, unless you don't want to keep"
|
||||
" ``.7z`` archives."
|
||||
msgstr "これは、 ``True``か ``False`` を値にとります。``True`` が設定さえると、 ``--keep`` オプションが、aqt実行時に毎回指定されたことになります。コマンドラインオプションで上書きできません。 ``False`` が設定されると、 aqt実行するときに``.7z``アーカイブを削除したくないときは、``--keep`` を手動で設定する必要があります。"
|
||||
|
||||
#: ../../configuration.rst:90
|
||||
msgid "archive_download_location:"
|
||||
msgstr "archive_download_location:"
|
||||
|
||||
#: ../../configuration.rst:88
|
||||
msgid ""
|
||||
"This is the relative or absolute path to the location in which ``.7z`` "
|
||||
"archives will be downloaded, when ``--keep`` is turned on. You can "
|
||||
"override this location with the ``--archives-dest`` option."
|
||||
msgstr "これは、``--keep`` がオンになっている場合に、``.7z`` アーカイブがダウンロードされる場所への相対パスまたは絶対パスです。この場所は、``--archives-dest`` オプションで上書きできます。"
|
||||
|
||||
#: ../../configuration.rst:104
|
||||
msgid "min_module_size:"
|
||||
msgstr "min_module_size:"
|
||||
|
||||
#: ../../configuration.rst:93
|
||||
msgid ""
|
||||
"This is the minimum decompressed size, in bytes, of the modules that aqt "
|
||||
"is permitted to list. The authors of aqt have discovered that the Qt "
|
||||
"repository contains a few mysteriously \"empty\" modules, including the "
|
||||
"examples modules for `qtlottie` and `qtquicktimeline`. These modules "
|
||||
"consist of a single archive that contains empty directories, and they are"
|
||||
" exactly 40 bytes when uncompressed. The authors feel that it is not "
|
||||
"useful for ``aqt list-*`` to list these empty modules. If you want to "
|
||||
"print these modules with ``aqt list-*``, please feel free to change the "
|
||||
"`min_module_size` value to something less than 40."
|
||||
msgstr "これは、aqtがリストすることを許可されているモジュールの最小解凍サイズ(バイト単位)です。aqtの作成者は、Qtリポジトリに、`qtlottie`と`qtquicktimeline`のサンプルモジュールになど、いくつかの不可解な「空の」モジュールが含まれていることを発見しました。これらのモジュールは、空のディレクトリを含む1つのアーカイブで構成され、圧縮されていない場合は正確に40バイトです。著者らは、これらの空のモジュールを列挙することは ``aqt list-*`` にとって有用ではないと感じています。これらのモジュールを ``aqt list-*`` で表示したい場合は、`min_module_size` の値を40以下に変更してください。"
|
||||
|
||||
#: ../../configuration.rst:102
|
||||
msgid ""
|
||||
"This setting has no effect on your ability to install these modules. "
|
||||
"``aqt install-*`` can will still install them without any warnings."
|
||||
msgstr "この設定はこれらのモジュールをインストールする能力に影響を与えません。``aqt install-*`` は警告なしでそれらをインストールします。"
|
||||
|
||||
#: ../../configuration.rst:106
|
||||
msgid ""
|
||||
"The ``[requests]`` section controls the way that ``aqt`` makes network "
|
||||
"requests."
|
||||
msgstr "``[requests]`` セクションは、``aqt`` がネットワークリクエストを行う方法を制御します。"
|
||||
|
||||
#: ../../configuration.rst:110
|
||||
msgid "connection_timeout:"
|
||||
msgstr "connection_timeout:"
|
||||
|
||||
#: ../../configuration.rst:109
|
||||
msgid ""
|
||||
"``connection_timeout`` is a timeout in second for connection. It is "
|
||||
"passed to ``requests`` library."
|
||||
msgstr "``connection_timeout`` は接続の秒単位のタイムアウトです。これは``requests``ライブラリに渡されます。"
|
||||
|
||||
#: ../../configuration.rst:114
|
||||
msgid "response_timeout:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:113
|
||||
msgid ""
|
||||
"``response_timeout`` is a timeout in second how much time waiting for "
|
||||
"response. It is passed to ``requests`` library."
|
||||
msgstr "``response_timeout``は応答待ち時間の秒単位のタイムアウトです。これは``requests``ライブラリに渡されます。"
|
||||
|
||||
#: ../../configuration.rst:117
|
||||
msgid "max_retries:"
|
||||
msgstr "max_retries:"
|
||||
|
||||
#: ../../configuration.rst:117
|
||||
msgid "Deprecated; please do not use this setting. It has been replaced by the"
|
||||
msgstr "廃止されました。この設定は使用しないでください。"
|
||||
|
||||
#: ../../configuration.rst:121
|
||||
msgid "max_retries_on_connection_error:"
|
||||
msgstr "max_retries_on_connection_error:"
|
||||
|
||||
#: ../../configuration.rst:120
|
||||
msgid ""
|
||||
"``max_retries_on_connection_error`` is an integer that controls how many "
|
||||
"times ``aqt`` will try to reconnect to the server in the case of a "
|
||||
"connection error."
|
||||
msgstr "``max_retries_on_connection_error`` は、接続エラーが発生した場合に ``aqt`` がサーバに再接続しようとする回数を制御する整数です。"
|
||||
|
||||
#: ../../configuration.rst:127
|
||||
msgid "retry_backoff:"
|
||||
msgstr "retry_backoff:"
|
||||
|
||||
#: ../../configuration.rst:124
|
||||
msgid ""
|
||||
"``retry_backoff`` is a floating point number that controls how long "
|
||||
"``aqt`` will sleep between failed connection attempts. Setting this value"
|
||||
" too low will hammer the server, and may result in no successful "
|
||||
"connections at all."
|
||||
msgstr "``retry_backoff`` は浮動小数点数で、``aqt`` が失敗した接続試行間にスリープする時間を制御します。この値をあまりに低く設定するとサーバに衝撃を与え、接続が全く成功しなくなる可能性があります。"
|
||||
|
||||
#: ../../configuration.rst:132
|
||||
msgid "max_retries_on_checksum_error:"
|
||||
msgstr "max_retries_on_checksum_error:"
|
||||
|
||||
#: ../../configuration.rst:130
|
||||
msgid ""
|
||||
"This setting controls how many times ``aqt`` will attempt to download a "
|
||||
"file, in the case of a checksum error."
|
||||
msgstr "この設定は、チェックサムエラーが発生した場合に ``aqt`` がファイルをダウンロードしようとする回数を制御します。"
|
||||
|
||||
#: ../../configuration.rst:134
|
||||
msgid "The ``[mirrors]`` section is a configuration for mirror handling."
|
||||
msgstr "``[mirrors]`` セクションはミラー処理のための設定です。"
|
||||
|
||||
#: ../../configuration.rst:152
|
||||
msgid "trusted_mirrors:"
|
||||
msgstr "trusted_mirrors:"
|
||||
|
||||
#: ../../configuration.rst:137
|
||||
msgid ""
|
||||
"``trusted_mirrors`` is a list of URLs that you trust to provide accurate "
|
||||
"checksums for all downloaded archives. This is a security feature; please"
|
||||
" do not change this value unless you know what you're doing!"
|
||||
msgstr "``trusted_mirrors`` は、ダウンロードされたすべてのアーカイブに対して正確なチェックサムを提供するために信頼しているURLのリストです。これはセキュリティ機能です。何をしているのかわからない限り、この値を変更しないでください!"
|
||||
|
||||
#: ../../configuration.rst:142
|
||||
msgid ""
|
||||
"``aqtinstall`` downloads all checksums from mirrors in this list. These "
|
||||
"checksums are used to verify that every other file that ``aqtinstall`` "
|
||||
"downloads is, in fact, the correct file, and not a corrupt or malicious "
|
||||
"copy of the file. You may need to modify this list if the default mirrors"
|
||||
" are unreachable, or if you do not trust that they have not been "
|
||||
"compromised."
|
||||
msgstr "``aqtinstall`` は、このリスト内のミラーからすべてのチェックサムをダウンロードします。これらのチェックサムは、``aqtinstall`` がダウンロードする他のすべてのファイルが、実際には正しいファイルであり、そのファイルの不正コピーや悪意のあるコピーではないことを確認するために使用されます。デフォルトのミラーにアクセスできない場合や、ミラーが侵害されていないと信頼できない場合は、このリストを変更する必要があります。"
|
||||
|
||||
#: ../../configuration.rst:149
|
||||
msgid ""
|
||||
"``aqtinstall`` can safely download archive files from the fallback mirror"
|
||||
" list, and ensure that they are not malicious files, by checking them "
|
||||
"against the checksums downloaded from the ``trusted_mirrors`` list. "
|
||||
"``aqtinstall`` uses the SHA-256 algorithm to perform this check."
|
||||
msgstr "``aqtinstall`` は、フォールバックミラーリストからアーカイブファイルを安全にダウンロードし、``trusted_mirrors`` リストからダウンロードしたチェックサムに照らして、それらが悪意のあるファイルでないことを確認することができます。``aqtinstall`` は、SHA-256アルゴリズムを使ってこのチェックを行います。"
|
||||
|
||||
#: ../../configuration.rst:160
|
||||
msgid "blacklist:"
|
||||
msgstr "blacklist:"
|
||||
|
||||
#: ../../configuration.rst:155
|
||||
msgid ""
|
||||
"It is a list of URL where is a problematic mirror site. Some mirror sites"
|
||||
" ignore a connection from IP addresses out of their preffered one. It "
|
||||
"will cause connection error or connection timeout. There are some known "
|
||||
"mirror sites in default. When you are happy with the default sites, you "
|
||||
"can override with your custom settings."
|
||||
msgstr "問題のあるミラーサイトがあるURLのリストです。一部のミラーサイトでは、優先されたIPアドレスからの接続以外が無視されます。接続エラーまたは接続タイムアウトが発生します。既定のミラーサイトには既知のものがあります。既定のサイトに問題がなければ、カスタム設定で上書きできます。"
|
||||
|
||||
#: ../../configuration.rst:164
|
||||
msgid "fallbacks:"
|
||||
msgstr "fallbacks:"
|
||||
|
||||
#: ../../configuration.rst:163
|
||||
msgid ""
|
||||
"It is a list of URL where is a good for access. When mirror site cause an"
|
||||
" error, aqt use fallbacks when possible. You can find a list of mirrors "
|
||||
"at: https://download.qt.io/static/mirrorlist/"
|
||||
msgstr "アクセスに適したURLの一覧です。ミラーサイトでエラーが発生した場合は、可能な場合はフォールバックを使用してください。ミラーの一覧は次の場所で確認できます: https://download.qt.io/static/mirrorlist/"
|
||||
|
||||
667
docs/locale/ja/LC_MESSAGES/getting_started.po
Normal file
667
docs/locale/ja/LC_MESSAGES/getting_started.po
Normal file
@@ -0,0 +1,667 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: ../../getting_started.rst:4
|
||||
msgid "Getting Started"
|
||||
msgstr "スタートアップガイド"
|
||||
|
||||
#: ../../getting_started.rst:6
|
||||
msgid ""
|
||||
"``aqt`` is a tool that can be used to install Qt, modules, tools related "
|
||||
"to Qt, source, docs, and examples, available at https://download.qt.io/. "
|
||||
"Before running ``aqt``, you will need to tell ``aqt`` exactly what you "
|
||||
"want it to install. This section of the documentation is meant to walk "
|
||||
"you through the process of finding out what packages are available to "
|
||||
"``aqt``, so you can tell ``aqt`` what you want to install."
|
||||
msgstr "``aqt`` は、Qt、モジュール、Qtに関連するツール、ソース、ドキュメント、サンプルなどをインストールするためのツールで、https://download.qt.io/ から入手できます。``aqt`` を実行する前に、何をインストールしたいのかを正確に ``aqt`` に指示する必要があります。このセクションでは、どのようなパッケージが ``aqt`` に用意されているのかを調べ、何をインストールしたいのかを ``aqt`` に指示できるようにするための手順を説明します。"
|
||||
|
||||
#: ../../getting_started.rst:13
|
||||
msgid ""
|
||||
"Please note that every ``aqt`` subcommand has a ``--help`` option; please"
|
||||
" use it if you are having trouble!"
|
||||
msgstr "すべての ``aqt`` サブコマンドには ``--help`` オプションがあります。なにか疑問が発生した場合は、このオプションを使用してください!"
|
||||
|
||||
#: ../../getting_started.rst:18
|
||||
msgid "Installing Qt"
|
||||
msgstr "Qtをインストールする"
|
||||
|
||||
#: ../../getting_started.rst:20
|
||||
msgid "General usage of ``aqt`` looks like this:"
|
||||
msgstr "``aqt``の一般的な使い方は以下のようになります:"
|
||||
|
||||
#: ../../getting_started.rst:26
|
||||
msgid ""
|
||||
"If you have installed ``aqt`` with pip, you can run it with the command "
|
||||
"script ``aqt``, but in some cases you may need to run it as ``python -m "
|
||||
"aqt``. Some older operating systems may require you to specify Python "
|
||||
"version 3, like this: ``python3 -m aqt``."
|
||||
msgstr "pipと一緒に``aqt``をインストールしている場合は、コマンドスクリプト``aqt``で実行することができますが、場合によっては``python-m aqt``として実行する必要があるかもしれません。古いオペレーティングシステムでは、``python3-m aqt``のようにPythonバージョン3を指定する必要があるかもしれません。"
|
||||
|
||||
#: ../../getting_started.rst:30
|
||||
msgid "To use ``aqt`` to install Qt, you will need to tell ``aqt`` four things:"
|
||||
msgstr "Qtをインストールするには、``aqt`` に次の4つのことを伝える必要があります。"
|
||||
|
||||
#: ../../getting_started.rst:32 ../../getting_started.rst:410
|
||||
msgid "The host operating system (windows, mac, or linux)"
|
||||
msgstr "ホストオペレーティングシステム(Windows、Mac、Linux)"
|
||||
|
||||
#: ../../getting_started.rst:33 ../../getting_started.rst:411
|
||||
msgid "The target SDK (desktop, android, ios, or winrt)"
|
||||
msgstr "ターゲットSDK(デスクトップ、android、ios、winrt)"
|
||||
|
||||
#: ../../getting_started.rst:34
|
||||
msgid "The version of Qt you would like to install"
|
||||
msgstr "インストールしたいQtのバージョン"
|
||||
|
||||
#: ../../getting_started.rst:35
|
||||
msgid "The target architecture"
|
||||
msgstr "ターゲット・アーキテクチャ"
|
||||
|
||||
#: ../../getting_started.rst:37
|
||||
msgid ""
|
||||
"Keep in mind that Qt for IOS is only available on Mac OS, and Qt for "
|
||||
"WinRT is only available on Windows."
|
||||
msgstr "Qt for IOSはMac OSでのみ利用可能であり、Qt for WinRTはWindowsでのみ利用可能であることに注意してください。"
|
||||
|
||||
#: ../../getting_started.rst:40
|
||||
msgid ""
|
||||
"To find out what versions of Qt are available, you can use the :ref:`aqt "
|
||||
"list-qt command <list-qt command>`. This command will print all versions "
|
||||
"of Qt available for Windows Desktop:"
|
||||
msgstr "利用可能なQtのバージョンを調べるには、 :ref:`aqt list-qt command <list-qt command>` を使うことができます。このコマンドはWindowsデスクトップで利用可能なQtのすべてのバージョンを出力します:"
|
||||
|
||||
#: ../../getting_started.rst:57
|
||||
msgid ""
|
||||
"Notice that the version numbers are sorted, grouped by minor version "
|
||||
"number, and separated by a single space-character. The output of all of "
|
||||
"the :ref:`aqt list-qt <list-qt command>` commands is intended to make it "
|
||||
"easier for you to write programs that consume the output of :ref:`aqt "
|
||||
"list-qt <list-qt command>`."
|
||||
msgstr "バージョン番号がソートされ、マイナーバージョン番号でグループ化され、1つのスペース文字で区切られていることに注意してください。すべての :ref:`aqt list-qt <list-qt command>` コマンドの出力は、 :ref:`aqt list-qt <list-qt command>` の出力を消費するプログラムを作成しやすくするためのものです。"
|
||||
|
||||
#: ../../getting_started.rst:62
|
||||
msgid ""
|
||||
"Because the :ref:`aqt list-qt <list-qt command>` command directly queries"
|
||||
" the Qt downloads repository at https://download.qt.io/, the results of "
|
||||
"this command will always be accurate. The `Available Qt versions`_ wiki "
|
||||
"page was last modified at some point in the past, so it may or may not be"
|
||||
" up to date."
|
||||
msgstr ":ref:`aqt list-qt <list-qt command>` コマンドは https://download.qt.io/ にあるQtダウンロードリポジトリに直接問い合わせますので、このコマンドの結果は常に正確になります。`Available Qt versions`_ wikiページは過去のある時点での更新ですので、最新であるかどうかは保障されません。"
|
||||
|
||||
#: ../../getting_started.rst:69
|
||||
msgid ""
|
||||
"Now that we know what versions of Qt are available, let's choose version "
|
||||
"6.2.0."
|
||||
msgstr "使用可能なQtのバージョンがわかったので、バージョン6.2.0を選択します。"
|
||||
|
||||
#: ../../getting_started.rst:71
|
||||
msgid ""
|
||||
"The next thing we need to do is find out what architectures are available"
|
||||
" for Qt 6.2.0 for Windows Desktop. To do this, we can use :ref:`aqt list-"
|
||||
"qt <list-qt command>` with the ``--arch`` flag:"
|
||||
msgstr "次にすべきことは、Qt 6.2.0 for Windows Desktopで利用可能なアーキテクチャを見つけることです。これを行うには、:ref:`aqt list-qt <list-qt command>` に ``--arch`` フラグを付けて確認します:"
|
||||
|
||||
#: ../../getting_started.rst:80
|
||||
msgid ""
|
||||
"Notice that this is a very small subset of the architectures listed in "
|
||||
"the `Available Qt versions`_ wiki page. If we need to use some "
|
||||
"architecture that is not on this list, we can use the `Available Qt "
|
||||
"versions`_ wiki page to get a rough idea of what versions support the "
|
||||
"architecture we want, and then use :ref:`aqt list-qt <list-qt command>` "
|
||||
"to confirm that the architecture is available."
|
||||
msgstr "これは `Available Qt versions`_ wikiページにリストされているアーキテクチャの非常に小さなサブセットであることに注意してください。このリストにないアーキテクチャを使用する必要がある場合は、`Available Qt versions`_ wikiページを使用して、どのバージョンが希望するアーキテクチャをサポートしているかの大まかなアイデアを得てから、 :ref:`aqt list-qt <list-qt command>` を使用して、アーキテクチャが使用可能であることを確認します。"
|
||||
|
||||
#: ../../getting_started.rst:86
|
||||
msgid ""
|
||||
"Let's say that we want to install Qt 6.2.0 with architecture "
|
||||
"`win64_mingw81`. The installation command we need is:"
|
||||
msgstr "Qt 6.2.0を `win64_mingw81` アーキテクチャでインストールしたいとします。必要なインストールコマンドは以下のとおりです。"
|
||||
|
||||
#: ../../getting_started.rst:93
|
||||
msgid ""
|
||||
"Let's say that we want to install the next version of Qt 6.2 as soon as "
|
||||
"it is available. We can do this by using a `SimpleSpec <https://python-"
|
||||
"semanticversion.readthedocs.io/en/latest/reference.html#semantic_version.SimpleSpec>`_"
|
||||
" instead of an explicit version:"
|
||||
msgstr "Qt 6.2の次のバージョンが利用可能になったらすぐにインストールしたいとしましょう。これを行うには、明示的なバージョンではなく `SimpleSpec <https://python-semanticversion.readthedocs.io/en/latest/reference.html#semantic_version.SimpleSpec>`_ を使用します。"
|
||||
|
||||
#: ../../getting_started.rst:104
|
||||
msgid "External 7-zip extractor"
|
||||
msgstr "7-Zip 解凍 外部 コマンド"
|
||||
|
||||
#: ../../getting_started.rst:106
|
||||
msgid ""
|
||||
"By default, ``aqt`` extracts the 7zip archives stored in the Qt "
|
||||
"repository using py7zr_, which is installed alongside ``aqt``. You can "
|
||||
"specify an alternate 7zip command path instead by using the ``-E`` or "
|
||||
"``--external`` flag. For example, you could use 7-zip_ on a Windows "
|
||||
"desktop, using this command:"
|
||||
msgstr "デフォルトでは、``aqt`` はQtリポジトリに保存されている 7-zipアーカイブを、 ``aqt`` と一緒にインストールされている py7zr_ を使って抽出します。代わりに、 ``-E`` または ``--external`` フラグを使って7-zipコマンドパスを指定することもできます。例えば、Windowsデスクトップで次のコマンドを使って 7-zip_ を使うことができます。"
|
||||
|
||||
#: ../../getting_started.rst:115
|
||||
msgid ""
|
||||
"On Linux, you can specify p7zip_, a Linux port of 7-zip_, which is often "
|
||||
"installed by default, using this command:"
|
||||
msgstr "Linuxでは、次のコマンドを使用して p7zip_ (Linuxに移植された 7-zip_ )を指定できます。これはデフォルトでインストールされることが多い 7-zip_ です。"
|
||||
|
||||
#: ../../getting_started.rst:127
|
||||
msgid "Changing the output directory"
|
||||
msgstr "出力ディレクトリの変更"
|
||||
|
||||
#: ../../getting_started.rst:129
|
||||
msgid ""
|
||||
"By default, ``aqt`` will install all of the Qt packages into the current "
|
||||
"working directory, in the subdirectory ``./<Qt version>/<arch>/``. For "
|
||||
"example, if we install Qt 6.2.0 for Windows desktop with arch "
|
||||
"`win64_mingw81`, it would end up in ``./6.2.0/win64_mingw81``."
|
||||
msgstr "デフォルトでは、``aqt`` はすべてのQtパッケージを現在の作業ディレクトリのサブディレクトリ ``./<Qt version>/<arch>/`` にインストールします。例えば、Qt 6.2.0 for Windows desktopをarch `win64_mingw81` でインストールすると、その結果は ``./6.2.0/win64_mingw81`` になります。"
|
||||
|
||||
#: ../../getting_started.rst:134
|
||||
msgid ""
|
||||
"If you would prefer to install it to another location, you will need to "
|
||||
"use the ``-O`` or ``--outputdir`` flag. This option also works for all of"
|
||||
" the other subcommands that begin with ``aqt install-``."
|
||||
msgstr "別の場所にインストールしたい場合は、``-O`` または ``--outputdir`` フラグを使う必要があります。このオプションは、``aqt install-`` で始まる他のすべてのサブコマンドにも使えます。"
|
||||
|
||||
#: ../../getting_started.rst:139
|
||||
msgid ""
|
||||
"To install to ``C:\\Qt``, the default directory used by the standard gui "
|
||||
"installer, you may use this command:"
|
||||
msgstr "純正のGUIインストーラが使うデフォルトのディレクトリである ``C:\\Qt`` にインストールするには、以下のコマンドを使います:"
|
||||
|
||||
#: ../../getting_started.rst:149
|
||||
msgid "Installing Modules"
|
||||
msgstr "モジュールのインストール"
|
||||
|
||||
#: ../../getting_started.rst:151
|
||||
msgid ""
|
||||
"Let's say we need to install some modules for Qt 5.15.2 on Windows "
|
||||
"Desktop. First we need to find out what the modules are called, and we "
|
||||
"can do that with :ref:`aqt list-qt <list-qt command>` with the "
|
||||
"``--modules`` flag. Each version of Qt has a different list of modules "
|
||||
"for each host OS/ target SDK/ architecture combination, so we will need "
|
||||
"to supply :ref:`aqt list-qt <list-qt command>` with that information:"
|
||||
msgstr "Qt 5.15.2用のモジュールをWindows デスクトップにインストールする必要があるとします。まず、モジュールが何と呼ばれているかを調べる必要があります。そのためには :ref:`aqt list-qt <list-qt command>` と ``--modules`` フラグを使用します。Qtの各バージョンには、ホストOS/ターゲットSDK/アーキテクチャの組み合わせごとに異なるモジュールリストがあるので、その情報を :ref:`aqt list-qt <list-qt command>` に提供する必要があります:"
|
||||
|
||||
#: ../../getting_started.rst:163
|
||||
msgid ""
|
||||
"Let's say that we want to know more about these modules before we install"
|
||||
" them. We can use the ``--long-modules`` flag for that:"
|
||||
msgstr "これらのモジュールをインストールする前に、これらのモジュールについてもっと知りたいとしましょう。そのためには ``--long-modules`` フラグを使うことができます:"
|
||||
|
||||
#: ../../getting_started.rst:183
|
||||
msgid ""
|
||||
"Note that if your terminal is wider than 95 characters, this command will"
|
||||
" show release dates and sizes in extra columns to the right. If you try "
|
||||
"this, you will notice that `debug_info` is 5.9 gigabytes installed."
|
||||
msgstr "端末の表示幅が95文字以上の場合、このコマンドはリリース日とサイズを右側のスペースに表示します。これを試してみると、``debug_info`` では、5.9ギガバイトがインストールされることに気付くでしょう。"
|
||||
|
||||
#: ../../getting_started.rst:187
|
||||
msgid ""
|
||||
"Let's say that we want to install `qtcharts` and `qtnetworkauth`. We can "
|
||||
"do that by using the `-m` flag with the :ref:`aqt install-qt <qt "
|
||||
"installation command>` command. This flag receives the name of at least "
|
||||
"one module as an argument:"
|
||||
msgstr "``qtcharts``と ``qtnetworkauth`` をインストールしたいとします。これは :ref:`aqt install-qt <qt installation command>` コマンドで ``-m`` フラグを使うことでできます。このフラグは少なくとも1つのモジュールの名前を引数として受け取ります:"
|
||||
|
||||
#: ../../getting_started.rst:195
|
||||
msgid ""
|
||||
"If we wish to install all the modules that are available, we can do that "
|
||||
"with the ``all`` keyword:"
|
||||
msgstr "利用可能なすべてのモジュールをインストールしたい場合は、``all`` キーワードでインストールできます。"
|
||||
|
||||
#: ../../getting_started.rst:201
|
||||
msgid ""
|
||||
"Remember that the :ref:`aqt list-qt <list-qt command>` command is meant "
|
||||
"to be scriptable? One way to install all modules available for Qt 5.15.2 "
|
||||
"is to send the output of :ref:`aqt list-qt <list-qt command>` into "
|
||||
":ref:`aqt install-qt <qt installation command>`, like this:"
|
||||
msgstr ":ref:`aqt list-qt <list-qt command>` コマンドは、スクリプト化できるように意図して作られていることを覚えていますか?Qt 5.15.2で利用可能なすべてのモジュールをインストールする1つの方法は :ref:`aqt list-qt <list-qt command>` の出力を :ref:`aqt install-qt <qt installation command>` に以下のように送ることです:"
|
||||
|
||||
#: ../../getting_started.rst:210
|
||||
msgid ""
|
||||
"You will need a Unix-style shell to run this command, or at least git-"
|
||||
"bash on Windows. The ``xargs`` equivalent to this command is an exercise "
|
||||
"left to the reader."
|
||||
msgstr "このコマンドを実行するにはUnixスタイルのシェルが必要ですし、Windowsでは少なくともgit-bashが必要です。この ``xargs`` に相当するコマンドは、読者の練習課題です。"
|
||||
|
||||
#: ../../getting_started.rst:213
|
||||
msgid ""
|
||||
"If you want to install all available modules, you are probably better off"
|
||||
" using the ``all`` keyword, as discussed above. This scripting example is"
|
||||
" presented to give you a sense of how to accomplish something more "
|
||||
"complicated. Perhaps you want to install all modules except "
|
||||
"`qtnetworkauth`; you could write a script that removes `qtnetworkauth` "
|
||||
"from the output of :ref:`aqt list-qt <list-qt command>`, and pipe that "
|
||||
"into :ref:`aqt install-qt <qt installation command>`. This exercise is "
|
||||
"left to the reader."
|
||||
msgstr "利用可能なモジュールをすべてインストールしたい場合は、上で説明したように、「all」キーワードを使った方が良いでしょう。このスクリプト例は、より複雑なことを実現する方法を理解するためのものです。:ref:`aqt list-qt <list-qt command>` の出力から `qtnetworkauth` を削除するスクリプトを書いて、それを :ref:`aqt install-qt <qt installation command>` にパイプで渡すことができます。これは読者の練習課題です。"
|
||||
|
||||
#: ../../getting_started.rst:223
|
||||
msgid "Installing Qt for Android"
|
||||
msgstr "Android用Qtのインストール"
|
||||
|
||||
#: ../../getting_started.rst:225
|
||||
msgid ""
|
||||
"Let's install Qt for Android. Installing Qt 5 will be similar to "
|
||||
"installing Qt for Desktop on Windows, but there will be differences when "
|
||||
"we get to Qt 6."
|
||||
msgstr "Qt for Androidをインストールしてみましょう。Qt 5のインストールはWindows上のQt for Desktopのインストールと似ていますが、Qt 6では違いがあります。"
|
||||
|
||||
#: ../../getting_started.rst:243
|
||||
msgid ""
|
||||
"Let's see what happens when we try to list architectures and modules for "
|
||||
"Qt 6:"
|
||||
msgstr "Qt 6のアーキテクチャとモジュールをリストアップしようとすると何が起こるか見てみましょう。"
|
||||
|
||||
#: ../../getting_started.rst:257
|
||||
msgid ""
|
||||
"The Qt 6 for Android repositories are a little different than the Qt 5 "
|
||||
"repositories, and the :ref:`aqt list-qt <list-qt command>` tool doesn't "
|
||||
"know where to look for modules and architectures if you don't tell it "
|
||||
"what architecture you need. I know, it sounds a little backwards, but "
|
||||
"that's how the Qt repo was put together."
|
||||
msgstr "Qt 6 for AndroidリポジトリはQt 5リポジトリとは少し異なり、 :ref:`aqt list-qt <list-qt command>` ツールは、必要なアーキテクチャを教えなければ、モジュールやアーキテクチャを探す場所を知りません。少し機能後退したように聞こえますが、それがQtリポジトリが組み立てられた方法です。"
|
||||
|
||||
#: ../../getting_started.rst:262
|
||||
msgid ""
|
||||
"There are four architectures available, and the error message from "
|
||||
":ref:`aqt list-qt <list-qt command>` just told us what they are: "
|
||||
"`x86_64`, `x86`, `armv7`, and `arm64_v8a`."
|
||||
msgstr "利用可能なアーキテクチャは4つありますが、:ref:`aqt list-qt <list-qt command>` のエラーメッセージが、その4つを教えてくれます: `x86_64`、`x86`、`armv7`、`arm64_v8a`です。"
|
||||
|
||||
#: ../../getting_started.rst:265
|
||||
msgid ""
|
||||
"We know we want to use `armv7` for the architecture, but we don't know "
|
||||
"exactly what value for 'architecture' we need to pass to :ref:`aqt "
|
||||
"install-qt <qt installation command>` yet, so we will use :ref:`aqt list-"
|
||||
"qt <list-qt command>` again:"
|
||||
msgstr "アーキテクチャに ``armv7`` を使いたいことはわかっていますが、:ref:`aqt install-qt <qt installation command>` に渡す必要のある'アーキテクチャ'の値が正確にはまだ分からないので、もう一度 :ref:`aqt list-qt <list-qt command>` を使います:"
|
||||
|
||||
#: ../../getting_started.rst:274
|
||||
msgid ""
|
||||
"You should be thinking, \"Well, that was silly. All it did was add "
|
||||
"`android_` to the beginning of the architecture I gave it. Why do I need "
|
||||
"to use ``aqt list-qt --arch`` for that?\" The answer is, ``aqt list-qt "
|
||||
"--arch`` is checking to see what actually exists in the Qt repository. If"
|
||||
" it prints an error message, instead of the obvious `android_armv7`, we "
|
||||
"would know that Qt 6.2.0 for that architecture doesn't exist for some "
|
||||
"reason, and any attempt to install it with :ref:`aqt install-qt <qt "
|
||||
"installation command>` will fail."
|
||||
msgstr "「ばかげている」そう思われるかもしれません。「私が引数に付与したアーキテクチャの最初に `android_` を 追加しただけだ。なぜそのために`aqt list-qt--arch`を使う必要があるのか?」おそらく、そう考えるでしょう。 その答えは、``aqt list-qt-arch`` はQtリポジトリに実際に何が存在するかをチェックしているということです。期待した ``android_armv7`` の出力ではなくエラーメッセージが出力された場合、Qt 6.2.0のそのアーキテクチャ用のパッケージが何らかの理由で存在しないことがわかります。そのため、:ref:`aqt install-qt <qt installation command>`でインストールしようとすると失敗します。"
|
||||
|
||||
#: ../../getting_started.rst:282
|
||||
msgid ""
|
||||
"If we want to install Qt 6.2.0 for armv7, we use this command to print "
|
||||
"available modules:"
|
||||
msgstr "armv7用のQt 6.2.0をインストールしたい場合は、次のコマンドを使って利用可能なモジュールを出力します。"
|
||||
|
||||
#: ../../getting_started.rst:292
|
||||
msgid ""
|
||||
"Finally, let's install Qt 6.2.0 for Android armv7 with the ``qtcharts`` "
|
||||
"and ``qtnetworkauth`` modules:"
|
||||
msgstr "最後に、``qtcharts`` と ``qtnetworkauth`` モジュールとともに、Qt 6.2.0 for Android armv7をインストールしましょう。"
|
||||
|
||||
#: ../../getting_started.rst:299
|
||||
msgid ""
|
||||
"Please note that when you install Qt for android or ios, the installation"
|
||||
" will not be functional unless you install the corresponding desktop "
|
||||
"version of Qt alongside it. You can do this automatically with the "
|
||||
"``--autodesktop`` flag:"
|
||||
msgstr "Qt for androidまたはiosをインストールする場合、対応するデスクトップバージョンのQtを一緒にインストールしない限り、正しく機能しないことに注意してください。``--autodesktop`` フラグをつけることで、自動的にデスクトップバージョンのインストールを実行できます:"
|
||||
|
||||
#: ../../getting_started.rst:308
|
||||
msgid "Installing Qt for WASM"
|
||||
msgstr "WASM用Qtのインストール"
|
||||
|
||||
#: ../../getting_started.rst:310
|
||||
msgid ""
|
||||
"To find out how to install Qt for WASM, we need to tell :ref:`aqt list-qt"
|
||||
" <list-qt command>` that we are using the `wasm` architecture. We can do "
|
||||
"that by using the ``--extension wasm`` flag."
|
||||
msgstr "Qt for WASMをインストールする方法を知るためには、:ref:`aqt list-q t<list-qt command>` に、私たちが ``wasm`` アーキテクチャを使いたい、ということを伝える必要があります。``--extension wasm`` フラグを使うことで、指定できます。"
|
||||
|
||||
#: ../../getting_started.rst:320
|
||||
msgid ""
|
||||
"There are only a few versions of Qt that support WASM, and they are only "
|
||||
"available for desktop targets. If we tried this command with `android`, "
|
||||
"`winrt`, or `ios` targets, we would have seen an error message."
|
||||
msgstr "WASMをサポートするQtのバージョンはわずかしかなく、デスクトップターゲットでのみ利用できます。このコマンドを`android`、`winrt`、`ios`ターゲットで実行すると、エラーメッセージが表示されます。"
|
||||
|
||||
#: ../../getting_started.rst:324
|
||||
msgid "We can check the architecture and modules available as before:"
|
||||
msgstr "以前と同様に、利用可能なアーキテクチャとモジュールを確認できます。"
|
||||
|
||||
#: ../../getting_started.rst:335
|
||||
msgid "We can install Qt for WASM as before:"
|
||||
msgstr "以前と同じようにQt for WASMをインストールできます。"
|
||||
|
||||
#: ../../getting_started.rst:343
|
||||
msgid "Installing Tools"
|
||||
msgstr "ツールをインストールする"
|
||||
|
||||
#: ../../getting_started.rst:345
|
||||
msgid ""
|
||||
"Let's find out what tools are available for Windows Desktop by using the "
|
||||
":ref:`aqt list-tool <list-tool command>` command:"
|
||||
msgstr ":ref:`aqt list-tool <list-tool command>` コマンドを使って、Windows Desktopで利用できるツールを調べてみましょう。"
|
||||
|
||||
#: ../../getting_started.rst:364
|
||||
msgid "Let's see what tool variants are available in `tools_mingw`:"
|
||||
msgstr "``tools_mingw`` で利用できるツールのバリエーションを見てみましょう:"
|
||||
|
||||
#: ../../getting_started.rst:380
|
||||
msgid ""
|
||||
"This gives us a list of things that we could install using :ref:`aqt "
|
||||
"install-tool <tools installation command>`. Let's see some more details, "
|
||||
"using the ``-l`` or ``--long`` flag:"
|
||||
msgstr "このコマンドの出力は、以下の :ref:`aqt install-tool <Tools installation command>` で使える値のリストになります。以下のように、``--l`` または ``--long`` フラグを使用して詳細を調べてみましょう。"
|
||||
|
||||
#: ../../getting_started.rst:401
|
||||
msgid ""
|
||||
"The ``-l`` flag causes :ref:`aqt list-tool <list-tool command>` to print "
|
||||
"a table that shows plenty of data pertinent to each tool variant "
|
||||
"available in `tools_mingw`. :ref:`aqt list-tool <list-tool command>` "
|
||||
"additionally prints the 'Display Name' and 'Description' for each tool if"
|
||||
" your terminal is wider than 95 characters; terminals that are narrower "
|
||||
"than this cannot display this table in a readable way."
|
||||
msgstr ":ref:`aqt list-tool <list-tool command>` は、``tools_mingw`` で利用可能な各ツールに関連する、豊富なデータが含まれるテーブルを出力します。:ref:`aqt list-tool <list-tool command>` は、端末の幅が95文字より広い場合、各ツールの 「表示名」と「説明」を出力します。これより表示幅の狭い端末では、このテーブルを読みやすい形で表示することはできません。"
|
||||
|
||||
#: ../../getting_started.rst:407
|
||||
msgid ""
|
||||
"Now let's install `mingw`, using the :ref:`aqt install-tool <tools "
|
||||
"installation command>` command. This command receives four parameters:"
|
||||
msgstr "では、:ref:`aqt install-tool <tools installation command>` コマンドを使って`mingw`をインストールしましょう。このコマンドは4つのパラメータを受け取ります:"
|
||||
|
||||
#: ../../getting_started.rst:412
|
||||
msgid "The name of the tool (this is `tools_mingw` in our case)"
|
||||
msgstr "ツールの名前(この例では`tools_mingw`です)"
|
||||
|
||||
#: ../../getting_started.rst:413
|
||||
msgid ""
|
||||
"(Optional) The tool variant name. We saw a list of these when we ran "
|
||||
":ref:`aqt list-tool <list-tool command>` with the `tool name` argument "
|
||||
"filled in."
|
||||
msgstr "(オプション)ツールのバリアント名。:ref:`aqt list-tool <list-tool command>` を`tool name` 引数つきで実行したときに、リストに表示されます。"
|
||||
|
||||
#: ../../getting_started.rst:416
|
||||
msgid "To install `mingw`, you could use this command (please don't):"
|
||||
msgstr "`mingw`をインストールするためには、以下のコマンドを使えます(が、使わないでください):"
|
||||
|
||||
#: ../../getting_started.rst:422
|
||||
msgid ""
|
||||
"Using this command will install every tool variant available in "
|
||||
"`tools_mingw`; in this case, you would install 10 different versions of "
|
||||
"the same tool. For some tools, like `qtcreator` or `ifw`, this is an "
|
||||
"appropriate thing to do, since each tool variant is a different program. "
|
||||
"However, for tools like `mingw` and `vcredist`, it would make more sense "
|
||||
"to use :ref:`aqt list-tool <list-tool command>` to see what tool variants"
|
||||
" are available, and then install just the tool variant you are interested"
|
||||
" in, like this:"
|
||||
msgstr "このコマンドを使用すると、`tools_mingw` で利用可能なすべてのツールバリエーションがインストールされます。この場合、同じツールの10種類の異なるバージョンをインストールすることになります。``qtcreator`` や ``ifw`` のようないくつかのツールでは、それぞれのツールバリエーションが異なるプログラムなので、これは適切なことです。。しかし、``mingw``や``vcredist``のようなツールでは、:ref:`aqt list-tool <list-tool command>` を使ってどんなバリエーションが利用可能か調べてから、必要なツールのバリエーションだけをインストールする方が理にかなっています:"
|
||||
|
||||
#: ../../getting_started.rst:435
|
||||
msgid ""
|
||||
"Please note that ``aqt install-tool`` does not recognize the "
|
||||
"``installscript.qs`` related to each tool. When you install these tools "
|
||||
"with the standard gui installer, the installer may use the "
|
||||
"``installscript.qs`` script to make additional changes to your system. If"
|
||||
" you need those changes to occur, it will be your responsibility to make "
|
||||
"those changes happen, because ``aqt`` is not capable of running this "
|
||||
"script."
|
||||
msgstr "``aqt install-tool`` は、各ツールに関連する``installscript.qs`` を認識しないことに注意してください。これらのツールを標準のGUIインストーラでインストールする場合、インストーラは``installscript.qs`` スクリプトを使ってシステムに追加の変更を加えることができます。これらの変更が必要な場合、``aqt`` はこのスクリプトを実行することができないので、変更を加えるのはあなたの責任になります。"
|
||||
|
||||
#: ../../getting_started.rst:443
|
||||
msgid "Installing a subset of Qt archives [Advanced]"
|
||||
msgstr "Qtアーカイブのサブセットをインストールする[上級編]"
|
||||
|
||||
#: ../../getting_started.rst:446
|
||||
msgid "Introduction"
|
||||
msgstr "はじめに"
|
||||
|
||||
#: ../../getting_started.rst:448
|
||||
msgid ""
|
||||
"You may have noticed that by default, ``aqt install-qt`` installs a lot "
|
||||
"of archives that you may or may not need, and a typical installation can "
|
||||
"take up more disk space than necessary. If you installed the module "
|
||||
"``debug_info``, it may have installed more than 1 gigabyte of data. This "
|
||||
"section will help you to reduce the footprint of your Qt installation."
|
||||
msgstr "お気づきかもしれませんが、デフォルトでは ``aqt install-qt`` は多くのアーカイブをインストールしますが、その必要はないかもしれませんし、一般的なインストールでは必要以上のディスク容量を消費します。モジュール ``debug_info`` をインストールした場合、1 GB以上のデータがインストールされている可能性があります。この節では、Qtインストールのフットプリントを減らすための手助けをします。"
|
||||
|
||||
#: ../../getting_started.rst:456
|
||||
msgid ""
|
||||
"Be careful about using the ``--archives`` flag; it is marked `Advanced` "
|
||||
"for a reason! It is very easy to misuse this command and end up with a Qt"
|
||||
" installation that is missing the components that you need. Don't use it "
|
||||
"unless you know what you are doing!"
|
||||
msgstr "``--archives`` フラグの使用には注意してください。`Advanced` とマークされているのは理由があります! このコマンドを誤用しますと、必須コンポーネントがない不完全なQtインストール結果になります。自分が何をしているのかわかっていない限り、使用しないでください!"
|
||||
|
||||
#: ../../getting_started.rst:463
|
||||
msgid "Minimum Qt Installation"
|
||||
msgstr "Qtの最小インストール"
|
||||
|
||||
#: ../../getting_started.rst:465
|
||||
msgid ""
|
||||
"Normally, when you run ``aqt install-qt``, the program will print a long "
|
||||
"list of archives that it is downloading, extracting, and installing, "
|
||||
"including ``qtbase``, ``qtmultimedia``, ``qt3d``, and ~25 more items. We "
|
||||
"can use the ``--archives`` flag to choose which of these archives we will"
|
||||
" actually install. The ``--archives`` flag can only affect two modules: "
|
||||
"the base Qt installation and the ``debug_info`` module."
|
||||
msgstr "通常、``aqt install-qt`` を実行すると、このプログラムはダウンロード、抽出、インストールしているアーカイブの長いリストを出力します。このリストには、``qtbase``、``qtmultimedia``、``qt3d``、そして約25項目が含まれています。これらのアーカイブのどれを実際にインストールするかは、``--archives`` フラグを使って選択することができます。 ``--archives`` フラグは、Qtの基本インストールモジュールと``debug_info``モジュールの2つのモジュールにしか影響しません。"
|
||||
|
||||
#: ../../getting_started.rst:473
|
||||
msgid ""
|
||||
"In this documentation, **\"modules\"**, **\"archives\"**, and **\"the "
|
||||
"base Qt installation\"** refer to different things, and are defined here:"
|
||||
msgstr "このドキュメントでは、**\"modules\"**, **\"archives\"**, **\"base Qt installation\"** はそれぞれ別のものを指しており、ここで定義されています:"
|
||||
|
||||
#: ../../getting_started.rst:476
|
||||
msgid ""
|
||||
"**Archives**: In this context, an **archive** is a bundle of files "
|
||||
"compressed with the 7zip algorithm. It exists on a disk drive as a file "
|
||||
"with the extension ``.7z``."
|
||||
msgstr "**Archives**: このコンテキストでは、**Archive** は 7-zipで圧縮されたファイルのバンドルです。これはディスクドライブ上に拡張子``.7z``\"のファイルとして存在します。"
|
||||
|
||||
#: ../../getting_started.rst:480
|
||||
msgid ""
|
||||
"**Modules**: The Qt repository organizes groups of archives into modules."
|
||||
" A **module** contains one or more **archives**."
|
||||
msgstr "**Modules**: Qtリポジトリが一連のアーカイブをモジュールとして編成しています。**module** には、ひとつか複数の **archives** が含まれます。"
|
||||
|
||||
#: ../../getting_started.rst:483
|
||||
msgid ""
|
||||
"**the base Qt installation**: By definition, this is just another "
|
||||
"**module** that contains 20-30 **archives**. This documentation refers to"
|
||||
" it as **the base Qt installation** instead of a **module** for several "
|
||||
"reasons:"
|
||||
msgstr "**the base Qt installation**: 定義上、これは20から30の**archives** を含む単なる **module** です。このドキュメントでは、さまざまな事情から**module**ではなく、 **the base Qt installation** とよんでいます。"
|
||||
|
||||
#: ../../getting_started.rst:488
|
||||
msgid "The ``aqt install-qt`` installs this module by default."
|
||||
msgstr "``aqt install-qt`` はデフォルトでこのモジュールをインストールします。"
|
||||
|
||||
#: ../../getting_started.rst:489
|
||||
msgid "You cannot specify this module with ``aqt install-qt --modules``."
|
||||
msgstr "このモジュールを``aqt install-qt --modules`` で指定することはできません。"
|
||||
|
||||
#: ../../getting_started.rst:490
|
||||
msgid ""
|
||||
"The ``aqt list-qt --modules`` command is incapable of printing this "
|
||||
"module."
|
||||
msgstr "``aqt list-qt--modules`` コマンドはこのモジュールの説明を表示できません。"
|
||||
|
||||
#: ../../getting_started.rst:491
|
||||
msgid ""
|
||||
"``aqt`` transforms the names of modules as they exist in the Qt "
|
||||
"repository so that they are easier to read and write. If the name of "
|
||||
"**the base Qt installation** were transformed using the same rules, the "
|
||||
"name would be empty."
|
||||
msgstr "``aqt`` はQtリポジトリに存在するモジュールの名前を読みやすく書きやすくするために変換します。**the base Qt installation** の名前を同じ規則を使って変換された場合、名前は空になります。"
|
||||
|
||||
#: ../../getting_started.rst:496
|
||||
msgid ""
|
||||
"The fully-qualified name of the **base Qt installation** module is "
|
||||
"usually something like ``qt.qt6.620.gcc_64``. The fully-qualified name of"
|
||||
" the ``qtcharts`` module could be something like "
|
||||
"``qt.qt6.620.qtcharts.gcc_64``. It would be difficult to read and write a"
|
||||
" list of 20 modules with the prefix ``qt.qt6.620.`` and the suffix "
|
||||
"``.gcc_64``, because these parts are repetitive and not meaningful. Only "
|
||||
"the ``qtcharts`` part is useful."
|
||||
msgstr "**base Qt installation** モジュールの完全修飾名は通常、``qt.qt6.620.gcc_64`` のようなものです。``qtcharts`` モジュールの完全修飾名は通常、``qt.qt6.620.qtcharts.gcc_64`` のようなものです。プレフィックス ``qt.qt6.620.``とサフィックス``.gcc_64``を持つ20個のモジュールのリストを読み書きするのは難しいでしょう。なぜならこれらの部分は反復的で意味がないからです。ただ``qtcharts`` の部分だけが役に立つからです。"
|
||||
|
||||
#: ../../getting_started.rst:504
|
||||
msgid ""
|
||||
"Let's say that we want to install Qt 5.15.2 for Linux desktop, using the "
|
||||
"gcc_64 architecture. The ``qtbase`` archive includes the bare minimum for"
|
||||
" a working Qt installation, and we can install it alone with the "
|
||||
"``--archives`` flag:"
|
||||
msgstr "gcc_64アーキテクチャを使ってQt 5.15.2をLinuxデスクトップにインストールしたいとしましょう。``qtbase`` アーカイブには、動作中のQtインストールに最低限必要なものが含まれています。また、``--archives`` フラグを付けて単独でインストールすることもできます。"
|
||||
|
||||
#: ../../getting_started.rst:512
|
||||
msgid ""
|
||||
"This time, ``aqt install-qt`` will only install one archive, ``qtbase``, "
|
||||
"instead of the ~27 archives it installs by default."
|
||||
msgstr "今回、``aqt install-qt``は、デフォルトでインストールされる約27のアーカイブではなく、``qtbase``という1つのアーカイブだけをインストールします。"
|
||||
|
||||
#: ../../getting_started.rst:516
|
||||
msgid "Installing More Than The Bare Minimum"
|
||||
msgstr "最小インストール数を超えるインストール"
|
||||
|
||||
#: ../../getting_started.rst:518
|
||||
msgid ""
|
||||
"Let's say that the ``qtbase`` archive is missing some features that you "
|
||||
"need. Using the ``--archives qtbase`` flag causes ``aqt install-qt`` to "
|
||||
"omit roughly 27 archives. We can print a list of these archives with the "
|
||||
"``aqt list-qt --archives`` command:"
|
||||
msgstr "``qtbase``アーカイブに必要な機能が欠けているとします。``--archives qtbase``フラグを使用すると、``aqt install-qt``は約27のアーカイブを省略します。``aqt list-qt --archives``コマンドでこれらのアーカイブのリストを表示することができます:"
|
||||
|
||||
#: ../../getting_started.rst:530
|
||||
msgid ""
|
||||
"Here, we have used the ``--archives`` flag with two arguments: the "
|
||||
"version of Qt we are interested in, and the architecture we are using. As"
|
||||
" a result, the command printed a list of archives that are part of the "
|
||||
"base (non-minimal) Qt installation."
|
||||
msgstr "ここでは、関心のあるQtのバージョンと使用しているアーキテクチャの2つの引数を持つ``--archives``フラグを使用しました。その結果、コマンドはベース(最小ではない)Qtインストールの一部であるアーカイブのリストを出力しました。"
|
||||
|
||||
#: ../../getting_started.rst:535
|
||||
msgid ""
|
||||
"Let's say we need to use ``qtmultimedia``, ``qtdeclarative``, ``qtsvg``, "
|
||||
"and nothing else. Remember that the ``qtbase`` archive is required for a "
|
||||
"minimal working Qt installation. We can install these archives using this"
|
||||
" command:"
|
||||
msgstr "``qtmultimedia``、``qtdeclarative``、``qtsvg``を使う必要があり、それ以外は何も使わないとしましょう。``qtbase``アーカイブは最低限動作するQtインストールに必要であることを覚えておいてください。これらのアーカイブは次のコマンドを使ってインストールできます:"
|
||||
|
||||
#: ../../getting_started.rst:544
|
||||
msgid "Installing Modules With Archives Specified"
|
||||
msgstr "アーカイブを指定してモジュールをインストールする"
|
||||
|
||||
#: ../../getting_started.rst:546
|
||||
msgid ""
|
||||
"As of aqt v2.1.0, the ``--archives`` flag will only apply to the base Qt "
|
||||
"installation and to the ``debug_info`` module. Previous versions of aqt "
|
||||
"required that when installing modules with the ``--archives`` flag, the "
|
||||
"user must specify archives for each module, otherwise they would not be "
|
||||
"installed. This behavior has been changed to prevent such mistakes."
|
||||
msgstr "aqt v2.1.0以降では、``--archives``フラグはQtの基本インストールと``debug_info``モジュールにのみ適用されます。aqtの以前のバージョンでは、``--archives``フラグを付けてモジュールをインストールする場合、ユーザはモジュールごとにアーカイブを指定する必要がありました。指定しないとインストールされませんでした。このようなミスを防止するために、この動作を変更しました。"
|
||||
|
||||
#: ../../getting_started.rst:552
|
||||
msgid ""
|
||||
"Let's say that we need to install the bare minimum Qt 5.15.2, with the "
|
||||
"modules ``qtcharts`` and ``qtlottie``:"
|
||||
msgstr "モジュール``qtcharts``と``qtlottie``を使って、最低限のQt 5.15.2をインストールする必要があるとしましょう。"
|
||||
|
||||
#: ../../getting_started.rst:558
|
||||
msgid ""
|
||||
"This command will successfully install 3 archives: 1 for ``qtbase``, and "
|
||||
"one each for the two modules. If we had tried to use this command with "
|
||||
"previous versions of aqt, we would not have installed the two modules "
|
||||
"because we did not specify them in the ``--archives`` list."
|
||||
msgstr "このコマンドは3つのアーカイブを正しくインストールします。1つは``qtbase``用で、もう1つは2つのモジュール用です。このコマンドをaqtの以前のバージョンで使用しようとすると、2つのモジュールは``--archives``リストに指定されていなかったので、インストールされませんでした。"
|
||||
|
||||
#: ../../getting_started.rst:564
|
||||
msgid ""
|
||||
"You can still misuse the ``--archives`` flag by omitting the ``qtbase`` "
|
||||
"archive, or by omitting archives that another archive or module is "
|
||||
"dependent on. You may not notice that there is a problem until you try to"
|
||||
" compile a program, and compilation fails."
|
||||
msgstr "``qtbase``アーカイブを省略したり、他のアーカイブやモジュールが依存しているアーカイブを省略することで、``--archives``フラグを誤用することもできます。プログラムをコンパイルしようとしてコンパイルが失敗するまで、問題があることに気づかないかもしれません。"
|
||||
|
||||
#: ../../getting_started.rst:570
|
||||
msgid "Installing the ``debug_info`` module"
|
||||
msgstr "``debug_info``モジュールのインストール"
|
||||
|
||||
#: ../../getting_started.rst:572
|
||||
msgid ""
|
||||
"Now let's say we need to install the ``debug_info`` module, which is "
|
||||
"particularly large: around one gigabyte. We do not want to install all of"
|
||||
" it, so we can use ``aqt install-qt --archives`` to choose which archives"
|
||||
" we want to install. Remember that the ``--archives`` flag"
|
||||
msgstr "ここで、``debug_info``モジュールをインストールする必要があるとしましょう。このモジュールは非常に大きく、約1.0GBです。すべてをインストールしたくないので、``aqt install-qt --archives``を使ってインストールしたいアーカイブを選ぶことができます。この場合の``--archives``フラグは"
|
||||
|
||||
#: ../../getting_started.rst:577
|
||||
msgid ""
|
||||
"``aqt list-qt --archives`` to print which archives are part of the "
|
||||
"``debug_info`` module:"
|
||||
msgstr "``aqt list-qt --archives``で、どのアーカイブが``debug_info``モジュールの一部であるかを表示します。"
|
||||
|
||||
#: ../../getting_started.rst:589
|
||||
msgid ""
|
||||
"This is a lot of archives. Note that there's a name collision between the"
|
||||
" ``debug_info`` archives and the archives in every other module/Qt base "
|
||||
"install: this is because there's a ``debug_info`` archive that "
|
||||
"corresponds to almost every other archive available."
|
||||
msgstr "ここにはたくさんのアーカイブがあります。``debug_info``アーカイブと他のすべてのモジュール/Qtベースインストールのアーカイブとの間に名前の衝突があることに注意してください。これは、利用可能な他のほとんどすべてのアーカイブに対応する``debug_info``アーカイブがあるからです。"
|
||||
|
||||
#: ../../getting_started.rst:595
|
||||
msgid ""
|
||||
"Let's install Qt with ``qtcharts`` and ``debug_info`` with some archives "
|
||||
"specified:"
|
||||
msgstr "``qtcharts``と``debug_info``つきでQtをインストールし、いくつかのアーカイブを指定しましょう。"
|
||||
|
||||
#: ../../getting_started.rst:602
|
||||
msgid ""
|
||||
"Notice what we did here: We specified the ``qtcharts`` and ``debug_info``"
|
||||
" modules, and we specified the ``qtbase``, ``qtcharts``, and "
|
||||
"``qtdeclarative`` archives. This will install a total of 6 archives:"
|
||||
msgstr "ここで行ったことに注目してください:``qtcharts`` モジュールと``debug_info``モジュールを指定し、``qtbase``アーカイブ、``qtcharts``アーカイブ、``qtdeclarative`` アーカイブを指定しました。これで合計6つのアーカイブがインストールされます:"
|
||||
|
||||
#: ../../getting_started.rst:606
|
||||
msgid ""
|
||||
"the 3 archives named ``qtbase``, ``qtcharts``, and ``qtdeclarative`` from"
|
||||
" the ``debug_info`` module,"
|
||||
msgstr "``debug_info``モジュールからの3つのアーカイブ ``qtbase``、``qtcharts``、``qtdeclarative``"
|
||||
|
||||
#: ../../getting_started.rst:607
|
||||
msgid "the 1 archive ``qtcharts`` from the ``qtcharts`` module, and"
|
||||
msgstr "``qtcharts``モジュールからのアーカイブ``qtcharts``、および"
|
||||
|
||||
#: ../../getting_started.rst:608
|
||||
msgid ""
|
||||
"the 2 archives ``qtbase`` and ``qtdeclarative`` from the base Qt "
|
||||
"installation."
|
||||
msgstr "基本Qtインストールの``qtbase``と``qtdeclarative``の2つのアーカイブです。"
|
||||
|
||||
#: ../../getting_started.rst:611
|
||||
msgid ""
|
||||
"At present, ``aqt install-qt`` is incapable of installing any archive "
|
||||
"from the ``debug_info`` module without also installing the corresponding "
|
||||
"module from the base Qt installation. For instance, you cannot install "
|
||||
"the ``debug_info`` archive for ``qtbase`` without also installing the "
|
||||
"usual ``qtbase`` archive."
|
||||
msgstr "現在、``aqt install-qt``は、基本Qtインストールから対応するモジュールをインストールせずに、``debug_info`` モジュールからアーカイブをインストールすることはできません。例えば、通常の``qtbase``アーカイブをインストールせずに、``qtbase``用の``debug_info`` アーカイブをインストールすることはできません。"
|
||||
|
||||
41
docs/locale/ja/LC_MESSAGES/index.po
Normal file
41
docs/locale/ja/LC_MESSAGES/index.po
Normal file
@@ -0,0 +1,41 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: ../../index.rst:2
|
||||
msgid "aqtinstall manual"
|
||||
msgstr ""
|
||||
|
||||
#: ../../index.rst:4
|
||||
msgid "Contents:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../index.rst:20
|
||||
msgid "Indices and tables"
|
||||
msgstr ""
|
||||
|
||||
#: ../../index.rst:22
|
||||
msgid ":ref:`genindex`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../index.rst:23
|
||||
msgid ":ref:`modindex`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../index.rst:24
|
||||
msgid ":ref:`search`"
|
||||
msgstr ""
|
||||
|
||||
147
docs/locale/ja/LC_MESSAGES/installation.po
Normal file
147
docs/locale/ja/LC_MESSAGES/installation.po
Normal file
@@ -0,0 +1,147 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: ../../installation.rst:6
|
||||
msgid "Installation"
|
||||
msgstr "インストール"
|
||||
|
||||
#: ../../installation.rst:9
|
||||
msgid "Requirements"
|
||||
msgstr "要件"
|
||||
|
||||
#: ../../installation.rst:11
|
||||
msgid "Minimum Python version: 3.6"
|
||||
msgstr "Pythonの最小バージョン:3.6"
|
||||
|
||||
#: ../../installation.rst:12
|
||||
msgid "Recommended Python version: 3.7.5 or later"
|
||||
msgstr "推奨Pythonバージョン:3.7.5以降"
|
||||
|
||||
#: ../../installation.rst:14
|
||||
msgid ""
|
||||
"Dependent libraries: requests, py7zr, semantic_version, patch, texttable,"
|
||||
" bs4"
|
||||
msgstr "依存ライブラリ:requests,py7zr,semantic_version,patch,texttable,bs4"
|
||||
|
||||
#: ../../installation.rst:18
|
||||
msgid "Install by pip command"
|
||||
msgstr "pipコマンドによるインストール"
|
||||
|
||||
#: ../../installation.rst:20
|
||||
msgid "Same as usual, it can be installed with `pip`"
|
||||
msgstr "いつもと同じように、``pip`` でインストールできます。"
|
||||
|
||||
#: ../../installation.rst:29
|
||||
msgid "Command changes"
|
||||
msgstr "コマンドの変更"
|
||||
|
||||
#: ../../installation.rst:31
|
||||
msgid ""
|
||||
"From version 2.0.0, sub commands are changed. The previous versions of "
|
||||
"these sub commands have been retained for backwards compatibility, but "
|
||||
"are no longer recommended."
|
||||
msgstr "バージョン2.0.0から、サブコマンドが変更されました。これらのサブコマンドの以前のバージョンは、下位互換性のために保持されていますが、お勧めできません。"
|
||||
|
||||
#: ../../installation.rst:36
|
||||
msgid "New sub commands"
|
||||
msgstr "新しいサブコマンド"
|
||||
|
||||
#: ../../installation.rst:36
|
||||
msgid "Legacy sub commands"
|
||||
msgstr "レガシーサブコマンド"
|
||||
|
||||
#: ../../installation.rst:36
|
||||
msgid "Note"
|
||||
msgstr "Note"
|
||||
|
||||
#: ../../installation.rst:38
|
||||
msgid "install-qt"
|
||||
msgstr "install-qt"
|
||||
|
||||
#: ../../installation.rst:38
|
||||
msgid "install"
|
||||
msgstr "install"
|
||||
|
||||
#: ../../installation.rst:38 ../../installation.rst:45
|
||||
#: ../../installation.rst:49 ../../installation.rst:54
|
||||
msgid "Version moved after target"
|
||||
msgstr "バージョンはターゲットの後に移動しました"
|
||||
|
||||
#: ../../installation.rst:40
|
||||
msgid "install-tool"
|
||||
msgstr "install-tool"
|
||||
|
||||
#: ../../installation.rst:40
|
||||
msgid "tool"
|
||||
msgstr "tool"
|
||||
|
||||
#: ../../installation.rst:40
|
||||
msgid "Arguments are changed"
|
||||
msgstr "引数が変更されました"
|
||||
|
||||
#: ../../installation.rst:42
|
||||
msgid "New syntax doesn't take version"
|
||||
msgstr "新しい構文はバージョンを使用しません"
|
||||
|
||||
#: ../../installation.rst:45
|
||||
msgid "install-example"
|
||||
msgstr "install-example"
|
||||
|
||||
#: ../../installation.rst:45
|
||||
msgid "examples"
|
||||
msgstr "examples"
|
||||
|
||||
#: ../../installation.rst:47
|
||||
msgid "Caution with last (s)"
|
||||
msgstr "最後の引数に注意"
|
||||
|
||||
#: ../../installation.rst:49
|
||||
msgid "install-src"
|
||||
msgstr "install-src"
|
||||
|
||||
#: ../../installation.rst:49
|
||||
msgid "src"
|
||||
msgstr "src"
|
||||
|
||||
#: ../../installation.rst:51
|
||||
msgid "New command only can take --kde option"
|
||||
msgstr "新しいコマンドは--kdeオプションしか使えません"
|
||||
|
||||
#: ../../installation.rst:54
|
||||
msgid "install-doc"
|
||||
msgstr "install-doc"
|
||||
|
||||
#: ../../installation.rst:54
|
||||
msgid "doc"
|
||||
msgstr "doc"
|
||||
|
||||
#: ../../installation.rst:56
|
||||
msgid "list"
|
||||
msgstr "list"
|
||||
|
||||
#: ../../installation.rst:56
|
||||
msgid "Legacy list commands are removed."
|
||||
msgstr "従来のリストコマンドは削除されました。"
|
||||
|
||||
#: ../../installation.rst:59
|
||||
msgid "list-qt"
|
||||
msgstr "list-qt"
|
||||
|
||||
#: ../../installation.rst:61
|
||||
msgid "list-tool"
|
||||
msgstr "list-tool"
|
||||
|
||||
203
docs/locale/pot/CODE_OF_CONDUCT.pot
Normal file
203
docs/locale/pot/CODE_OF_CONDUCT.pot
Normal file
@@ -0,0 +1,203 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:3
|
||||
msgid "Contributor Covenant Code of Conduct"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:6
|
||||
msgid "Our Pledge"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:8
|
||||
msgid "We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:15
|
||||
msgid "We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:19
|
||||
msgid "Our Standards"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:21
|
||||
msgid "Examples of behavior that contributes to a positive environment for our community include:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:24
|
||||
msgid "Demonstrating empathy and kindness toward other people"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:25
|
||||
msgid "Being respectful of differing opinions, viewpoints, and experiences"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:26
|
||||
msgid "Giving and gracefully accepting constructive feedback"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:27
|
||||
msgid "Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:29
|
||||
msgid "Focusing on what is best not just for us as individuals, but for the overall community"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:32
|
||||
msgid "Examples of unacceptable behavior include:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:34
|
||||
msgid "The use of sexualized language or imagery, and sexual attention or advances of any kind"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:36
|
||||
msgid "Trolling, insulting or derogatory comments, and personal or political attacks"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:37
|
||||
msgid "Public or private harassment"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:38
|
||||
msgid "Publishing others' private information, such as a physical or email address, without their explicit permission"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:40
|
||||
msgid "Other conduct which could reasonably be considered inappropriate in a professional setting"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:44
|
||||
msgid "Enforcement Responsibilities"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:46
|
||||
msgid "Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:51
|
||||
msgid "Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:57
|
||||
msgid "Scope"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:59
|
||||
msgid "This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:66
|
||||
msgid "Enforcement"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:68
|
||||
msgid "Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at Hiroshi Miura <miurahr@linux.com>. All complaints will be reviewed and investigated promptly and fairly."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:73
|
||||
msgid "All community leaders are obligated to respect the privacy and security of the reporter of any incident."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:77
|
||||
msgid "Enforcement Guidelines"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:79
|
||||
msgid "Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:83
|
||||
msgid "Phase 1. Correction"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:87
|
||||
#: ../../CODE_OF_CONDUCT.rst:98
|
||||
#: ../../CODE_OF_CONDUCT.rst:112
|
||||
#: ../../CODE_OF_CONDUCT.rst:127
|
||||
msgid "**Community Impact**:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:86
|
||||
msgid "Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:92
|
||||
#: ../../CODE_OF_CONDUCT.rst:106
|
||||
#: ../../CODE_OF_CONDUCT.rst:119
|
||||
#: ../../CODE_OF_CONDUCT.rst:131
|
||||
msgid "**Consequence**:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:90
|
||||
msgid "A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:95
|
||||
msgid "Phase 2. Warning"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:98
|
||||
msgid "A violation through a single incident or series of actions."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:101
|
||||
msgid "A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:109
|
||||
msgid "Phase 3. Temporary Ban"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:112
|
||||
msgid "A serious violation of community standards, including sustained inappropriate behavior."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:115
|
||||
msgid "A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:122
|
||||
msgid "Phase 4. Permanent Ban"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:125
|
||||
msgid "Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:130
|
||||
msgid "A permanent ban from any sort of public interaction within the community."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:134
|
||||
msgid "Attribution"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:136
|
||||
msgid "This Code of Conduct is adapted from the `Contributor Covenant`_ version 2.0. You can take it from Contributor Covenant `homepage`_."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:139
|
||||
msgid "Community Impact Guidelines were inspired by `Mozilla's code of conduct enforcement ladder`_."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CODE_OF_CONDUCT.rst:141
|
||||
msgid "For answers to common questions about this code of conduct, see the `FAQ`_ or its translations_."
|
||||
msgstr ""
|
||||
81
docs/locale/pot/CONTRIBUTE.pot
Normal file
81
docs/locale/pot/CONTRIBUTE.pot
Normal file
@@ -0,0 +1,81 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../CONTRIBUTE.rst:3
|
||||
msgid "Contribution guide"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CONTRIBUTE.rst:5
|
||||
msgid "This is contribution guide for aqtinstall project. You are welcome to send a Pull-Request, reporting bugs and ask questions."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CONTRIBUTE.rst:9
|
||||
msgid "Resources"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CONTRIBUTE.rst:11
|
||||
msgid "Project owner: Hiroshi Miura"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CONTRIBUTE.rst:12
|
||||
msgid "Bug Tracker: Github issue `Tracker`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CONTRIBUTE.rst:13
|
||||
msgid "Status: Beta"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CONTRIBUTE.rst:14
|
||||
msgid "Activity: moderate"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CONTRIBUTE.rst:19
|
||||
msgid "Bug triage"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CONTRIBUTE.rst:21
|
||||
msgid "Every report to github issue tracker should be in triage. whether it is bug, question or invalid."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CONTRIBUTE.rst:26
|
||||
msgid "Send patch"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CONTRIBUTE.rst:28
|
||||
msgid "Here is small amount rule when you want to send patch the project;"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CONTRIBUTE.rst:30
|
||||
msgid "every proposal for modification should send as 'Pull Request'"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CONTRIBUTE.rst:32
|
||||
msgid "each pull request can consist of multiple commits."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CONTRIBUTE.rst:34
|
||||
msgid "you are encourage to split modifications to individual commits that are logical subpart."
|
||||
msgstr ""
|
||||
|
||||
#: ../../CONTRIBUTE.rst:37
|
||||
msgid "CI tests"
|
||||
msgstr ""
|
||||
|
||||
#: ../../CONTRIBUTE.rst:39
|
||||
msgid "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."
|
||||
msgstr ""
|
||||
65
docs/locale/pot/SECURITY.pot
Normal file
65
docs/locale/pot/SECURITY.pot
Normal file
@@ -0,0 +1,65 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../SECURITY.rst:2
|
||||
msgid "Security Policy"
|
||||
msgstr ""
|
||||
|
||||
#: ../../SECURITY.rst:5
|
||||
msgid "Supported Versions"
|
||||
msgstr ""
|
||||
|
||||
#: ../../SECURITY.rst:8
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
|
||||
#: ../../SECURITY.rst:8
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#: ../../SECURITY.rst:10
|
||||
msgid "3.0.x"
|
||||
msgstr ""
|
||||
|
||||
#: ../../SECURITY.rst:10
|
||||
msgid "Stable version"
|
||||
msgstr ""
|
||||
|
||||
#: ../../SECURITY.rst:12
|
||||
msgid "2.2.x"
|
||||
msgstr ""
|
||||
|
||||
#: ../../SECURITY.rst:12
|
||||
msgid "Security fixes only"
|
||||
msgstr ""
|
||||
|
||||
#: ../../SECURITY.rst:14
|
||||
msgid "< 2.2"
|
||||
msgstr ""
|
||||
|
||||
#: ../../SECURITY.rst:14
|
||||
msgid "not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ../../SECURITY.rst:18
|
||||
msgid "Reporting a Vulnerability"
|
||||
msgstr ""
|
||||
|
||||
#: ../../SECURITY.rst:20
|
||||
msgid "Please disclose security vulnerabilities privately at miurahr@linux.com"
|
||||
msgstr ""
|
||||
145
docs/locale/pot/authors.pot
Normal file
145
docs/locale/pot/authors.pot
Normal file
@@ -0,0 +1,145 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../authors.rst:6
|
||||
msgid "Authors"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:8
|
||||
msgid "Aqtinstall is written and maintained by Hiroshi Miura <miurahr@linux.com>"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:10
|
||||
msgid "Original qli-installer is written by Linus Jahn"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:12
|
||||
msgid "Significant contributions for improvements of version 2.0 and 2.1 by David Dalcino David also leads many developments and reviews effort after 2.0."
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:15
|
||||
msgid "All contributors, listed alphabetically, are:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:17
|
||||
msgid "Andrei Yankovich (tools ifw installation)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:18
|
||||
msgid "Aurélien Gâteau (patching to qmake)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:19
|
||||
msgid "Benjamin O (Github Actions and more)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:20
|
||||
msgid "Christian Hoffmann (Update mirror list)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:21
|
||||
msgid "David Dalcino (Many improvements on CI automations, commands, tests, documents and so on)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:22
|
||||
msgid "Doronin Stanislav (document)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:23
|
||||
msgid "Fabrice Le Bars (32bit binary)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:24
|
||||
msgid "Felix Barz (Android, Explicit extra module installation)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:25
|
||||
msgid "Gamso (improve parsing of update.xml)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:26
|
||||
msgid "Julien Marrec (mypy, type hints)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:27
|
||||
msgid "Kyle Altendorf (7z binary path search)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:28
|
||||
msgid "lightmare (Documents)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:29
|
||||
msgid "Mike Tzou (Update fallback url)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:30
|
||||
msgid "Martin Delille (Documents)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:31
|
||||
msgid "mite-user (folder index handling of download web sites)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:32
|
||||
msgid "Mizux Seihax (Qt versions)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:33
|
||||
msgid "Mozi (CI/workflow improvement, log format)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:34
|
||||
msgid "Nelson Chen (CI tests)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:35
|
||||
msgid "@nikitalita (Binary distribution)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:36
|
||||
msgid "@pylipp (Documents)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:37
|
||||
msgid "Sztergbaum Roman (Version database)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:38
|
||||
msgid "Thomas Grainger (CLI entry point)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:39
|
||||
msgid "@tsteven4 (fix patching to qmake, pkgconfig and libtool)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:40
|
||||
msgid "Vadim Peretokin (Version database)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:41
|
||||
msgid "Vladyslav Hnatiuk (Version database)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:42
|
||||
msgid "@ypnos (Documents)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../authors.rst:44
|
||||
msgid "and many other participants and contributors. If you find a missing name to record, please feel free to tell me."
|
||||
msgstr ""
|
||||
1748
docs/locale/pot/changes.pot
Normal file
1748
docs/locale/pot/changes.pot
Normal file
File diff suppressed because it is too large
Load Diff
599
docs/locale/pot/cli.pot
Normal file
599
docs/locale/pot/cli.pot
Normal file
@@ -0,0 +1,599 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../cli.rst:4
|
||||
msgid "Command Line Options"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:6
|
||||
msgid "The CLI uses argparse to parse the command line options so the short or long versions may be used and the long options may be truncated to the shortest unambiguous abbreviation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:10
|
||||
msgid "Generic commands"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:18
|
||||
msgid "show generic help"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:26
|
||||
msgid "display version"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:30
|
||||
msgid "List-* Commands"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:32
|
||||
msgid "These commands are used to list the packages available for installation with ``aqt``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:37
|
||||
msgid "list-qt command"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:55
|
||||
msgid "List available versions of Qt, targets, extensions, modules, and architectures."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:59
|
||||
#: ../../cli.rst:197
|
||||
#: ../../cli.rst:237
|
||||
#: ../../cli.rst:282
|
||||
#: ../../cli.rst:320
|
||||
#: ../../cli.rst:605
|
||||
#: ../../cli.rst:665
|
||||
#: ../../cli.rst:719
|
||||
#: ../../cli.rst:771
|
||||
msgid "linux, windows or mac"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:63
|
||||
#: ../../cli.rst:324
|
||||
msgid "desktop, winrt, ios or android. When omitted, the command prints all the targets available for a host OS. Note that winrt is only available on Windows, and ios is only available on Mac OS."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:69
|
||||
#: ../../cli.rst:338
|
||||
#: ../../cli.rst:376
|
||||
msgid "Display help text"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:73
|
||||
msgid "Extension of packages to list {wasm,src_doc_examples,preview,wasm_preview,x86_64,x86,armv7,arm64_v8a}"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:76
|
||||
msgid "Use the ``--extensions`` flag to list all relevant options for a host/target. Incompatible with the ``--extensions`` flag, but may be combined with any other flag."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:81
|
||||
msgid "Qt version in the format of \"5.X.Y\", or the keyword ``latest``. When set, this prints all valid arguments for the ``--extension`` flag for Qt 5.X.Y, or the latest version of Qt if ``latest`` is specified. Incompatible with the ``--extension`` flag."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:88
|
||||
msgid "Print versions of Qt within a `SimpleSpec`_ that specifies a range of versions. You can specify partial versions, inequalities, etc. ``\"*\"`` would match all versions of Qt; ``\">6.0.2,<6.2.0\"`` would match all versions of Qt between 6.0.2 and 6.2.0, etc. For example, ``aqt list-qt windows desktop --spec \"5.12\"`` would print all versions of Qt for Windows Desktop beginning with 5.12. May be combined with any other flag to filter the output of that flag."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:101
|
||||
msgid "This flag lists all the modules available for Qt 5.X.Y with a host/target/extension/architecture combination, or the latest version of Qt if ``latest`` is specified. You can list available architectures by using ``aqt list-qt`` with the ``--arch`` flag described below."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:108
|
||||
msgid "Long display for modules: Similar to ``--modules``, but shows extra metadata associated with each module. This metadata is displayed in a table that includes long display names for each module. If your terminal is wider than 95 characters, ``aqt list-qt`` will also display release dates and sizes for each module. An example of this output is displayed below."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:151
|
||||
msgid "Qt version in the format of \"5.X.Y\". When set, this prints all architectures available for Qt 5.X.Y with a host/target/extension, or the latest version of Qt if ``latest`` is specified."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:158
|
||||
msgid "This flag requires a list of at least two arguments: 'Qt version' and 'architecture'. The 'Qt version' argument can be in the format \"5.X.Y\" or the \"latest\" keyword. You can use the ``--arch`` flag to see a list of acceptable values for the 'architecture' argument. Any following arguments must be the names of modules available for the preceding version and architecture. You can use the ``--modules`` flag to see a list of acceptable values."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:164
|
||||
msgid "If you do not add a list of modules to this flag, this command will print a list of all the archives that make up the base Qt installation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:167
|
||||
msgid "If you add a list of modules to this flag, this command will print a list of all the archives that make up the specified modules."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:170
|
||||
msgid "The purpose of this command is to show you what arguments you can pass to the :ref:`archives flag <install archives flag>` when using the ``install-*`` commands. This flag allows you to avoid installing parts of Qt that you do not need."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:176
|
||||
msgid "Print only the newest version available May be combined with the ``--extension`` and/or ``--spec`` flags."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:183
|
||||
msgid "list-src command"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:193
|
||||
msgid "List source archives available for installation using the `install-src command`_."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:201
|
||||
#: ../../cli.rst:241
|
||||
#: ../../cli.rst:286
|
||||
#: ../../cli.rst:532
|
||||
#: ../../cli.rst:614
|
||||
#: ../../cli.rst:674
|
||||
#: ../../cli.rst:728
|
||||
msgid "This is a Qt version such as 5.9.7, 5.12.1 etc. Use the :ref:`List-Qt Command` to list available versions."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:206
|
||||
#: ../../cli.rst:246
|
||||
#: ../../cli.rst:291
|
||||
#: ../../cli.rst:537
|
||||
#: ../../cli.rst:619
|
||||
#: ../../cli.rst:679
|
||||
#: ../../cli.rst:733
|
||||
msgid "This is a `SimpleSpec`_ that specifies a range of versions. If you type something in the ``<Qt version>`` positional argument that cannot be interpreted as a version, it will be interpreted as a `SimpleSpec`_, and ``aqt`` will select the highest available version within that `SimpleSpec`_."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:211
|
||||
msgid "For example, ``aqt list-src mac 5.12`` would print archives for the latest version of Qt 5.12 available (5.12.11 at the time of this writing)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:218
|
||||
msgid "list-doc command"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:229
|
||||
msgid "List documentation archives and modules available for installation using the `install-doc command`_."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:232
|
||||
msgid "By default, ``list-doc`` will print a list of archives available for installation using the `install-doc command`_, with the ``--archives`` option."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:251
|
||||
msgid "For example, ``aqt list-doc mac 5.12`` would print archives for the latest version of Qt 5.12 available (5.12.11 at the time of this writing)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:256
|
||||
msgid "This flag causes ``list-doc`` to print a list of modules available for installation using the `install-doc command`_, with the ``--modules`` option."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:263
|
||||
msgid "list-example command"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:274
|
||||
msgid "List example archives and modules available for installation using the `install-example command`_."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:277
|
||||
msgid "By default, ``list-example`` will print a list of archives available for installation using the `install-example command`_, with the ``--archives`` option."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:296
|
||||
msgid "For example, ``aqt list-example mac 5.12`` would print archives for the latest version of Qt 5.12 available (5.12.11 at the time of this writing)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:301
|
||||
msgid "This flag causes ``list-example`` to print a list of modules available for installation using the `install-example command`_, with the ``--modules`` option."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:308
|
||||
msgid "list-tool command"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:316
|
||||
msgid "List available tools"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:330
|
||||
msgid "The name of a tool. Use ``aqt list-tool <host> <target>`` to see accepted values. When set, this prints all 'tool variant names' available."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:333
|
||||
msgid "The output of this command is meant to be used with the :ref:`aqt install-tool <Tools installation command>` below."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:343
|
||||
msgid "Long display: shows extra metadata associated with each tool variant. This metadata is displayed in a table, and includes versions and release dates for each tool. If your terminal is wider than 95 characters, ``aqt list-tool`` will also display the names and descriptions for each tool. An example of this output is displayed below."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:360
|
||||
msgid "Install-* Commands"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:362
|
||||
msgid "These commands are used to install Qt, tools, source, docs, and examples."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:368
|
||||
msgid "Common Options"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:370
|
||||
msgid "Most of these commands share the same command line options, and these options are described here:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:380
|
||||
msgid "Specify output directory. By default, aqt installs to the current working directory."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:385
|
||||
msgid "Specify mirror site base url such as -b ``https://mirrors.dotsrc.org/qtproject`` where 'online' folder exist."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:390
|
||||
msgid "Specify the path to your own ``settings.ini`` file. See :ref:`the Configuration section<configuration-ref>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:394
|
||||
msgid "The connection timeout, in seconds, for the download site. (default: 5 sec)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:398
|
||||
msgid "Specify external 7zip command path. By default, aqt uses py7zr_ for this task."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:400
|
||||
msgid "In the past, our users have had success using 7-zip_ on Windows, Linux and Mac. You can install 7-zip on Windows with Choco_. The Linux/Mac port of 7-zip is called ``p7zip``, and you can install it with brew_ on Mac, or on Linux with your package manager."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:412
|
||||
msgid "Use the internal extractor, py7zr_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:416
|
||||
msgid "Keep downloaded archive when specified, otherwise remove after install. Use ``--archive-dest <path>`` to choose where aqt will place these files. If you do not specify a download destination, aqt will place these files in the current working directory."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:423
|
||||
msgid "Set the destination path for downloaded archives (temp directory by default). All downloaded archives will be automatically deleted unless you have specified the ``--keep`` option above, or ``aqt`` crashes."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:427
|
||||
msgid "Note that this option refers to the intermediate ``.7z`` archives that ``aqt`` downloads and then extracts to ``--outputdir``. Most users will not need to keep these files."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:433
|
||||
msgid "Specify extra modules to install as a list. Use the appropriate ``aqt list-*`` command to list available modules:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:437
|
||||
#: ../../cli.rst:480
|
||||
msgid "Install command"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:437
|
||||
#: ../../cli.rst:480
|
||||
msgid "List command"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:437
|
||||
#: ../../cli.rst:480
|
||||
msgid "Usage of list command"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:439
|
||||
#: ../../cli.rst:482
|
||||
msgid "install-qt"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:439
|
||||
#: ../../cli.rst:482
|
||||
msgid "`list-qt command`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:439
|
||||
msgid "``list-qt <host> <target> --modules <version> <arch>``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:441
|
||||
#: ../../cli.rst:484
|
||||
msgid "install-example"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:441
|
||||
#: ../../cli.rst:484
|
||||
msgid "`list-example command`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:441
|
||||
msgid "``list-example <host> <version> --modules``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:443
|
||||
#: ../../cli.rst:488
|
||||
msgid "install-doc"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:443
|
||||
#: ../../cli.rst:488
|
||||
msgid "`list-doc command`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:443
|
||||
msgid "``list-doc <host> <version> --modules``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:447
|
||||
msgid "This option only applicable to ``install-qt``, ``install-example``, and ``install-doc``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:449
|
||||
msgid "You can install multiple modules like this:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:457
|
||||
msgid "If you wish to install every module available, you may use the ``all`` keyword instead of a list of modules, like this:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:468
|
||||
msgid "[Advanced] Specify subset of archives to **limit** installed archives. It will only affect the base Qt installation and the ``debug_info`` module. 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."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:474
|
||||
msgid "This option is applicable to all the ``install-*`` commands except for ``install-tool``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:476
|
||||
msgid "You can print a list of all acceptable values to use with this command by using the appropriate ``aqt list-*`` command:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:482
|
||||
msgid "``list-qt <host> <target> --archives <version>``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:484
|
||||
msgid "``list-example <host> <version>``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:486
|
||||
msgid "install-src"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:486
|
||||
msgid "`list-src command`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:486
|
||||
msgid "``list-src <host> <version>``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:488
|
||||
msgid "``list-doc <host> <version>``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:495
|
||||
msgid "install-qt command"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:517
|
||||
msgid "Install Qt library, with specified version and target. There are various combinations to accept according to Qt version."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:522
|
||||
msgid "linux, windows or mac. The operating system on which the Qt development tools will run."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:526
|
||||
msgid "desktop, ios, winrt, or android. The type of device for which you are developing Qt programs. If your target is ios, please be aware that versions of Qt older than 6.2.4 are expected to be non-functional with current versions of XCode (applies to any XCode greater than or equal to 13)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:542
|
||||
msgid "For example, ``aqt install-qt mac desktop 5.12`` would install the newest version of Qt 5.12 available, and ``aqt install-qt mac desktop \"*\"`` would install the highest version of Qt available."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:546
|
||||
msgid "When using this option, ``aqt`` will print the version that it has installed in the logs so that you can verify it easily."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:551
|
||||
msgid "The compiler architecture for which you are developing. Options:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:553
|
||||
msgid "gcc_64 for linux desktop"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:555
|
||||
msgid "clang_64 for mac desktop"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:557
|
||||
msgid "win64_msvc2019_64, win64_msvc2017_64, win64_msvc2015_64, win32_msvc2015, win32_mingw53 for windows desktop"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:559
|
||||
msgid "android_armv7, android_arm64_v8a, android_x86, android_x86_64 for android"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:561
|
||||
msgid "Use the :ref:`List-Qt Command` to list available architectures."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:565
|
||||
msgid "If you are installing an ios or android version of Qt, the corresponding desktop version of Qt must be installed alongside of it. Turn this option on to install it automatically."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:570
|
||||
msgid "[Advanced] Specify not to install all base packages. This is advanced option and you should use it with ``--modules`` option. This allow you to add modules to existent Qt installation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:574
|
||||
#: ../../cli.rst:635
|
||||
#: ../../cli.rst:688
|
||||
#: ../../cli.rst:743
|
||||
#: ../../cli.rst:790
|
||||
msgid "See `common options`_."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:580
|
||||
msgid "install-src command"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:600
|
||||
msgid "Install Qt source code for the specified version and target."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:609
|
||||
#: ../../cli.rst:669
|
||||
#: ../../cli.rst:723
|
||||
msgid "Deprecated and marked for removal in a future version of aqt. This parameter exists for backwards compatibility reasons, and its value is ignored."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:624
|
||||
msgid "For example, ``aqt install-src mac 5.12`` would install sources for the newest version of Qt 5.12 available, and ``aqt install-src mac \"*\"`` would install sources for the highest version of Qt available."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:630
|
||||
msgid "by adding ``--kde`` option, KDE patch collection is applied for qtbase tree. It is only applied to Qt 5.15.2. When specified version is other than it, command will abort with error when using ``--kde``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:641
|
||||
msgid "install-doc command"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:661
|
||||
msgid "Install Qt documentation for the specified version and target."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:684
|
||||
msgid "For example, ``aqt install-doc mac 5.12`` would install documentation for the newest version of Qt 5.12 available, and ``aqt install-doc mac \"*\"`` would install documentation for the highest version of Qt available."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:694
|
||||
msgid "install-example command"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:714
|
||||
msgid "Install Qt examples for the specified version and target."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:738
|
||||
msgid "For example, ``aqt install-example mac 5.12`` would install examples for the newest version of Qt 5.12 available, and ``aqt install-example mac \"*\"`` would install examples for the highest version of Qt available."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:749
|
||||
msgid "install-tool command"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:767
|
||||
msgid "Install tools like QtIFW, mingw, Cmake, Conan, and vcredist."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:775
|
||||
msgid "desktop, ios or android"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:779
|
||||
msgid "install tools specified. tool name may be 'tools_openssl_x64', 'tools_vcredist', 'tools_ninja', 'tools_ifw', 'tools_cmake'"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:784
|
||||
msgid "Optional field to specify tool variant. It may be required for vcredist and mingw installation. tool variant names may be 'qt.tools.win64_mingw810', 'qt.tools.vcredist_msvc2013_x64'."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:787
|
||||
msgid "You should use the :ref:`List-Tool command` to display what tools and tool variant names are available."
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:794
|
||||
msgid "Legacy subcommands"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:796
|
||||
msgid "The subcommands ``install``, ``tool``, ``src``, ``doc``, and ``examples`` have been deprecated in favor of the newer ``install-*`` commands, but they remain in aqt in case you still need to use them. Documentation for these older commands is still available at https://aqtinstall.readthedocs.io/en/v1.2.4/"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:803
|
||||
msgid "Command examples"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:807
|
||||
msgid "Example: Installing Qt SDK 5.12.12 for Linux with QtCharts and QtNetworkAuth:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:815
|
||||
msgid "Example: Installing the newest LTS version of Qt 5.12:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:823
|
||||
msgid "Example: Installing Android (armv7) Qt 5.13.2:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:830
|
||||
msgid "Example: Install examples, doc and source:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:838
|
||||
msgid "Example: Print archives available for installation with ``install-example/doc/src``:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:846
|
||||
msgid "Example: Print modules available for installation with ``install-example/doc``:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:853
|
||||
msgid "Example: Install Web Assembly"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:860
|
||||
msgid "Example: List available versions of Qt on Linux"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:867
|
||||
msgid "Example: List available versions of Qt6 on macOS"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:874
|
||||
msgid "Example: List available modules for latest version of Qt on macOS"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:881
|
||||
msgid "Example: List available architectures for Qt 6.1.2 on windows"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:888
|
||||
msgid "Example: List available tools on windows"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:895
|
||||
msgid "Example: List the variants of IFW available:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:904
|
||||
msgid "Example: List the variants of IFW, including version, release date, description, etc.:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:911
|
||||
msgid "Example: Install an Install FrameWork (IFW):"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:918
|
||||
msgid "Example: Install vcredist on Windows:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:927
|
||||
msgid "Example: Install MinGW on Windows"
|
||||
msgstr ""
|
||||
|
||||
#: ../../cli.rst:935
|
||||
msgid "Example: Show help message"
|
||||
msgstr ""
|
||||
189
docs/locale/pot/configuration.pot
Normal file
189
docs/locale/pot/configuration.pot
Normal file
@@ -0,0 +1,189 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../configuration.rst:4
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:6
|
||||
msgid "``aqtinstall`` can be configured through a configuration file. A default configuration is stored in ``aqt/settings.ini`` file."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:9
|
||||
msgid "You can specify custom configuration file through ``AQT_CONFIG`` environment variable or \"-c\" or \"--config\" command line option."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:12
|
||||
msgid "A file is like as follows:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:54
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:56
|
||||
msgid "The ``[aqt]`` section configures basic behavior."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:60
|
||||
msgid "concurrency:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:59
|
||||
msgid "``concurrency`` is a setting how many download concurrently starts. It should be a integer value."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:65
|
||||
msgid "baseurl:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:63
|
||||
msgid "``baseurl`` is a URL of Qt download site. When you have your own Qt download site repository, you can set it here. It is as same as ``--base`` option."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:71
|
||||
msgid "7zcmd:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:68
|
||||
msgid "It is a command name of 7-zip. When ``aqtinstall`` is installed **without** recommended library ``py7zr``, it is used to extract archive instead of ``py7zr`` library. When ``--external`` option specified, a value is override with option's one."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:78
|
||||
msgid "print_stacktrace_on_error:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:74
|
||||
msgid "``print_stacktrace_on_error`` is either ``True`` or ``False``. The ``True`` setting causes a stack trace to be printed to stderr any time an error occurs that will end the program. The ``False`` setting will hide the stack trace, unless an unhandled exception occurs."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:85
|
||||
msgid "always_keep_archives:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:81
|
||||
msgid "This is either ``True`` or ``False``. The ``True`` setting turns on the ``--keep`` option every time you run aqt, and cannot be overridden by command line options. The ``False`` setting will require you to set ``--keep`` manually every time you run aqt, unless you don't want to keep ``.7z`` archives."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:90
|
||||
msgid "archive_download_location:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:88
|
||||
msgid "This is the relative or absolute path to the location in which ``.7z`` archives will be downloaded, when ``--keep`` is turned on. You can override this location with the ``--archives-dest`` option."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:104
|
||||
msgid "min_module_size:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:93
|
||||
msgid "This is the minimum decompressed size, in bytes, of the modules that aqt is permitted to list. The authors of aqt have discovered that the Qt repository contains a few mysteriously \"empty\" modules, including the examples modules for `qtlottie` and `qtquicktimeline`. These modules consist of a single archive that contains empty directories, and they are exactly 40 bytes when uncompressed. The authors feel that it is not useful for ``aqt list-*`` to list these empty modules. If you want to print these modules with ``aqt list-*``, please feel free to change the `min_module_size` value to something less than 40."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:102
|
||||
msgid "This setting has no effect on your ability to install these modules. ``aqt install-*`` can will still install them without any warnings."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:106
|
||||
msgid "The ``[requests]`` section controls the way that ``aqt`` makes network requests."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:110
|
||||
msgid "connection_timeout:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:109
|
||||
msgid "``connection_timeout`` is a timeout in second for connection. It is passed to ``requests`` library."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:114
|
||||
msgid "response_timeout:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:113
|
||||
msgid "``response_timeout`` is a timeout in second how much time waiting for response. It is passed to ``requests`` library."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:117
|
||||
msgid "max_retries:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:117
|
||||
msgid "Deprecated; please do not use this setting. It has been replaced by the"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:121
|
||||
msgid "max_retries_on_connection_error:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:120
|
||||
msgid "``max_retries_on_connection_error`` is an integer that controls how many times ``aqt`` will try to reconnect to the server in the case of a connection error."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:127
|
||||
msgid "retry_backoff:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:124
|
||||
msgid "``retry_backoff`` is a floating point number that controls how long ``aqt`` will sleep between failed connection attempts. Setting this value too low will hammer the server, and may result in no successful connections at all."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:132
|
||||
msgid "max_retries_on_checksum_error:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:130
|
||||
msgid "This setting controls how many times ``aqt`` will attempt to download a file, in the case of a checksum error."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:134
|
||||
msgid "The ``[mirrors]`` section is a configuration for mirror handling."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:152
|
||||
msgid "trusted_mirrors:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:137
|
||||
msgid "``trusted_mirrors`` is a list of URLs that you trust to provide accurate checksums for all downloaded archives. This is a security feature; please do not change this value unless you know what you're doing!"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:142
|
||||
msgid "``aqtinstall`` downloads all checksums from mirrors in this list. These checksums are used to verify that every other file that ``aqtinstall`` downloads is, in fact, the correct file, and not a corrupt or malicious copy of the file. You may need to modify this list if the default mirrors are unreachable, or if you do not trust that they have not been compromised."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:149
|
||||
msgid "``aqtinstall`` can safely download archive files from the fallback mirror list, and ensure that they are not malicious files, by checking them against the checksums downloaded from the ``trusted_mirrors`` list. ``aqtinstall`` uses the SHA-256 algorithm to perform this check."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:160
|
||||
msgid "blacklist:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:155
|
||||
msgid "It is a list of URL where is a problematic mirror site. Some mirror sites ignore a connection from IP addresses out of their preffered one. It will cause connection error or connection timeout. There are some known mirror sites in default. When you are happy with the default sites, you can override with your custom settings."
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:164
|
||||
msgid "fallbacks:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../configuration.rst:163
|
||||
msgid "It is a list of URL where is a good for access. When mirror site cause an error, aqt use fallbacks when possible. You can find a list of mirrors at: https://download.qt.io/static/mirrorlist/"
|
||||
msgstr ""
|
||||
411
docs/locale/pot/getting_started.pot
Normal file
411
docs/locale/pot/getting_started.pot
Normal file
@@ -0,0 +1,411 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../getting_started.rst:4
|
||||
msgid "Getting Started"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:6
|
||||
msgid "``aqt`` is a tool that can be used to install Qt, modules, tools related to Qt, source, docs, and examples, available at https://download.qt.io/. Before running ``aqt``, you will need to tell ``aqt`` exactly what you want it to install. This section of the documentation is meant to walk you through the process of finding out what packages are available to ``aqt``, so you can tell ``aqt`` what you want to install."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:13
|
||||
msgid "Please note that every ``aqt`` subcommand has a ``--help`` option; please use it if you are having trouble!"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:18
|
||||
msgid "Installing Qt"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:20
|
||||
msgid "General usage of ``aqt`` looks like this:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:26
|
||||
msgid "If you have installed ``aqt`` with pip, you can run it with the command script ``aqt``, but in some cases you may need to run it as ``python -m aqt``. Some older operating systems may require you to specify Python version 3, like this: ``python3 -m aqt``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:30
|
||||
msgid "To use ``aqt`` to install Qt, you will need to tell ``aqt`` four things:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:32
|
||||
#: ../../getting_started.rst:410
|
||||
msgid "The host operating system (windows, mac, or linux)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:33
|
||||
#: ../../getting_started.rst:411
|
||||
msgid "The target SDK (desktop, android, ios, or winrt)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:34
|
||||
msgid "The version of Qt you would like to install"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:35
|
||||
msgid "The target architecture"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:37
|
||||
msgid "Keep in mind that Qt for IOS is only available on Mac OS, and Qt for WinRT is only available on Windows."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:40
|
||||
msgid "To find out what versions of Qt are available, you can use the :ref:`aqt list-qt command <list-qt command>`. This command will print all versions of Qt available for Windows Desktop:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:57
|
||||
msgid "Notice that the version numbers are sorted, grouped by minor version number, and separated by a single space-character. The output of all of the :ref:`aqt list-qt <list-qt command>` commands is intended to make it easier for you to write programs that consume the output of :ref:`aqt list-qt <list-qt command>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:62
|
||||
msgid "Because the :ref:`aqt list-qt <list-qt command>` command directly queries the Qt downloads repository at https://download.qt.io/, the results of this command will always be accurate. The `Available Qt versions`_ wiki page was last modified at some point in the past, so it may or may not be up to date."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:69
|
||||
msgid "Now that we know what versions of Qt are available, let's choose version 6.2.0."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:71
|
||||
msgid "The next thing we need to do is find out what architectures are available for Qt 6.2.0 for Windows Desktop. To do this, we can use :ref:`aqt list-qt <list-qt command>` with the ``--arch`` flag:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:80
|
||||
msgid "Notice that this is a very small subset of the architectures listed in the `Available Qt versions`_ wiki page. If we need to use some architecture that is not on this list, we can use the `Available Qt versions`_ wiki page to get a rough idea of what versions support the architecture we want, and then use :ref:`aqt list-qt <list-qt command>` to confirm that the architecture is available."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:86
|
||||
msgid "Let's say that we want to install Qt 6.2.0 with architecture `win64_mingw81`. The installation command we need is:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:93
|
||||
msgid "Let's say that we want to install the next version of Qt 6.2 as soon as it is available. We can do this by using a `SimpleSpec <https://python-semanticversion.readthedocs.io/en/latest/reference.html#semantic_version.SimpleSpec>`_ instead of an explicit version:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:104
|
||||
msgid "External 7-zip extractor"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:106
|
||||
msgid "By default, ``aqt`` extracts the 7zip archives stored in the Qt repository using py7zr_, which is installed alongside ``aqt``. You can specify an alternate 7zip command path instead by using the ``-E`` or ``--external`` flag. For example, you could use 7-zip_ on a Windows desktop, using this command:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:115
|
||||
msgid "On Linux, you can specify p7zip_, a Linux port of 7-zip_, which is often installed by default, using this command:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:127
|
||||
msgid "Changing the output directory"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:129
|
||||
msgid "By default, ``aqt`` will install all of the Qt packages into the current working directory, in the subdirectory ``./<Qt version>/<arch>/``. For example, if we install Qt 6.2.0 for Windows desktop with arch `win64_mingw81`, it would end up in ``./6.2.0/win64_mingw81``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:134
|
||||
msgid "If you would prefer to install it to another location, you will need to use the ``-O`` or ``--outputdir`` flag. This option also works for all of the other subcommands that begin with ``aqt install-``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:139
|
||||
msgid "To install to ``C:\\Qt``, the default directory used by the standard gui installer, you may use this command:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:149
|
||||
msgid "Installing Modules"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:151
|
||||
msgid "Let's say we need to install some modules for Qt 5.15.2 on Windows Desktop. First we need to find out what the modules are called, and we can do that with :ref:`aqt list-qt <list-qt command>` with the ``--modules`` flag. Each version of Qt has a different list of modules for each host OS/ target SDK/ architecture combination, so we will need to supply :ref:`aqt list-qt <list-qt command>` with that information:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:163
|
||||
msgid "Let's say that we want to know more about these modules before we install them. We can use the ``--long-modules`` flag for that:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:183
|
||||
msgid "Note that if your terminal is wider than 95 characters, this command will show release dates and sizes in extra columns to the right. If you try this, you will notice that `debug_info` is 5.9 gigabytes installed."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:187
|
||||
msgid "Let's say that we want to install `qtcharts` and `qtnetworkauth`. We can do that by using the `-m` flag with the :ref:`aqt install-qt <qt installation command>` command. This flag receives the name of at least one module as an argument:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:195
|
||||
msgid "If we wish to install all the modules that are available, we can do that with the ``all`` keyword:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:201
|
||||
msgid "Remember that the :ref:`aqt list-qt <list-qt command>` command is meant to be scriptable? One way to install all modules available for Qt 5.15.2 is to send the output of :ref:`aqt list-qt <list-qt command>` into :ref:`aqt install-qt <qt installation command>`, like this:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:210
|
||||
msgid "You will need a Unix-style shell to run this command, or at least git-bash on Windows. The ``xargs`` equivalent to this command is an exercise left to the reader."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:213
|
||||
msgid "If you want to install all available modules, you are probably better off using the ``all`` keyword, as discussed above. This scripting example is presented to give you a sense of how to accomplish something more complicated. Perhaps you want to install all modules except `qtnetworkauth`; you could write a script that removes `qtnetworkauth` from the output of :ref:`aqt list-qt <list-qt command>`, and pipe that into :ref:`aqt install-qt <qt installation command>`. This exercise is left to the reader."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:223
|
||||
msgid "Installing Qt for Android"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:225
|
||||
msgid "Let's install Qt for Android. Installing Qt 5 will be similar to installing Qt for Desktop on Windows, but there will be differences when we get to Qt 6."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:243
|
||||
msgid "Let's see what happens when we try to list architectures and modules for Qt 6:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:257
|
||||
msgid "The Qt 6 for Android repositories are a little different than the Qt 5 repositories, and the :ref:`aqt list-qt <list-qt command>` tool doesn't know where to look for modules and architectures if you don't tell it what architecture you need. I know, it sounds a little backwards, but that's how the Qt repo was put together."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:262
|
||||
msgid "There are four architectures available, and the error message from :ref:`aqt list-qt <list-qt command>` just told us what they are: `x86_64`, `x86`, `armv7`, and `arm64_v8a`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:265
|
||||
msgid "We know we want to use `armv7` for the architecture, but we don't know exactly what value for 'architecture' we need to pass to :ref:`aqt install-qt <qt installation command>` yet, so we will use :ref:`aqt list-qt <list-qt command>` again:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:274
|
||||
msgid "You should be thinking, \"Well, that was silly. All it did was add `android_` to the beginning of the architecture I gave it. Why do I need to use ``aqt list-qt --arch`` for that?\" The answer is, ``aqt list-qt --arch`` is checking to see what actually exists in the Qt repository. If it prints an error message, instead of the obvious `android_armv7`, we would know that Qt 6.2.0 for that architecture doesn't exist for some reason, and any attempt to install it with :ref:`aqt install-qt <qt installation command>` will fail."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:282
|
||||
msgid "If we want to install Qt 6.2.0 for armv7, we use this command to print available modules:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:292
|
||||
msgid "Finally, let's install Qt 6.2.0 for Android armv7 with the ``qtcharts`` and ``qtnetworkauth`` modules:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:299
|
||||
msgid "Please note that when you install Qt for android or ios, the installation will not be functional unless you install the corresponding desktop version of Qt alongside it. You can do this automatically with the ``--autodesktop`` flag:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:308
|
||||
msgid "Installing Qt for WASM"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:310
|
||||
msgid "To find out how to install Qt for WASM, we need to tell :ref:`aqt list-qt <list-qt command>` that we are using the `wasm` architecture. We can do that by using the ``--extension wasm`` flag."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:320
|
||||
msgid "There are only a few versions of Qt that support WASM, and they are only available for desktop targets. If we tried this command with `android`, `winrt`, or `ios` targets, we would have seen an error message."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:324
|
||||
msgid "We can check the architecture and modules available as before:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:335
|
||||
msgid "We can install Qt for WASM as before:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:343
|
||||
msgid "Installing Tools"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:345
|
||||
msgid "Let's find out what tools are available for Windows Desktop by using the :ref:`aqt list-tool <list-tool command>` command:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:364
|
||||
msgid "Let's see what tool variants are available in `tools_mingw`:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:380
|
||||
msgid "This gives us a list of things that we could install using :ref:`aqt install-tool <tools installation command>`. Let's see some more details, using the ``-l`` or ``--long`` flag:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:401
|
||||
msgid "The ``-l`` flag causes :ref:`aqt list-tool <list-tool command>` to print a table that shows plenty of data pertinent to each tool variant available in `tools_mingw`. :ref:`aqt list-tool <list-tool command>` additionally prints the 'Display Name' and 'Description' for each tool if your terminal is wider than 95 characters; terminals that are narrower than this cannot display this table in a readable way."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:407
|
||||
msgid "Now let's install `mingw`, using the :ref:`aqt install-tool <tools installation command>` command. This command receives four parameters:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:412
|
||||
msgid "The name of the tool (this is `tools_mingw` in our case)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:413
|
||||
msgid "(Optional) The tool variant name. We saw a list of these when we ran :ref:`aqt list-tool <list-tool command>` with the `tool name` argument filled in."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:416
|
||||
msgid "To install `mingw`, you could use this command (please don't):"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:422
|
||||
msgid "Using this command will install every tool variant available in `tools_mingw`; in this case, you would install 10 different versions of the same tool. For some tools, like `qtcreator` or `ifw`, this is an appropriate thing to do, since each tool variant is a different program. However, for tools like `mingw` and `vcredist`, it would make more sense to use :ref:`aqt list-tool <list-tool command>` to see what tool variants are available, and then install just the tool variant you are interested in, like this:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:435
|
||||
msgid "Please note that ``aqt install-tool`` does not recognize the ``installscript.qs`` related to each tool. When you install these tools with the standard gui installer, the installer may use the ``installscript.qs`` script to make additional changes to your system. If you need those changes to occur, it will be your responsibility to make those changes happen, because ``aqt`` is not capable of running this script."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:443
|
||||
msgid "Installing a subset of Qt archives [Advanced]"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:446
|
||||
msgid "Introduction"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:448
|
||||
msgid "You may have noticed that by default, ``aqt install-qt`` installs a lot of archives that you may or may not need, and a typical installation can take up more disk space than necessary. If you installed the module ``debug_info``, it may have installed more than 1 gigabyte of data. This section will help you to reduce the footprint of your Qt installation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:456
|
||||
msgid "Be careful about using the ``--archives`` flag; it is marked `Advanced` for a reason! It is very easy to misuse this command and end up with a Qt installation that is missing the components that you need. Don't use it unless you know what you are doing!"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:463
|
||||
msgid "Minimum Qt Installation"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:465
|
||||
msgid "Normally, when you run ``aqt install-qt``, the program will print a long list of archives that it is downloading, extracting, and installing, including ``qtbase``, ``qtmultimedia``, ``qt3d``, and ~25 more items. We can use the ``--archives`` flag to choose which of these archives we will actually install. The ``--archives`` flag can only affect two modules: the base Qt installation and the ``debug_info`` module."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:473
|
||||
msgid "In this documentation, **\"modules\"**, **\"archives\"**, and **\"the base Qt installation\"** refer to different things, and are defined here:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:476
|
||||
msgid "**Archives**: In this context, an **archive** is a bundle of files compressed with the 7zip algorithm. It exists on a disk drive as a file with the extension ``.7z``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:480
|
||||
msgid "**Modules**: The Qt repository organizes groups of archives into modules. A **module** contains one or more **archives**."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:483
|
||||
msgid "**the base Qt installation**: By definition, this is just another **module** that contains 20-30 **archives**. This documentation refers to it as **the base Qt installation** instead of a **module** for several reasons:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:488
|
||||
msgid "The ``aqt install-qt`` installs this module by default."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:489
|
||||
msgid "You cannot specify this module with ``aqt install-qt --modules``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:490
|
||||
msgid "The ``aqt list-qt --modules`` command is incapable of printing this module."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:491
|
||||
msgid "``aqt`` transforms the names of modules as they exist in the Qt repository so that they are easier to read and write. If the name of **the base Qt installation** were transformed using the same rules, the name would be empty."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:496
|
||||
msgid "The fully-qualified name of the **base Qt installation** module is usually something like ``qt.qt6.620.gcc_64``. The fully-qualified name of the ``qtcharts`` module could be something like ``qt.qt6.620.qtcharts.gcc_64``. It would be difficult to read and write a list of 20 modules with the prefix ``qt.qt6.620.`` and the suffix ``.gcc_64``, because these parts are repetitive and not meaningful. Only the ``qtcharts`` part is useful."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:504
|
||||
msgid "Let's say that we want to install Qt 5.15.2 for Linux desktop, using the gcc_64 architecture. The ``qtbase`` archive includes the bare minimum for a working Qt installation, and we can install it alone with the ``--archives`` flag:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:512
|
||||
msgid "This time, ``aqt install-qt`` will only install one archive, ``qtbase``, instead of the ~27 archives it installs by default."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:516
|
||||
msgid "Installing More Than The Bare Minimum"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:518
|
||||
msgid "Let's say that the ``qtbase`` archive is missing some features that you need. Using the ``--archives qtbase`` flag causes ``aqt install-qt`` to omit roughly 27 archives. We can print a list of these archives with the ``aqt list-qt --archives`` command:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:530
|
||||
msgid "Here, we have used the ``--archives`` flag with two arguments: the version of Qt we are interested in, and the architecture we are using. As a result, the command printed a list of archives that are part of the base (non-minimal) Qt installation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:535
|
||||
msgid "Let's say we need to use ``qtmultimedia``, ``qtdeclarative``, ``qtsvg``, and nothing else. Remember that the ``qtbase`` archive is required for a minimal working Qt installation. We can install these archives using this command:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:544
|
||||
msgid "Installing Modules With Archives Specified"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:546
|
||||
msgid "As of aqt v2.1.0, the ``--archives`` flag will only apply to the base Qt installation and to the ``debug_info`` module. Previous versions of aqt required that when installing modules with the ``--archives`` flag, the user must specify archives for each module, otherwise they would not be installed. This behavior has been changed to prevent such mistakes."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:552
|
||||
msgid "Let's say that we need to install the bare minimum Qt 5.15.2, with the modules ``qtcharts`` and ``qtlottie``:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:558
|
||||
msgid "This command will successfully install 3 archives: 1 for ``qtbase``, and one each for the two modules. If we had tried to use this command with previous versions of aqt, we would not have installed the two modules because we did not specify them in the ``--archives`` list."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:564
|
||||
msgid "You can still misuse the ``--archives`` flag by omitting the ``qtbase`` archive, or by omitting archives that another archive or module is dependent on. You may not notice that there is a problem until you try to compile a program, and compilation fails."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:570
|
||||
msgid "Installing the ``debug_info`` module"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:572
|
||||
msgid "Now let's say we need to install the ``debug_info`` module, which is particularly large: around one gigabyte. We do not want to install all of it, so we can use ``aqt install-qt --archives`` to choose which archives we want to install. Remember that the ``--archives`` flag"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:577
|
||||
msgid "``aqt list-qt --archives`` to print which archives are part of the ``debug_info`` module:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:589
|
||||
msgid "This is a lot of archives. Note that there's a name collision between the ``debug_info`` archives and the archives in every other module/Qt base install: this is because there's a ``debug_info`` archive that corresponds to almost every other archive available."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:595
|
||||
msgid "Let's install Qt with ``qtcharts`` and ``debug_info`` with some archives specified:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:602
|
||||
msgid "Notice what we did here: We specified the ``qtcharts`` and ``debug_info`` modules, and we specified the ``qtbase``, ``qtcharts``, and ``qtdeclarative`` archives. This will install a total of 6 archives:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:606
|
||||
msgid "the 3 archives named ``qtbase``, ``qtcharts``, and ``qtdeclarative`` from the ``debug_info`` module,"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:607
|
||||
msgid "the 1 archive ``qtcharts`` from the ``qtcharts`` module, and"
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:608
|
||||
msgid "the 2 archives ``qtbase`` and ``qtdeclarative`` from the base Qt installation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../getting_started.rst:611
|
||||
msgid "At present, ``aqt install-qt`` is incapable of installing any archive from the ``debug_info`` module without also installing the corresponding module from the base Qt installation. For instance, you cannot install the ``debug_info`` archive for ``qtbase`` without also installing the usual ``qtbase`` archive."
|
||||
msgstr ""
|
||||
41
docs/locale/pot/index.pot
Normal file
41
docs/locale/pot/index.pot
Normal file
@@ -0,0 +1,41 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../index.rst:2
|
||||
msgid "aqtinstall manual"
|
||||
msgstr ""
|
||||
|
||||
#: ../../index.rst:4
|
||||
msgid "Contents:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../index.rst:20
|
||||
msgid "Indices and tables"
|
||||
msgstr ""
|
||||
|
||||
#: ../../index.rst:22
|
||||
msgid ":ref:`genindex`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../index.rst:23
|
||||
msgid ":ref:`modindex`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../index.rst:24
|
||||
msgid ":ref:`search`"
|
||||
msgstr ""
|
||||
144
docs/locale/pot/installation.pot
Normal file
144
docs/locale/pot/installation.pot
Normal file
@@ -0,0 +1,144 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019-2021, Hiroshi Miura
|
||||
# This file is distributed under the same license as the aqtinstall package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: aqtinstall 3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-10-09 22:56+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../installation.rst:6
|
||||
msgid "Installation"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:9
|
||||
msgid "Requirements"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:11
|
||||
msgid "Minimum Python version: 3.6"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:12
|
||||
msgid "Recommended Python version: 3.7.5 or later"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:14
|
||||
msgid "Dependent libraries: requests, py7zr, semantic_version, patch, texttable, bs4"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:18
|
||||
msgid "Install by pip command"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:20
|
||||
msgid "Same as usual, it can be installed with `pip`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:29
|
||||
msgid "Command changes"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:31
|
||||
msgid "From version 2.0.0, sub commands are changed. The previous versions of these sub commands have been retained for backwards compatibility, but are no longer recommended."
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:36
|
||||
msgid "New sub commands"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:36
|
||||
msgid "Legacy sub commands"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:36
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:38
|
||||
msgid "install-qt"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:38
|
||||
msgid "install"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:38
|
||||
#: ../../installation.rst:45
|
||||
#: ../../installation.rst:49
|
||||
#: ../../installation.rst:54
|
||||
msgid "Version moved after target"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:40
|
||||
msgid "install-tool"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:40
|
||||
msgid "tool"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:40
|
||||
msgid "Arguments are changed"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:42
|
||||
msgid "New syntax doesn't take version"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:45
|
||||
msgid "install-example"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:45
|
||||
msgid "examples"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:47
|
||||
msgid "Caution with last (s)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:49
|
||||
msgid "install-src"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:49
|
||||
msgid "src"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:51
|
||||
msgid "New command only can take --kde option"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:54
|
||||
msgid "install-doc"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:54
|
||||
msgid "doc"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:56
|
||||
msgid "list"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:56
|
||||
msgid "Legacy list commands are removed."
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:59
|
||||
msgid "list-qt"
|
||||
msgstr ""
|
||||
|
||||
#: ../../installation.rst:61
|
||||
msgid "list-tool"
|
||||
msgstr ""
|
||||
@@ -2,9 +2,174 @@
|
||||
|
||||
.. default-role:: any
|
||||
|
||||
.. _changes:
|
||||
.. _previous_changes:
|
||||
|
||||
.. include:: ../CHANGELOG.rst
|
||||
====================
|
||||
Changes until v2.0.6
|
||||
====================
|
||||
|
||||
`v2.0.6`_ (7, Feb. 2022)
|
||||
========================
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Fix archives flag(#459)
|
||||
* Accept the case Update.xml in Server has delimiter without space(#479)
|
||||
* Fix getUrl function to use property http session and retry(#473)
|
||||
|
||||
Added
|
||||
-----
|
||||
* 32bit release binary(#471)
|
||||
|
||||
Changed
|
||||
-------
|
||||
* Update combinations.xml
|
||||
* Qt 6.2.2, 6.2.3, 6.3.0(#481,#484)
|
||||
|
||||
`v2.0.5`_ (11, Dec. 2021)
|
||||
=========================
|
||||
|
||||
Changed
|
||||
-------
|
||||
* Reduce memory consumption: garbage collection on install subprocess(#464)
|
||||
* Cache PowerShell modules on Azure Pipeline(#465)
|
||||
|
||||
`v2.0.4`_ (5, Dec. 2021)
|
||||
=========================
|
||||
|
||||
Fixed
|
||||
=====
|
||||
* Allow duplicated install on the directory previously installed(#438,#462)
|
||||
* Memory error on 32bit python on Windows(#436,#462)
|
||||
|
||||
Changed
|
||||
=======
|
||||
* Change list-src, list-doc and list-example command(#453)
|
||||
|
||||
`v2.0.3`_ (25, Nov. 2021)
|
||||
=========================
|
||||
|
||||
Added
|
||||
-----
|
||||
* Improve --keep and new --archive-dest options(#458)
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Fix cross-platform installation failure (#450)
|
||||
* CI: update OSes, Windows-2019, macOS-10.15(#444,#456)
|
||||
* CI: fix failure of uploading coveralls(#446)
|
||||
* CI: test for QtIFW(#451)
|
||||
|
||||
Changed
|
||||
-------
|
||||
* combinations matrix json(#452)
|
||||
|
||||
`v2.0.2`_ (1, Nov. 2021)
|
||||
=========================
|
||||
|
||||
Added
|
||||
-----
|
||||
* Support Qt 6.2.1 (#441)
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Degraded install-tool (#442,#443)
|
||||
|
||||
Changed
|
||||
-------
|
||||
* Add suggestion to use ``--external`` for MemoryError (#439)
|
||||
|
||||
|
||||
`v2.0.1`_ (29, Oct. 2021)
|
||||
=========================
|
||||
|
||||
Added
|
||||
-----
|
||||
* Allow retries on checksum error(#420)
|
||||
* Run on Python 3.10(#424)
|
||||
* Add more mirrors for fallback(#432)
|
||||
* Add fallback URL message(#434)
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* ``--noarchives`` inconsistency(#429)
|
||||
* Allow multiprocessing error propagation(#419)
|
||||
* Legacy command behavior, reproduce also old bugs (#414)
|
||||
* Fix crash on ``crash install-qt <host> <tgt> <spec>`` with no specified arch(#435)
|
||||
|
||||
Changed
|
||||
-------
|
||||
* Print working directory and version in error message(#418)
|
||||
|
||||
Security
|
||||
--------
|
||||
* Use HTTPS for mirror site(#430)
|
||||
|
||||
|
||||
`v2.0.0`_ (29, Sep. 2021)
|
||||
=========================
|
||||
|
||||
Added
|
||||
-----
|
||||
* Add error messages when user inputs an invalid semantic version(#291)
|
||||
* Security Policy document(#341)
|
||||
* CodeQL static code analysis(#341)
|
||||
* CI: generate combination json in actions (#318,#343)
|
||||
* Test: add and improve unit tests(#327,#359)
|
||||
* Docs: getting started section(#351)
|
||||
* Docs: recommend python3 for old systems(#349)
|
||||
* Automatically update combinations.json (#343,#344,#345,#386,#390,#395)
|
||||
* CI: test with Qt6.2 with modules(#346)
|
||||
* README: link documentation for stable(#329)
|
||||
* Support WASM on Qt 6.2.0(#384)
|
||||
* Add Binary distribution for Windows(#393,#397)
|
||||
* Add list-qt --archives feature(#400)
|
||||
* Require architecture when listing modules(#401)
|
||||
|
||||
Changed
|
||||
-------
|
||||
* list subcommand now support tool information(#235)
|
||||
* list subcommand can show versions, architectures and modules.(#235)
|
||||
* C: bundle jom.zip in source(#295)
|
||||
* Add max_retries configuration for connection(#296)
|
||||
* Change settings.ini to introduce [requests] section(#297)
|
||||
* Change log format for logging file.
|
||||
* Extension validation for tool subcommand(#314)
|
||||
* list subcommand has --tool-long option(#304, #319)
|
||||
* tool subcommand now install without version spec(#299)
|
||||
* README example command is now easy to copy-and-paste(#322)
|
||||
* list subcommand update(#331)
|
||||
* Improve handle of Ctrl-C keyboard interruption(#337)
|
||||
* Update combinations.json(#344,#386)
|
||||
* Turn warnings into errors when building docs(#360)
|
||||
* Update documentations(#358,#357)
|
||||
* Test: consolidate lint configuration to pyproject.toml(#356)
|
||||
* Test: black configuration to max_line_length=125 (#356)
|
||||
* New subcommand syntax (#354,#355)
|
||||
* Failed on missing modules(#374)
|
||||
* Failed on missing tools(#375)
|
||||
* Remove 'addons' prefix for some modules for Qt6+ (#368)
|
||||
* Fix inappropriate warnings(#370)
|
||||
* Update README to fix version 2 (#377)
|
||||
* list-qt: Specify version by SimpleSpec(#392)
|
||||
* Add helpful error messages when modules/tools/Qt version does not exist(#402)
|
||||
|
||||
Fixed
|
||||
-----
|
||||
* Fix helper.getUrl() to handle several response statuses(#292)
|
||||
* Fix Qt 6.2.0 target path for macOS.(#289)
|
||||
* Fix WinRT installation patching(#311)
|
||||
* Fix Qt 5.9.0 installation (#312)
|
||||
* Link documentations for stable/latest on README
|
||||
* Check python version when starting command (#352)
|
||||
* README: remove '$' from example command line(#321)
|
||||
* README: fix command line example lexer(#322)
|
||||
* CI: fix release script launch conditions(#298)
|
||||
* Handle special case for Qt 5.9.0(#364)
|
||||
* Running python2 -m aqt does not trigger Python version check (#372,#373)
|
||||
* docs(cli): correct the parameter of "list-tool" in an example(#399)
|
||||
* Doc: Fix broken mirror link in cli.rst (#403)
|
||||
* CI: fix release action fails with no files found(#405)
|
||||
|
||||
|
||||
`v1.2.5`_ (14, Aug. 2021)
|
||||
@@ -455,7 +620,7 @@ Changed
|
||||
Fixed
|
||||
-----
|
||||
|
||||
* Work around for http://download.qt.io/ returns wrong metalink xml data.(#105, #106)
|
||||
* Work around for https://download.qt.io/ returns wrong metalink xml data.(#105, #106)
|
||||
|
||||
|
||||
`v0.8a1`_ (28, Feb., 2020)
|
||||
@@ -864,6 +1029,13 @@ Fixed
|
||||
.. _7zip: https://www.7-zip.org/
|
||||
.. _requests: https://pypi.org/project/requests
|
||||
.. _argparse: https://pypi.org/project/argparse/
|
||||
.. _v2.0.6: https://github.com/miurahr/aqtinstall/compare/v2.0.5...v2.0.6
|
||||
.. _v2.0.5: https://github.com/miurahr/aqtinstall/compare/v2.0.4...v2.0.5
|
||||
.. _v2.0.4: https://github.com/miurahr/aqtinstall/compare/v2.0.3...v2.0.4
|
||||
.. _v2.0.3: https://github.com/miurahr/aqtinstall/compare/v2.0.2...v2.0.3
|
||||
.. _v2.0.2: https://github.com/miurahr/aqtinstall/compare/v2.0.1...v2.0.2
|
||||
.. _v2.0.1: https://github.com/miurahr/aqtinstall/compare/v2.0.0...v2.0.1
|
||||
.. _v2.0.0: https://github.com/miurahr/aqtinstall/compare/v1.2.5...v2.0.0
|
||||
.. _v1.2.5: https://github.com/miurahr/aqtinstall/compare/v1.2.4...v1.2.5
|
||||
.. _v1.2.4: https://github.com/miurahr/aqtinstall/compare/v1.2.3...v1.2.4
|
||||
.. _v1.2.3: https://github.com/miurahr/aqtinstall/compare/v1.2.2...v1.2.3
|
||||
122
pyproject.toml
122
pyproject.toml
@@ -1,7 +1,6 @@
|
||||
[project]
|
||||
name = "aqtinstall"
|
||||
description = "Another unofficial Qt installer"
|
||||
readme = "README.rst"
|
||||
license = {text = "MIT License"}
|
||||
authors = [
|
||||
{name = "Hiroshi Miura", email = "miurahr@linux.com"},
|
||||
@@ -21,19 +20,27 @@ classifiers = [
|
||||
"Topic :: Software Development",
|
||||
"Topic :: Software Development :: Libraries",
|
||||
]
|
||||
requires-python = ">=3.6"
|
||||
requires-python = ">=3.7"
|
||||
dependencies = [
|
||||
"bs4",
|
||||
"dataclasses;python_version<'3.7'",
|
||||
"bs4", # canonical name is beautifulsoup4
|
||||
"defusedxml",
|
||||
"humanize",
|
||||
"patch>=1.16",
|
||||
"py7zr>=0.18.3",
|
||||
"requests",
|
||||
"semantic_version",
|
||||
"py7zr>=0.20.6",
|
||||
"requests>=2.31.0",
|
||||
"semantic-version",
|
||||
"texttable",
|
||||
]
|
||||
dynamic = ["version", "entry-points"]
|
||||
dynamic = ["version", "readme"]
|
||||
|
||||
[tool.setuptools]
|
||||
packages = ["aqt"]
|
||||
|
||||
[tool.setuptools.dynamic]
|
||||
readme = {file = ["README.rst"]}
|
||||
|
||||
[tool.setuptools.package-data]
|
||||
aqt = ["*.yml", "*.json", "*.ini"]
|
||||
|
||||
[project.scripts]
|
||||
aqt = "aqt.__main__:main"
|
||||
@@ -42,18 +49,18 @@ aqt = "aqt.__main__:main"
|
||||
test = [
|
||||
"pytest>=6.0",
|
||||
"pytest-pep8",
|
||||
"pytest-remotedata",
|
||||
"pytest-cov",
|
||||
"pytest-remotedata>=0.4.1",
|
||||
"pytest-socket",
|
||||
"pytest-leaks",
|
||||
"pytest-timeout",
|
||||
"pympler",
|
||||
]
|
||||
check = [
|
||||
"flake8<5",
|
||||
"mypy>=0.990",
|
||||
"flake8>=6.0.0,<7.0.0",
|
||||
"flake8-black",
|
||||
"flake8-colors",
|
||||
"flake8-isort",
|
||||
"flake8-isort>=6.0.0,<7.0.0",
|
||||
"flake8-pyi",
|
||||
"flake8-typing-imports",
|
||||
"docutils",
|
||||
@@ -63,9 +70,12 @@ check = [
|
||||
"packaging",
|
||||
]
|
||||
docs = [
|
||||
"sphinx>=5.0",
|
||||
"sphinx_rtd_theme",
|
||||
"sphinx-py3doc-enhanced-theme",
|
||||
"sphinx>=7.0",
|
||||
"sphinx_rtd_theme>=1.3",
|
||||
"sphinx-py3doc-enhanced-theme>=2.4",
|
||||
]
|
||||
debug = [
|
||||
"pytest-leaks",
|
||||
]
|
||||
|
||||
[project.urls]
|
||||
@@ -73,10 +83,7 @@ Documentation = "https://aqtinstall.readthedocs.io/"
|
||||
"Bug Tracker" = "https://github.com/miurahr/aqtinstall/issues"
|
||||
Wiki = "https://github.com/miurahr/aqtinstall/wiki"
|
||||
Source = "https://github.com/miurahr/aqtinstall"
|
||||
Changelog = "https://github.com/miurahr/aqtinstall/blob/master/CHANGELOG.rst"
|
||||
|
||||
[tool.poetry]
|
||||
include = ["*.yml", "*.json", "*.ini"]
|
||||
Changelog = "https://aqtinstall.readthedocs.io/en/latest/CHANGELOG.html"
|
||||
|
||||
[build-system]
|
||||
requires = ["setuptools>=61", "wheel", "setuptools_scm[toml]>=6.4"]
|
||||
@@ -104,7 +111,7 @@ exclude_lines = ["if __name__ == .__main__.:", "pragma: no-cover", "@abstract",
|
||||
|
||||
[tool.black]
|
||||
line-length = 125
|
||||
target-version = ['py38']
|
||||
target-version = ['py39']
|
||||
|
||||
[tool.isort]
|
||||
line_length = 125
|
||||
@@ -117,10 +124,40 @@ use_parentheses = true
|
||||
ensure_newline_before_comments = true
|
||||
|
||||
[tool.mypy]
|
||||
warn_redundant_casts = true
|
||||
warn_unused_ignores = true
|
||||
# Untyped definitions and calls are disable in default
|
||||
check_untyped_defs = false
|
||||
disallow_incomplete_defs = false
|
||||
disallow_untyped_calls = false
|
||||
disallow_untyped_defs = false
|
||||
disallow_untyped_decorators = false
|
||||
# not a all 3rd party package has type hints
|
||||
ignore_missing_imports = true
|
||||
# Optional check: implicit check enabled in mypy 0.980 or before
|
||||
strict_optional = true
|
||||
implicit_optional = false
|
||||
# Enable incremental mode and use sqlite cache
|
||||
incremental = true
|
||||
sqlite_cache = true
|
||||
# Enables PEP 420 style namespace packages
|
||||
namespace_packages = true
|
||||
# Control error output
|
||||
pretty = true
|
||||
color_output = true
|
||||
show_error_context = false
|
||||
show_column_numbers = true
|
||||
error_summary = true
|
||||
# configuring warnings
|
||||
warn_no_return = true
|
||||
warn_redundant_casts = true
|
||||
warn_return_any = true
|
||||
warn_unreachable = true
|
||||
warn_unused_ignores = true
|
||||
|
||||
# TODO: Remove this `ignore_missing_imports` and add type stubs.
|
||||
# See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
|
||||
[[tool.mypy.overrides]]
|
||||
module = "texttable"
|
||||
ignore_missing_imports = true
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
minversion = "6.0"
|
||||
@@ -137,14 +174,14 @@ markers = [
|
||||
[tool.tox]
|
||||
legacy_tox_ini = """
|
||||
[tox]
|
||||
envlist = check, docs, py{36,37,38,39,310}, py39d, mprof, fil
|
||||
envlist = check, docs, py{37,38,39,310,311}, py39d, mprof, fil, mypy
|
||||
isolated_build = True
|
||||
|
||||
[testenv]
|
||||
passenv =
|
||||
GITHUB_*
|
||||
APPVEYOR APPVEYOR_*
|
||||
TRAVIS TRAVIS_*
|
||||
GITHUB*
|
||||
APPVEYOR*
|
||||
TRAVIS*
|
||||
COVERALLS_*
|
||||
PYTEST_ADDOPTS
|
||||
extras = test, check, docs
|
||||
@@ -152,14 +189,23 @@ commands =
|
||||
python -m pytest -vv
|
||||
|
||||
[testenv:check]
|
||||
basepython = python3.8
|
||||
basepython = python3.9
|
||||
extras = check
|
||||
commands =
|
||||
check-manifest {toxinidir}
|
||||
flake8 aqt tests
|
||||
|
||||
[testenv:mypy]
|
||||
basepython = python3.9
|
||||
extras = check
|
||||
commands = mypy aqt
|
||||
deps =
|
||||
types-requests
|
||||
types-beautifulsoup4
|
||||
types-psutil
|
||||
|
||||
[testenv:docs]
|
||||
basepython = python3.8
|
||||
basepython = python3.9
|
||||
extras = docs
|
||||
commands =
|
||||
sphinx-build {posargs:-E} -W -b html docs build/docs
|
||||
@@ -167,18 +213,13 @@ commands =
|
||||
|
||||
[testenv:py39d]
|
||||
basepython = python3.9d
|
||||
extras = test
|
||||
extras = test, debug
|
||||
commands =
|
||||
python3.9-dbg -m pytest -v --no-cov -R : -k "test_install"
|
||||
deps =
|
||||
pytest
|
||||
pytest-leaks
|
||||
pytest-remotedata
|
||||
pytest-socket
|
||||
pytest-cov
|
||||
|
||||
[testenv:mprof]
|
||||
basepython = python3.8
|
||||
basepython = python3.9
|
||||
extras = debug
|
||||
commands =
|
||||
mprof run --multiprocess python -m aqt install-qt -O /tmp -d /tmp linux desktop 6.2.1
|
||||
mprof plot --output memory-profile.png
|
||||
@@ -187,7 +228,8 @@ deps =
|
||||
matplotlib
|
||||
|
||||
[testenv:fil]
|
||||
basepython = python3.8
|
||||
basepython = python3.9
|
||||
extras = debug
|
||||
commands =
|
||||
fil-profile run -m aqt install-qt -O /tmp -d /tmp linux desktop 6.2.1
|
||||
deps =
|
||||
@@ -202,8 +244,8 @@ commands =
|
||||
|
||||
[gh-actions]
|
||||
python =
|
||||
3.6: py36
|
||||
3.8: py38, docs, check
|
||||
3.9: py39
|
||||
3.8: py38
|
||||
3.9: py39, docs, check, mypy
|
||||
3.10: py310
|
||||
3.11: py311
|
||||
"""
|
||||
|
||||
79
setup.cfg
79
setup.cfg
@@ -1,79 +0,0 @@
|
||||
[metadata]
|
||||
name = aqtinstall
|
||||
description = Another unofficial Qt installer
|
||||
long_description = file: README.rst
|
||||
long_description_content_type = text/x-rst
|
||||
license = MIT
|
||||
author = Hiroshi Miura
|
||||
author_email = miurahr@linux.com
|
||||
url = http://github.com/miurahr/aqtinstall
|
||||
project_urls =
|
||||
Documentation = https://aqtinstall.readthedocs.io/
|
||||
Bug Tracker = https://github.com/miurahr/aqtinstall/issues
|
||||
Wiki = https://github.com/miurahr/aqtinstall/wiki
|
||||
Source = https://github.com/miurahr/aqtinstall
|
||||
Changelog = https://github.com/miurahr/aqtinstall/blob/master/CHANGELOG.rst
|
||||
classifiers =
|
||||
Development Status :: 4 - Beta
|
||||
Environment :: Console
|
||||
Environment :: X11 Applications :: Qt
|
||||
Intended Audience :: Developers
|
||||
License :: OSI Approved :: MIT License
|
||||
Operating System :: MacOS :: MacOS X
|
||||
Operating System :: Microsoft :: Windows
|
||||
Operating System :: POSIX
|
||||
Operating System :: POSIX :: Linux
|
||||
Programming Language :: Python
|
||||
Programming Language :: C++
|
||||
Topic :: Software Development
|
||||
Topic :: Software Development :: Libraries
|
||||
|
||||
[options]
|
||||
python_requires = >= 3.6
|
||||
install_requires =
|
||||
bs4
|
||||
dataclasses;python_version<'3.7'
|
||||
defusedxml
|
||||
humanize
|
||||
patch>=1.16
|
||||
py7zr>=0.18.3
|
||||
requests
|
||||
semantic_version
|
||||
texttable
|
||||
setup_requires =
|
||||
setuptools-scm[toml]>=6.4
|
||||
setuptools>=61
|
||||
packages = aqt
|
||||
|
||||
[options.entry_points]
|
||||
console_scripts =
|
||||
aqt = aqt.__main__:main
|
||||
|
||||
[options.package_data]
|
||||
aqt = *.yml, *.json, *.ini
|
||||
|
||||
[options.extras_require]
|
||||
test =
|
||||
pytest
|
||||
pytest-pep8
|
||||
pytest-remotedata
|
||||
pytest-cov
|
||||
pytest-socket
|
||||
pytest-leaks
|
||||
pympler
|
||||
check =
|
||||
flake8
|
||||
flake8-black
|
||||
flake8-colors
|
||||
flake8-isort
|
||||
flake8-pyi
|
||||
flake8-typing-imports
|
||||
docutils
|
||||
check-manifest
|
||||
readme-renderer
|
||||
pygments
|
||||
packaging
|
||||
docs =
|
||||
sphinx>=2.3
|
||||
sphinx_rtd_theme
|
||||
sphinx-py3doc-enhanced-theme
|
||||
@@ -9,7 +9,9 @@
|
||||
"5.14.0 5.14.1 5.14.2",
|
||||
"5.15.0 5.15.1 5.15.2",
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
"6.1.0",
|
||||
"6.2.0",
|
||||
"6.5.0"
|
||||
],
|
||||
"preview": [
|
||||
"5.9-preview",
|
||||
@@ -25,8 +27,11 @@
|
||||
"wasm": [
|
||||
"5.13.0 5.13.1 5.13.2",
|
||||
"5.14.0 5.14.1 5.14.2",
|
||||
"5.15.0 5.15.1 5.15.2"
|
||||
"5.15.0 5.15.1 5.15.2",
|
||||
"6.2.0"
|
||||
],
|
||||
"wasm_singlethread": ["6.5.0"],
|
||||
"wasm_multithread": ["6.5.0"],
|
||||
"wasm_preview": [
|
||||
"5.13-preview",
|
||||
"5.14-preview",
|
||||
@@ -74,6 +79,7 @@
|
||||
"tools_ifw",
|
||||
"tools_generic",
|
||||
"tools_conan",
|
||||
"tools_cmake"
|
||||
"tools_cmake",
|
||||
"sdktool"
|
||||
]
|
||||
}
|
||||
@@ -38,6 +38,14 @@
|
||||
<tr><td valign="top"> </td><td><a href="tools_generic/">tools_generic/</a></td><td align="right">13-Apr-2021 14:39 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_conan/">tools_conan/</a></td><td align="right">15-Feb-2021 12:14 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_cmake/">tools_cmake/</a></td><td align="right">07-Jan-2021 14:22 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="sdktool/">sdktool/</a></td><td align="right">05-May-2023 10:53 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_650_wasm_singlethread/">qt6_650_wasm_singlethread/</a></td><td align="right">01-Jan-2023 00:00 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_650_wasm_multithread/">qt6_650_wasm_multithread/</a></td><td align="right">01-Jan-2023 00:00 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_650_src_doc_examples/">qt6_650_src_doc_examples/</a></td><td align="right">01-Jan-2023 00:00 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_650/">qt6_650/</a></td><td align="right">01-Jan-2023 00:00 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_620_wasm/">qt6_620_wasm/</a></td><td align="right">29-Sep-2021 12:46 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_620_src_doc_examples/">qt6_620_src_doc_examples/</a></td><td align="right">29-Sep-2021 12:43 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_620/">qt6_620/</a></td><td align="right">29-Sep-2021 12:34 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_610_src_doc_examples/">qt6_610_src_doc_examples/</a></td><td align="right">30-Apr-2021 08:09 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_610/">qt6_610/</a></td><td align="right">30-Apr-2021 08:07 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603_src_doc_examples/">qt6_603_src_doc_examples/</a></td><td align="right">31-Mar-2021 07:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
|
||||
@@ -9,7 +9,9 @@
|
||||
"5.14.0 5.14.1 5.14.2",
|
||||
"5.15.0 5.15.1 5.15.2",
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
"6.1.0",
|
||||
"6.2.0",
|
||||
"6.5.0"
|
||||
],
|
||||
"preview": [
|
||||
"5.6-preview",
|
||||
@@ -26,8 +28,11 @@
|
||||
"wasm": [
|
||||
"5.13.1 5.13.2",
|
||||
"5.14.0 5.14.1 5.14.2",
|
||||
"5.15.0 5.15.1 5.15.2"
|
||||
"5.15.0 5.15.1 5.15.2",
|
||||
"6.2.0"
|
||||
],
|
||||
"wasm_singlethread": ["6.5.0"],
|
||||
"wasm_multithread": ["6.5.0"],
|
||||
"wasm_preview": [
|
||||
"5.13-preview",
|
||||
"5.14-preview",
|
||||
@@ -75,6 +80,7 @@
|
||||
"tools_ifw",
|
||||
"tools_generic",
|
||||
"tools_conan",
|
||||
"tools_cmake"
|
||||
"tools_cmake",
|
||||
"sdktool"
|
||||
]
|
||||
}
|
||||
14
tests/data/mac-desktop-sdktool-expect.json
Normal file
14
tests/data/mac-desktop-sdktool-expect.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"modules": [
|
||||
"qt.tools.qtcreator"
|
||||
],
|
||||
"long_listing": [
|
||||
[
|
||||
"qt.tools.qtcreator",
|
||||
"10.0.1-0-202305050734",
|
||||
"2023-05-05",
|
||||
"SDKTool",
|
||||
"SDKTool"
|
||||
]
|
||||
]
|
||||
}
|
||||
20
tests/data/mac-desktop-sdktool-update.xml
Normal file
20
tests/data/mac-desktop-sdktool-update.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<Updates>
|
||||
<ApplicationName>{AnyApplication}</ApplicationName>
|
||||
<ApplicationVersion>1.0.0</ApplicationVersion>
|
||||
<Checksum>true</Checksum>
|
||||
<PackageUpdate>
|
||||
<Name>qt.tools.qtcreator</Name>
|
||||
<DisplayName>SDKTool</DisplayName>
|
||||
<Description>SDKTool</Description>
|
||||
<Version>10.0.1-0-202305050734</Version>
|
||||
<ReleaseDate>2023-05-05</ReleaseDate>
|
||||
<Script>installscript.qs</Script>
|
||||
<Virtual>true</Virtual>
|
||||
<ForcedInstallation>true</ForcedInstallation>
|
||||
<DownloadableArchives>qtcreator_sdktool.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="1821889" UncompressedSize="6058248" OS="Any"/>
|
||||
<SHA1>450d20347716f794124272a38d7cf46df9c50169</SHA1>
|
||||
</PackageUpdate>
|
||||
<SHA1>c6d6c9ff8b3c0a75f1bb1804eb4955a6409ac867</SHA1>
|
||||
<MetadataName>2023-05-05-0734_meta.7z</MetadataName>
|
||||
</Updates>
|
||||
@@ -38,6 +38,14 @@
|
||||
<tr><td valign="top"> </td><td><a href="tools_generic/">tools_generic/</a></td><td align="right">13-Apr-2021 14:39 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_conan/">tools_conan/</a></td><td align="right">15-Feb-2021 12:15 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_cmake/">tools_cmake/</a></td><td align="right">07-Jan-2021 14:22 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="sdktool/">sdktool/</a></td><td align="right">05-May-2023 10:53 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_650_wasm_singlethread/">qt6_650_wasm_singlethread/</a></td><td align="right">01-Jan-2023 00:00 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_650_wasm_multithread/">qt6_650_wasm_multithread/</a></td><td align="right">01-Jan-2023 00:00 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_650_src_doc_examples/">qt6_650_src_doc_examples/</a></td><td align="right">01-Jan-2023 00:00 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_650/">qt6_650/</a></td><td align="right">01-Jan-2023 00:00 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_620_wasm/">qt6_620_wasm/</a></td><td align="right">29-Sep-2021 12:46 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_620_src_doc_examples/">qt6_620_src_doc_examples/</a></td><td align="right">29-Sep-2021 12:43 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_620/">qt6_620/</a></td><td align="right">29-Sep-2021 12:34 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_610_src_doc_examples/">qt6_610_src_doc_examples/</a></td><td align="right">30-Apr-2021 08:13 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_610/">qt6_610/</a></td><td align="right">30-Apr-2021 08:13 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603_src_doc_examples/">qt6_603_src_doc_examples/</a></td><td align="right">31-Mar-2021 07:34 </td><td align="right"> - </td><td> </td></tr>
|
||||
|
||||
18
tests/data/windows-5140-wasm-expect.json
Normal file
18
tests/data/windows-5140-wasm-expect.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"architectures": [
|
||||
"wasm_32"
|
||||
],
|
||||
"modules_by_arch": {
|
||||
"wasm_32": [
|
||||
"qtcharts",
|
||||
"qtdatavis3d",
|
||||
"qtlottie",
|
||||
"qtnetworkauth",
|
||||
"qtpurchasing",
|
||||
"qtquicktimeline",
|
||||
"qtscript",
|
||||
"qtvirtualkeyboard",
|
||||
"qtwebplugin"
|
||||
]
|
||||
}
|
||||
}
|
||||
291
tests/data/windows-5140-wasm-update.xml
Normal file
291
tests/data/windows-5140-wasm-update.xml
Normal file
@@ -0,0 +1,291 @@
|
||||
<Updates>
|
||||
<ApplicationName>{AnyApplication}</ApplicationName>
|
||||
<ApplicationVersion>1.0.0</ApplicationVersion>
|
||||
<Checksum>true</Checksum>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtcharts</Name>
|
||||
<DisplayName>Qt Charts</DisplayName>
|
||||
<Description>The Qt Charts API lets you easily create interactive and dynamic 2D charts using C++ and/or Qt Quick.<br><br>This component is available under commercial licenses from The Qt Company, or under GPL v3. For open source use, please note the additional requirements compared to LGPL v3.</Description>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<Default>false</Default>
|
||||
<SortingPriority>89</SortingPriority>
|
||||
<Dependencies>qt.qt5.5140.doc.qtcharts, qt.qt5.5140.examples.qtcharts</Dependencies>
|
||||
<AutoDependOn/>
|
||||
<Script>installscript.qs</Script>
|
||||
<DownloadableArchives/>
|
||||
<UpdateFile CompressedSize="0" OS="Any" UncompressedSize="0"/>
|
||||
<SHA1>6c5eeb7879b8d08041fc9d1b3ec2c4a83b956f75</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtcharts.wasm_32</Name>
|
||||
<DisplayName>Qt Charts for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<AutoDependOn>qt.qt5.5140.qtcharts, qt.qt5.5140.wasm_32</AutoDependOn>
|
||||
<Dependencies>qt.qt5.5140.wasm_32</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtcharts-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="2491642" OS="Any" UncompressedSize="9011562"/>
|
||||
<SHA1>826c45ce5c2ead4fb2b98fcaf037f41f30e603bc</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtdatavis3d</Name>
|
||||
<DisplayName>Qt Data Visualization</DisplayName>
|
||||
<Description>Qt Data Visualization is a module which provides a way to visualize data in 3D. There are C++ classes and QML types for displaying bar graphs, scatter graphs, surface graphs and ways of manipulating the 3D scene. In addition, the graphs are fully customizable with different themes.<br><br>This component is available under commercial licenses from The Qt Company, or under GPL v3. For open source use, please note the additional requirements compared to LGPL v3.</Description>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<Default>false</Default>
|
||||
<SortingPriority>88</SortingPriority>
|
||||
<Dependencies>qt.qt5.5140.doc.qtdatavis3d, qt.qt5.5140.examples.qtdatavis3d</Dependencies>
|
||||
<AutoDependOn/>
|
||||
<Script>installscript.qs</Script>
|
||||
<DownloadableArchives/>
|
||||
<UpdateFile CompressedSize="0" OS="Any" UncompressedSize="0"/>
|
||||
<SHA1>00897be97807dba6650c13994b6d1288a7f3c7de</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtdatavis3d.wasm_32</Name>
|
||||
<DisplayName>Qt Data Visualization for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<AutoDependOn>qt.qt5.5140.qtdatavis3d, qt.qt5.5140.wasm_32</AutoDependOn>
|
||||
<Dependencies>qt.qt5.5140.wasm_32</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtdatavis3d-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="2050196" OS="Any" UncompressedSize="7106514"/>
|
||||
<SHA1>496e2fda0f3408271f6ebe6c880f163ead6be7fa</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtlottie</Name>
|
||||
<DisplayName>Qt Lottie Animation (Technology Preview)</DisplayName>
|
||||
<Description>Qt Lottie Animation provides a QML API for rendering graphics and animations that are exported in JSON format by the Bodymovin plugin for Adobe After Effects.<br><br>This component is available under commercial licenses from The Qt Company, or under GPL v3. For open source use, please note the additional requirements compared to LGPL v3.</Description>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<Default>false</Default>
|
||||
<SortingPriority>88</SortingPriority>
|
||||
<Dependencies>qt.qt5.5140.doc.qtlottie, qt.qt5.5140.examples.qtlottie</Dependencies>
|
||||
<AutoDependOn/>
|
||||
<Script>installscript.qs</Script>
|
||||
<DownloadableArchives/>
|
||||
<UpdateFile CompressedSize="0" OS="Any" UncompressedSize="0"/>
|
||||
<SHA1>12e0a4e0427833e88ef6af4c2b416146764ced84</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtlottie.wasm_32</Name>
|
||||
<DisplayName>Qt Lottie Animation for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<AutoDependOn>qt.qt5.5140.qtlottie, qt.qt5.5140.wasm_32</AutoDependOn>
|
||||
<Dependencies>qt.qt5.5140.wasm_32</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtlottie-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="596645" OS="Any" UncompressedSize="1757999"/>
|
||||
<SHA1>3d3b8b1ed28bbbbafa20bd7c19b8d23bd5a12b5c</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtnetworkauth</Name>
|
||||
<DisplayName>Qt Network Authorization</DisplayName>
|
||||
<Description>Qt Network Authorization is an add-on library that enables Qt applications to use different web authentication systems.</Description>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<Default>false</Default>
|
||||
<SortingPriority>10</SortingPriority>
|
||||
<Dependencies>qt.qt5.5140.doc.qtnetworkauth, qt.qt5.5140.examples.qtnetworkauth</Dependencies>
|
||||
<AutoDependOn/>
|
||||
<Script>installscript.qs</Script>
|
||||
<DownloadableArchives/>
|
||||
<UpdateFile CompressedSize="0" OS="Any" UncompressedSize="0"/>
|
||||
<SHA1>7642c9f02e7bee9e300b56876bf205be22591a54</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtnetworkauth.wasm_32</Name>
|
||||
<DisplayName>Qt Network Authorization for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<AutoDependOn>qt.qt5.5140.qtnetworkauth, qt.qt5.5140.wasm_32</AutoDependOn>
|
||||
<Dependencies>qt.qt5.5140.wasm_32</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtnetworkauth-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="158593" OS="Any" UncompressedSize="448180"/>
|
||||
<SHA1>69f8e088ec3397f59d9c6f86beed710feadf70ce</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtpurchasing</Name>
|
||||
<DisplayName>Qt Purchasing</DisplayName>
|
||||
<Description>Qt Purchasing. Cross-platform APIs for handling in-app purchases on Android, iOS and macOS.</Description>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<Default>false</Default>
|
||||
<SortingPriority>87</SortingPriority>
|
||||
<Dependencies>qt.qt5.5140.doc.qtpurchasing, qt.qt5.5140.examples.qtpurchasing</Dependencies>
|
||||
<AutoDependOn/>
|
||||
<Script>installscript.qs</Script>
|
||||
<DownloadableArchives/>
|
||||
<UpdateFile CompressedSize="0" OS="Any" UncompressedSize="0"/>
|
||||
<SHA1>04aac5a70b3864f5ea89dc0aedcd9a6d6489cc90</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtpurchasing.wasm_32</Name>
|
||||
<DisplayName>Qt Purchasing for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<AutoDependOn>qt.qt5.5140.qtpurchasing, qt.qt5.5140.wasm_32</AutoDependOn>
|
||||
<Dependencies>qt.qt5.5140.wasm_32</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtpurchasing-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="94847" OS="Any" UncompressedSize="331745"/>
|
||||
<SHA1>594234def34d8b9e66152d024c194827314b7427</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtquicktimeline</Name>
|
||||
<DisplayName>Qt Quick Timeline </DisplayName>
|
||||
<Description>The Qt Quick Timeline module enables keyframe-based animations and parameterization. It takes a tooling-friendly approach, and is therefore directly supported by Qt Design Studio and Qt Quick Designer that contain a timeline editor for creating keyframe based animations.<br><br>This component is available under commercial licenses from The Qt Company, or under GPL v3. For open source use, please note the additional requirements compared to LGPL v3.</Description>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<Default>false</Default>
|
||||
<SortingPriority>0</SortingPriority>
|
||||
<Dependencies>qt.qt5.5140.doc.qtquicktimeline, qt.qt5.5140.examples.qtquicktimeline</Dependencies>
|
||||
<AutoDependOn/>
|
||||
<Script>installscript.qs</Script>
|
||||
<DownloadableArchives/>
|
||||
<UpdateFile CompressedSize="0" OS="Any" UncompressedSize="0"/>
|
||||
<SHA1>0ed2a09e664371f045ffba1ea62230de6a5a09bd</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtquicktimeline.wasm_32</Name>
|
||||
<DisplayName>Qt Quick Timeline for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<AutoDependOn>qt.qt5.5140.qtquicktimeline, qt.qt5.5140.wasm_32</AutoDependOn>
|
||||
<Dependencies>qt.qt5.5140.wasm_32</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtquicktimeline-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="91340" OS="Any" UncompressedSize="238917"/>
|
||||
<SHA1>fa03bab96695ee6657d7c761af33bc68dbbf9fc5</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtscript</Name>
|
||||
<DisplayName>Qt Script (Deprecated)</DisplayName>
|
||||
<Description>Qt Script (Deprecated) Prebuilt Components for Qt 5.14.0.<br><br>This component contains Third-Party Content licensed under LGPLv2.0. Please note the additional requirements of the license.</Description>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<Default>false</Default>
|
||||
<SortingPriority>9</SortingPriority>
|
||||
<Dependencies>qt.qt5.5140.doc.qtscript, qt.qt5.5140.examples.qtscript</Dependencies>
|
||||
<AutoDependOn/>
|
||||
<Script>installscript.qs</Script>
|
||||
<DownloadableArchives/>
|
||||
<UpdateFile CompressedSize="0" OS="Any" UncompressedSize="0"/>
|
||||
<SHA1>55c913d943ac8c893b0c8cf2295ccabff5ae9a41</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtscript.wasm_32</Name>
|
||||
<DisplayName>Qt Script for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<AutoDependOn>qt.qt5.5140.qtscript, qt.qt5.5140.wasm_32</AutoDependOn>
|
||||
<Dependencies>qt.qt5.5140.wasm_32</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtscript-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="4177683" OS="Any" UncompressedSize="12729104"/>
|
||||
<SHA1>6951cdbfa4474875de4f6de446a1e2b6f78dd40b</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtvirtualkeyboard</Name>
|
||||
<DisplayName>Qt Virtual Keyboard</DisplayName>
|
||||
<Description>The Qt Virtual Keyboard is a Qt Quick virtual keyboard that you can plug in to your platform or application. You can extend it with your own layouts and styles.<br><br>This component is available under commercial licenses from The Qt Company, or under GPL v3. For open source use, please note the additional requirements compared to LGPL v3.</Description>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<Default>false</Default>
|
||||
<SortingPriority>85</SortingPriority>
|
||||
<Dependencies>qt.qt5.5140.doc.qtvirtualkeyboard, qt.qt5.5140.examples.qtvirtualkeyboard</Dependencies>
|
||||
<AutoDependOn/>
|
||||
<Script>installscript.qs</Script>
|
||||
<DownloadableArchives/>
|
||||
<UpdateFile CompressedSize="0" OS="Any" UncompressedSize="0"/>
|
||||
<SHA1>f20beb1a53b150ed1ff6c9b04fb4717f955cff20</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtvirtualkeyboard.wasm_32</Name>
|
||||
<DisplayName>Qt Virtual Keyboard for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<AutoDependOn>qt.qt5.5140.qtvirtualkeyboard, qt.qt5.5140.wasm_32</AutoDependOn>
|
||||
<Dependencies>qt.qt5.5140.wasm_32</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtvirtualkeyboard-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="3162708" OS="Any" UncompressedSize="8341816"/>
|
||||
<SHA1>b68ed8d9aabf3465e1ab1e4d90b00540d88c0f0b</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtwebglplugin</Name>
|
||||
<DisplayName>Qt WebGL Streaming Plugin</DisplayName>
|
||||
<Description>The Qt WebGL Streaming Plugin is a Qt Platform Abstraction plugin which provides streaming of Qt Quick & Qt OpenGL applications over the network to a WebGL capable browser.<br><br>This component is available under commercial licenses from The Qt Company, or under GPL v3. For open source use, please note the additional requirements compared to LGPL v3.</Description>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<Default>false</Default>
|
||||
<SortingPriority>10</SortingPriority>
|
||||
<AutoDependOn/>
|
||||
<Script>installscript.qs</Script>
|
||||
<DownloadableArchives/>
|
||||
<UpdateFile CompressedSize="0" OS="Any" UncompressedSize="0"/>
|
||||
<SHA1>d6731dfbdd646821d6862d010e1fcaf3177dcaac</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.qtwebglplugin.wasm_32</Name>
|
||||
<DisplayName>Qt WebGL Streaming Plugin for WebAssembly</DisplayName>
|
||||
<Description>Qt WebGL Streaming Plugin</Description>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<AutoDependOn>qt.qt5.5140.qtwebglplugin, qt.qt5.5140.wasm_32</AutoDependOn>
|
||||
<Dependencies>qt.qt5.5140.wasm_32</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtwebglplugin-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="750212" OS="Any" UncompressedSize="2088810"/>
|
||||
<SHA1>7ffe111181b4a1dd3826c3696b16ee94dc267086</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5140.wasm_32</Name>
|
||||
<DisplayName>WebAssembly</DisplayName>
|
||||
<Description>Qt 5.14.0 Prebuilt Components for WebAssembly (Desktop)</Description>
|
||||
<Version>5.14.0-0-201912110813</Version>
|
||||
<ReleaseDate>2019-12-11</ReleaseDate>
|
||||
<Dependencies>qt.tools.qtcreator, qt.qt5.5140.doc, qt.qt5.5140.examples</Dependencies>
|
||||
<AutoDependOn/>
|
||||
<Default>false</Default>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority>700</SortingPriority>
|
||||
<DownloadableArchives>qtbase-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qtwebchannel-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qtmultimedia-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qttranslations-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qtgraphicaleffects-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qtsvg-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qtdeclarative-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qtwebsockets-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qtimageformats-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qttools-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qtxmlpatterns-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qtsensors-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qtquickcontrols-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qtquickcontrols2-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qtwebview-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qtscxml-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qtgamepad-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qtspeech-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, qtremoteobjects-Windows-Windows_10-Mingw73-Windows-WebAssembly-X86_64.7z, x86_64-7.3.0-release-posix-seh-rt_v5-rev0-runtime.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="78067039" OS="Any" UncompressedSize="280467092"/>
|
||||
<SHA1>3650fe70aa645834b180b63e27689c55cce884b4</SHA1>
|
||||
</PackageUpdate>
|
||||
<MetadataName>2020-08-21-1954_meta.7z</MetadataName>
|
||||
<SHA1>69ef012916d9974bface5a15406e8acdf9158fa5</SHA1>
|
||||
</Updates>
|
||||
26
tests/data/windows-650-wasm-multi-expect.json
Normal file
26
tests/data/windows-650-wasm-multi-expect.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"architectures": [
|
||||
"wasm_multithread"
|
||||
],
|
||||
"modules_by_arch": {
|
||||
"wasm_multithread": [
|
||||
"qtcharts",
|
||||
"qtdatavis3d",
|
||||
"qtgrpc",
|
||||
"qthttpserver",
|
||||
"qtimageformats",
|
||||
"qtlottie",
|
||||
"qtmultimedia",
|
||||
"qtquick3dphysics",
|
||||
"qtscxml",
|
||||
"qtspeech",
|
||||
"qtvirtualkeyboard",
|
||||
"qtwebchannel",
|
||||
"qtwebsockets",
|
||||
"qt5compat",
|
||||
"qtquick3d",
|
||||
"qtquicktimeline",
|
||||
"qtshadertools"
|
||||
]
|
||||
}
|
||||
}
|
||||
290
tests/data/windows-650-wasm-multi-update.xml
Normal file
290
tests/data/windows-650-wasm-multi-update.xml
Normal file
@@ -0,0 +1,290 @@
|
||||
<Updates>
|
||||
<ApplicationName>{AnyApplication}</ApplicationName>
|
||||
<ApplicationVersion>1.0.0</ApplicationVersion>
|
||||
<Checksum>true</Checksum>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtcharts.wasm_multithread</Name>
|
||||
<DisplayName>Qt Charts for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtcharts, qt.qt6.650.wasm_multithread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_multithread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtcharts-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="779232" UncompressedSize="7404114" OS="Any"/>
|
||||
<SHA1>a84793455e6f234204956d2a535ef7487e12f746</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtdatavis3d.wasm_multithread</Name>
|
||||
<DisplayName>Qt Data Visualization for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtdatavis3d, qt.qt6.650.wasm_multithread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_multithread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtdatavis3d-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="598226" UncompressedSize="4649321" OS="Any"/>
|
||||
<SHA1>942fb21a8ba4338a2c94c15bc3564d9ed016aa91</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtgrpc.wasm_multithread</Name>
|
||||
<DisplayName>Qt Protobuf and Qt GRPC for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtgrpc, qt.qt6.650.wasm_multithread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_multithread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtgrpc-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="194841" UncompressedSize="2725367" OS="Any"/>
|
||||
<SHA1>eab733c1b40b2ba93eac301090ed2e40d1bfb309</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qthttpserver.wasm_multithread</Name>
|
||||
<DisplayName>Qt HTTP Server for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qthttpserver, qt.qt6.650.wasm_multithread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_multithread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qthttpserver-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="60073" UncompressedSize="297714" OS="Any"/>
|
||||
<SHA1>14b847981005d193938f7c3e8f6608d8518a6366</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtimageformats.wasm_multithread</Name>
|
||||
<DisplayName>Qt ImageFormats for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtimageformats, qt.qt6.650.wasm_multithread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_multithread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtimageformats-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="303380" UncompressedSize="1283471" OS="Any"/>
|
||||
<SHA1>ff3b43b3e1b9fe078761b75dada9d725f47d9af3</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtlottie.wasm_multithread</Name>
|
||||
<DisplayName>Qt Lottie Animation for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtlottie, qt.qt6.650.wasm_multithread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_multithread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtlottie-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="155315" UncompressedSize="1007914" OS="Any"/>
|
||||
<SHA1>3869563cef20f85ecc55e66fd0875a37a820175c</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtmultimedia.wasm_multithread</Name>
|
||||
<DisplayName>Qt Multimedia for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtmultimedia, qt.qt6.650.wasm_multithread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_multithread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtmultimedia-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="756305" UncompressedSize="5109691" OS="Any"/>
|
||||
<SHA1>8f7053696b1258f4e0511fd233e24be98b96bddf</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtquick3dphysics</Name>
|
||||
<DisplayName>Quick: 3D Physics</DisplayName>
|
||||
<Description>Qt Quick 3D Physics provides a high-level QML module adding physical simulation capabilities to Qt Quick 3D.</Description>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<Default>false</Default>
|
||||
<Dependencies>qt.qt6.650.doc.qtquick3dphysics, qt.qt6.650.examples.qtquick3dphysics, qt.qt6.650.qtquick3d, qt.qt6.650.qtshadertools</Dependencies>
|
||||
<AutoDependOn/>
|
||||
<DownloadableArchives/>
|
||||
<UpdateFile CompressedSize="0" UncompressedSize="0" OS="Any"/>
|
||||
<SHA1>05989ccb769ed6b46a60e453d401dd4415609363</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtquick3dphysics.wasm_multithread</Name>
|
||||
<DisplayName>Quick: 3D Physics for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtquick3dphysics, qt.qt6.650.wasm_multithread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_multithread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtquick3dphysics-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="1695314" UncompressedSize="11015126" OS="Any"/>
|
||||
<SHA1>7cfea014ddc41082f6ac52a72930ec174d2cd484</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtscxml.wasm_multithread</Name>
|
||||
<DisplayName>Qt State Machines for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtscxml, qt.qt6.650.wasm_multithread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_multithread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtscxml-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="372984" UncompressedSize="3111720" OS="Any"/>
|
||||
<SHA1>a6fb82aa712eae15f582835a3e858ad4b94961ac</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtspeech.wasm_multithread</Name>
|
||||
<DisplayName>Qt Speech for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtspeech, qt.qt6.650.wasm_multithread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_multithread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtspeech-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="61655" UncompressedSize="448732" OS="Any"/>
|
||||
<SHA1>2e444441796b80824a742107514797a2d8e97234</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtvirtualkeyboard.wasm_multithread</Name>
|
||||
<DisplayName>Qt Virtual Keyboard for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtvirtualkeyboard, qt.qt6.650.wasm_multithread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_multithread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtvirtualkeyboard-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="2202968" UncompressedSize="6817472" OS="Any"/>
|
||||
<SHA1>fd072ead9d8d55fac3a9efb0e2c7a92af8fb047d</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtwebchannel.wasm_multithread</Name>
|
||||
<DisplayName>Qt WebChannel for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtwebchannel, qt.qt6.650.wasm_multithread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_multithread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtwebchannel-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="93681" UncompressedSize="525510" OS="Any"/>
|
||||
<SHA1>802b47541de55f8528e436d0354421138e598f90</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtwebsockets.wasm_multithread</Name>
|
||||
<DisplayName>Qt WebSockets for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtwebsockets, qt.qt6.650.wasm_multithread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_multithread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtwebsockets-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="90033" UncompressedSize="501424" OS="Any"/>
|
||||
<SHA1>f5ea2a5ab7011919f9efd72c482bd41d4b9125b6</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.qt5compat.wasm_multithread</Name>
|
||||
<DisplayName>Qt 5 Compatibility Module for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.qt5compat, qt.qt6.650.wasm_multithread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_multithread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qt5compat-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="689869" UncompressedSize="2786165" OS="Any"/>
|
||||
<SHA1>8573219387c9d6448da92f9c0eb2cd77fc5e4d6a</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.qtquick3d.wasm_multithread</Name>
|
||||
<DisplayName>Qt Quick 3D for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.qtquick3d, qt.qt6.650.wasm_multithread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_multithread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtquick3d-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="2049798" UncompressedSize="13429045" OS="Any"/>
|
||||
<SHA1>5a92d04743dc47cd410922b312018b2ca13707a9</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.qtquicktimeline.wasm_multithread</Name>
|
||||
<DisplayName>Qt Quick Timeline for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.qtquicktimeline, qt.qt6.650.wasm_multithread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_multithread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtquicktimeline-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="44721" UncompressedSize="263991" OS="Any"/>
|
||||
<SHA1>7bce5d03611d856cf1675844c736a9f67dea055d</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.qtshadertools.wasm_multithread</Name>
|
||||
<DisplayName>Qt Shader Tools for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.qtshadertools, qt.qt6.650.wasm_multithread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_multithread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtshadertools-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="1306343" UncompressedSize="12245299" OS="Any"/>
|
||||
<SHA1>c39e4c3ccda1d23253bf8049b417284380cc2715</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.wasm_multithread</Name>
|
||||
<DisplayName>WebAssembly (multi-threaded)</DisplayName>
|
||||
<Description>Qt 6.5.0 Prebuilt Components for WebAssembly (multi-threaded).</Description>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<Dependencies/>
|
||||
<AutoDependOn/>
|
||||
<Default>false</Default>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority>700</SortingPriority>
|
||||
<DownloadableArchives>qtbase-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z, qtdeclarative-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z, qtsvg-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z, qttools-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z, qttranslations-MacOS-MacOS_12-Clang-MacOS-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="27570046" UncompressedSize="188468236" OS="Any"/>
|
||||
<SHA1>c49a2335d6bb9ecd42a4d04c0693b928eeb03f19</SHA1>
|
||||
</PackageUpdate>
|
||||
<SHA1>e6fc59b20903417c2ab109b8aeb90f73e5cbabc7</SHA1>
|
||||
<MetadataName>2023-01-24-1447_meta.7z</MetadataName>
|
||||
</Updates>
|
||||
26
tests/data/windows-650-wasm-single-expect.json
Normal file
26
tests/data/windows-650-wasm-single-expect.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"architectures": [
|
||||
"wasm_singlethread"
|
||||
],
|
||||
"modules_by_arch": {
|
||||
"wasm_singlethread": [
|
||||
"qtcharts",
|
||||
"qtdatavis3d",
|
||||
"qtgrpc",
|
||||
"qthttpserver",
|
||||
"qtimageformats",
|
||||
"qtlottie",
|
||||
"qtmultimedia",
|
||||
"qtquick3dphysics",
|
||||
"qtscxml",
|
||||
"qtspeech",
|
||||
"qtvirtualkeyboard",
|
||||
"qtwebchannel",
|
||||
"qtwebsockets",
|
||||
"qt5compat",
|
||||
"qtquick3d",
|
||||
"qtquicktimeline",
|
||||
"qtshadertools"
|
||||
]
|
||||
}
|
||||
}
|
||||
290
tests/data/windows-650-wasm-single-update.xml
Normal file
290
tests/data/windows-650-wasm-single-update.xml
Normal file
@@ -0,0 +1,290 @@
|
||||
<Updates>
|
||||
<ApplicationName>{AnyApplication}</ApplicationName>
|
||||
<ApplicationVersion>1.0.0</ApplicationVersion>
|
||||
<Checksum>true</Checksum>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtcharts.wasm_singlethread</Name>
|
||||
<DisplayName>Qt Charts for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtcharts, qt.qt6.650.wasm_singlethread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_singlethread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtcharts-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="7422857" CompressedSize="783179" OS="Any"/>
|
||||
<SHA1>8f5ed7a6950398e9c0009a1e71514c885d4950ae</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtdatavis3d.wasm_singlethread</Name>
|
||||
<DisplayName>Qt Data Visualization for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtdatavis3d, qt.qt6.650.wasm_singlethread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_singlethread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtdatavis3d-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="4668609" CompressedSize="603274" OS="Any"/>
|
||||
<SHA1>b721d4ccc387c2bce2064acda62e838bf3b0faf5</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtgrpc.wasm_singlethread</Name>
|
||||
<DisplayName>Qt Protobuf and Qt GRPC for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtgrpc, qt.qt6.650.wasm_singlethread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_singlethread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtgrpc-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="2677934" CompressedSize="192818" OS="Any"/>
|
||||
<SHA1>8ee03c76df8602753c17e09471969050ff9ad143</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qthttpserver.wasm_singlethread</Name>
|
||||
<DisplayName>Qt HTTP Server for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qthttpserver, qt.qt6.650.wasm_singlethread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_singlethread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qthttpserver-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="280043" CompressedSize="56907" OS="Any"/>
|
||||
<SHA1>a517c99db4438b786775d896dce33f26776484ce</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtimageformats.wasm_singlethread</Name>
|
||||
<DisplayName>Qt ImageFormats for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtimageformats, qt.qt6.650.wasm_singlethread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_singlethread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtimageformats-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="1284624" CompressedSize="305040" OS="Any"/>
|
||||
<SHA1>21721377df4a85a447883183d4c43490537bc5f7</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtlottie.wasm_singlethread</Name>
|
||||
<DisplayName>Qt Lottie Animation for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtlottie, qt.qt6.650.wasm_singlethread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_singlethread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtlottie-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="1017662" CompressedSize="157225" OS="Any"/>
|
||||
<SHA1>e84a9a593ac3ce61fbf01f28839adca16ba72662</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtmultimedia.wasm_singlethread</Name>
|
||||
<DisplayName>Qt Multimedia for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtmultimedia, qt.qt6.650.wasm_singlethread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_singlethread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtmultimedia-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="4990392" CompressedSize="736850" OS="Any"/>
|
||||
<SHA1>b3cec4c569f81833fe8950eac8ef8ad18efa9c8e</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtquick3dphysics</Name>
|
||||
<DisplayName>Quick: 3D Physics</DisplayName>
|
||||
<Description>Qt Quick 3D Physics provides a high-level QML module adding physical simulation capabilities to Qt Quick 3D.</Description>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<Default>false</Default>
|
||||
<Dependencies>qt.qt6.650.doc.qtquick3dphysics, qt.qt6.650.examples.qtquick3dphysics, qt.qt6.650.qtquick3d, qt.qt6.650.qtshadertools</Dependencies>
|
||||
<AutoDependOn/>
|
||||
<DownloadableArchives/>
|
||||
<UpdateFile UncompressedSize="0" CompressedSize="0" OS="Any"/>
|
||||
<SHA1>d7ae546041aa8afc9d75615538a7de5c74df2c76</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtquick3dphysics.wasm_singlethread</Name>
|
||||
<DisplayName>Quick: 3D Physics for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtquick3dphysics, qt.qt6.650.wasm_singlethread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_singlethread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtquick3dphysics-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="11025662" CompressedSize="1705261" OS="Any"/>
|
||||
<SHA1>ffae40c5ea3a64fad5d3c891b3321fb84f5dbb10</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtscxml.wasm_singlethread</Name>
|
||||
<DisplayName>Qt State Machines for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtscxml, qt.qt6.650.wasm_singlethread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_singlethread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtscxml-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="3131289" CompressedSize="375756" OS="Any"/>
|
||||
<SHA1>196ec95bf0b8b94c71101b5b100e76a8219c7aa6</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtspeech.wasm_singlethread</Name>
|
||||
<DisplayName>Qt Speech for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtspeech, qt.qt6.650.wasm_singlethread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_singlethread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtspeech-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="448553" CompressedSize="61755" OS="Any"/>
|
||||
<SHA1>22af0b136ee5af85d5231e909644f05a2610c333</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtvirtualkeyboard.wasm_singlethread</Name>
|
||||
<DisplayName>Qt Virtual Keyboard for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtvirtualkeyboard, qt.qt6.650.wasm_singlethread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_singlethread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtvirtualkeyboard-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="5572282" CompressedSize="1702607" OS="Any"/>
|
||||
<SHA1>0bf68731445a07c3d0343a7b2be575792e1d74ec</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtwebchannel.wasm_singlethread</Name>
|
||||
<DisplayName>Qt WebChannel for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtwebchannel, qt.qt6.650.wasm_singlethread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_singlethread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtwebchannel-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="486650" CompressedSize="88294" OS="Any"/>
|
||||
<SHA1>3b77f28422d469dd639f53cfa3c90f17581599f2</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.addons.qtwebsockets.wasm_singlethread</Name>
|
||||
<DisplayName>Qt WebSockets for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.addons.qtwebsockets, qt.qt6.650.wasm_singlethread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_singlethread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtwebsockets-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="508364" CompressedSize="90577" OS="Any"/>
|
||||
<SHA1>c966978a11ef2baee84e26bc8cee4ca636b87130</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.qt5compat.wasm_singlethread</Name>
|
||||
<DisplayName>Qt 5 Compatibility Module for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.qt5compat, qt.qt6.650.wasm_singlethread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_singlethread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qt5compat-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="2798732" CompressedSize="693708" OS="Any"/>
|
||||
<SHA1>4362670c3f297d5f298602e5820843150a394585</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.qtquick3d.wasm_singlethread</Name>
|
||||
<DisplayName>Qt Quick 3D for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.qtquick3d, qt.qt6.650.wasm_singlethread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_singlethread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtquick3d-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="13484701" CompressedSize="2035967" OS="Any"/>
|
||||
<SHA1>a8cb6b3e15ed4357b60895a5b8f06938f381cbe4</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.qtquicktimeline.wasm_singlethread</Name>
|
||||
<DisplayName>Qt Quick Timeline for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.qtquicktimeline, qt.qt6.650.wasm_singlethread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_singlethread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtquicktimeline-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="265991" CompressedSize="44865" OS="Any"/>
|
||||
<SHA1>e3b17d993959c4f9bf0bf1b1eef3eaa32dfa1135</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.qtshadertools.wasm_singlethread</Name>
|
||||
<DisplayName>Qt Shader Tools for WebAssembly</DisplayName>
|
||||
<Description/>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<AutoDependOn>qt.qt6.650.qtshadertools, qt.qt6.650.wasm_singlethread</AutoDependOn>
|
||||
<Dependencies>qt.qt6.650.wasm_singlethread</Dependencies>
|
||||
<Virtual>true</Virtual>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority/>
|
||||
<DownloadableArchives>qtshadertools-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="12278702" CompressedSize="1314315" OS="Any"/>
|
||||
<SHA1>4a159d7a4d73ea9e02a20600425228ea5fc72368</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt6.650.wasm_singlethread</Name>
|
||||
<DisplayName>WebAssembly (single-threaded)</DisplayName>
|
||||
<Description>Qt 6.5.0 Prebuilt Components for WebAssembly (single-threaded).</Description>
|
||||
<Version>6.5.0-0-202301241223</Version>
|
||||
<ReleaseDate>2023-01-24</ReleaseDate>
|
||||
<Dependencies/>
|
||||
<AutoDependOn/>
|
||||
<Default>false</Default>
|
||||
<Script>installscript.qs</Script>
|
||||
<SortingPriority>700</SortingPriority>
|
||||
<DownloadableArchives>qtbase-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z, qtdeclarative-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z, qtsvg-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z, qttools-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z, qttranslations-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="168349948" CompressedSize="23314413" OS="Any"/>
|
||||
<SHA1>b3131ac0be2b917e3450eed517fa52aaef7031b3</SHA1>
|
||||
</PackageUpdate>
|
||||
<SHA1>c2e369a310d73abefd8f1f1c038762aad5349c31</SHA1>
|
||||
<MetadataName>2023-01-24-1445_meta.7z</MetadataName>
|
||||
</Updates>
|
||||
@@ -9,7 +9,9 @@
|
||||
"5.14.0 5.14.1 5.14.2",
|
||||
"5.15.0 5.15.1 5.15.2",
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
"6.1.0",
|
||||
"6.2.0",
|
||||
"6.5.0"
|
||||
],
|
||||
"preview": [
|
||||
"5.6-preview",
|
||||
@@ -26,8 +28,11 @@
|
||||
"wasm": [
|
||||
"5.13.1 5.13.2",
|
||||
"5.14.0 5.14.1 5.14.2",
|
||||
"5.15.0 5.15.1 5.15.2"
|
||||
"5.15.0 5.15.1 5.15.2",
|
||||
"6.2.0"
|
||||
],
|
||||
"wasm_singlethread": ["6.5.0"],
|
||||
"wasm_multithread": ["6.5.0"],
|
||||
"wasm_preview": [
|
||||
"5.13-preview",
|
||||
"5.14-preview",
|
||||
@@ -86,6 +91,7 @@
|
||||
"tools_ifw",
|
||||
"tools_generic",
|
||||
"tools_conan",
|
||||
"tools_cmake"
|
||||
"tools_cmake",
|
||||
"sdktool"
|
||||
]
|
||||
}
|
||||
@@ -43,6 +43,14 @@
|
||||
<tr><td valign="top"> </td><td><a href="tools_generic/">tools_generic/</a></td><td align="right">13-Apr-2021 14:39 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_conan/">tools_conan/</a></td><td align="right">15-Feb-2021 12:15 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_cmake/">tools_cmake/</a></td><td align="right">07-Jan-2021 14:22 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="sdktool/">sdktool/</a></td><td align="right">05-May-2023 10:53 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_650_wasm_singlethread/">qt6_650_wasm_singlethread/</a></td><td align="right">01-Jan-2023 00:00 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_650_wasm_multithread/">qt6_650_wasm_multithread/</a></td><td align="right">01-Jan-2023 00:00 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_650_src_doc_examples/">qt6_650_src_doc_examples/</a></td><td align="right">01-Jan-2023 00:00 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_650/">qt6_650/</a></td><td align="right">01-Jan-2023 00:00 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_620_wasm/">qt6_620_wasm/</a></td><td align="right">29-Sep-2021 12:46 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_620_src_doc_examples/">qt6_620_src_doc_examples/</a></td><td align="right">29-Sep-2021 12:43 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_620/">qt6_620/</a></td><td align="right">29-Sep-2021 12:34 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_610_src_doc_examples/">qt6_610_src_doc_examples/</a></td><td align="right">30-Apr-2021 08:12 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_610/">qt6_610/</a></td><td align="right">30-Apr-2021 08:10 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603_src_doc_examples/">qt6_603_src_doc_examples/</a></td><td align="right">31-Mar-2021 07:33 </td><td align="right"> - </td><td> </td></tr>
|
||||
|
||||
@@ -207,7 +207,10 @@ def test_tools_variants(monkeypatch, tool_name, tool_variant_name, is_expect_fai
|
||||
return
|
||||
|
||||
expect_json = json.loads((Path(__file__).parent / "data" / f"{datafile}-expect.json").read_text("utf-8"))
|
||||
expect = next(filter(lambda x: x["Name"] == tool_variant_name, expect_json["variants_metadata"]))
|
||||
try:
|
||||
expect = next(x for x in expect_json["variants_metadata"] if x["Name"] == tool_variant_name)
|
||||
except StopIteration:
|
||||
raise Exception("Wrong test data.")
|
||||
expected_7z_files = set(expect["DownloadableArchives"])
|
||||
qt_pkgs = ToolArchives(host, target, tool_name, base, arch=tool_variant_name).archives
|
||||
url_begin = f"online/qtsdkrepository/mac_x64/{target}/{tool_name}"
|
||||
@@ -346,6 +349,28 @@ qt_doc_5152_xml_weird_module = """
|
||||
</PackageUpdate>
|
||||
</Updates>
|
||||
"""
|
||||
qt_doc_5152_xml_no_archives = """
|
||||
<Updates>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5152.doc.qtcharts</Name>
|
||||
<DisplayName>Documentation for Qt 5.15.2 GPLv3 components (QtCharts)</DisplayName>
|
||||
<Description>Documentation for Qt 5.15.2 GPLv3 components (QtCharts)</Description>
|
||||
<Version>5.15.2-0-202011130724</Version>
|
||||
<ReleaseDate>2020-11-13</ReleaseDate>
|
||||
<Dependencies>lots.of.stuff</Dependencies>
|
||||
<DownloadableArchives/>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.qt5.5152.doc</Name>
|
||||
<DisplayName>Qt 5.15.2 Documentation</DisplayName>
|
||||
<Description>Qt 5.15.2 documentation</Description>
|
||||
<Version>5.15.2-0-202011130724</Version>
|
||||
<ReleaseDate>2020-11-13</ReleaseDate>
|
||||
<Dependencies>lots.more.stuff</Dependencies>
|
||||
<DownloadableArchives></DownloadableArchives>
|
||||
</PackageUpdate>
|
||||
</Updates>
|
||||
"""
|
||||
qt_example_5152_xml_module = """
|
||||
<Updates>
|
||||
<PackageUpdate>
|
||||
@@ -475,6 +500,7 @@ def make_example_archives(subarchives, modules, is_include_base) -> SrcDocExampl
|
||||
(["tqtc"], ["all"], False, qt_doc_5152_xml_weird_module, make_doc_archives, {"weird-qtcharts-docs.7z"}),
|
||||
(["tqtc"], ["qtcharts"], False, qt_doc_5152_xml_weird_module, make_doc_archives, {"weird-qtcharts-docs.7z"}),
|
||||
(["qtdoc"], ["qtcharts"], False, qt_example_5152_xml_module, make_example_archives, {"qtcharts-examples.7z"}),
|
||||
([], [], True, qt_doc_5152_xml_no_archives, make_doc_archives, set()),
|
||||
),
|
||||
)
|
||||
def test_archives_weird_module_7z_name(
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
from tempfile import TemporaryDirectory
|
||||
from typing import Dict, List, Optional
|
||||
|
||||
import pytest
|
||||
|
||||
from aqt.exceptions import CliInputError
|
||||
from aqt.helper import Settings
|
||||
from aqt.installer import Cli
|
||||
from aqt.metadata import MetadataFactory, SimpleSpec, Version
|
||||
|
||||
@@ -52,13 +54,23 @@ def test_cli_help(capsys):
|
||||
assert expected_help(out)
|
||||
|
||||
|
||||
def test_cli_check_module():
|
||||
@pytest.mark.parametrize(
|
||||
"qt_version, modules, unexpected_modules",
|
||||
(
|
||||
("5.11.3", ["qtcharts", "qtwebengine"], []),
|
||||
("5.11.3", ["not_exist"], ["not_exist"]),
|
||||
("5.11.3", ["qtcharts", "qtwebengine", "not_exist"], ["not_exist"]),
|
||||
("5.11.3", None, []),
|
||||
("5.15.0", ["Unknown"], ["Unknown"]),
|
||||
),
|
||||
)
|
||||
def test_cli_select_unexpected_modules(qt_version: str, modules: Optional[List[str]], unexpected_modules: List[str]):
|
||||
cli = Cli()
|
||||
cli._setup_settings()
|
||||
assert cli._check_modules_arg("5.11.3", ["qtcharts", "qtwebengine"])
|
||||
assert not cli._check_modules_arg("5.7", ["not_exist"])
|
||||
assert cli._check_modules_arg("5.14.0", None)
|
||||
assert not cli._check_modules_arg("5.15.0", ["Unknown"])
|
||||
assert cli._select_unexpected_modules(qt_version, modules) == unexpected_modules
|
||||
|
||||
nonexistent_qt = "5.16.0"
|
||||
assert cli._select_unexpected_modules(nonexistent_qt, modules) == sorted(modules or [])
|
||||
|
||||
|
||||
def test_cli_check_combination():
|
||||
@@ -88,8 +100,8 @@ def test_cli_check_version():
|
||||
("windows", "winrt", "mingw32", "6", None, False),
|
||||
("windows", "winrt", "mingw32", "bad spec", None, True),
|
||||
("windows", "android", "android_x86", "6", Version("6.1.0"), False),
|
||||
("windows", "desktop", "android_x86", "6", Version("6.1.0"), False), # does not validate arch
|
||||
("windows", "desktop", "android_fake", "6", Version("6.1.0"), False), # does not validate arch
|
||||
("windows", "desktop", "android_x86", "6", Version("6.5.0"), False), # does not validate arch
|
||||
("windows", "desktop", "android_fake", "6", Version("6.5.0"), False), # does not validate arch
|
||||
),
|
||||
)
|
||||
def test_cli_determine_qt_version(
|
||||
@@ -204,7 +216,6 @@ def test_cli_check_mirror():
|
||||
),
|
||||
)
|
||||
def test_set_arch(arch: Optional[str], host: str, target: str, version: str, expect: Optional[str]):
|
||||
|
||||
if not expect:
|
||||
with pytest.raises(CliInputError) as e:
|
||||
Cli._set_arch(arch, host, target, version)
|
||||
@@ -303,6 +314,34 @@ def test_cli_legacy_tool_new_syntax(monkeypatch, capsys, cmd):
|
||||
assert actual == expected
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"cmd, expect_err",
|
||||
(
|
||||
(
|
||||
"list-qt mac --extension wasm",
|
||||
"WARNING : The parameter 'extension' with value 'wasm' is deprecated "
|
||||
"and marked for removal in a future version of aqt.\n"
|
||||
"In the future, please omit this parameter.\n"
|
||||
"WARNING : The '--extension' flag will be ignored.\n",
|
||||
),
|
||||
(
|
||||
"list-qt mac desktop --extensions 6.2.0",
|
||||
"WARNING : The parameter 'extensions' with value '6.2.0' is deprecated "
|
||||
"and marked for removal in a future version of aqt.\n"
|
||||
"In the future, please omit this parameter.\n"
|
||||
"WARNING : The '--extensions' flag will always return an empty list, "
|
||||
"because there are no useful arguments for the '--extension' flag.\n",
|
||||
),
|
||||
),
|
||||
)
|
||||
def test_cli_list_qt_deprecated_flags(capsys, cmd: str, expect_err: str):
|
||||
cli = Cli()
|
||||
cli._setup_settings()
|
||||
assert 0 == cli.run(cmd.split())
|
||||
out, err = capsys.readouterr()
|
||||
assert err == expect_err
|
||||
|
||||
|
||||
# These commands come directly from examples in the legacy documentation
|
||||
@pytest.mark.parametrize(
|
||||
"cmd",
|
||||
@@ -339,18 +378,68 @@ def test_cli_unexpected_error(monkeypatch, capsys):
|
||||
assert err.rstrip().endswith(
|
||||
"===========================PLEASE FILE A BUG REPORT===========================\n"
|
||||
"You have discovered a bug in aqt.\n"
|
||||
"Please file a bug report at https://github.com/miurahr/aqtinstall/issues.\n"
|
||||
"Please file a bug report at https://github.com/miurahr/aqtinstall/issues\n"
|
||||
"Please remember to include a copy of this program's output in your report."
|
||||
)
|
||||
|
||||
|
||||
def test_cli_set_7zip(monkeypatch):
|
||||
@pytest.mark.parametrize("external_tool_exists", (True, False))
|
||||
def test_set_7zip_checks_external_tool_when_specified(monkeypatch, capsys, external_tool_exists: bool):
|
||||
cli = Cli()
|
||||
cli._setup_settings()
|
||||
with pytest.raises(CliInputError) as err:
|
||||
cli._set_sevenzip("some_nonexistent_binary")
|
||||
assert err.type == CliInputError
|
||||
assert format(err.value) == "Specified 7zip command executable does not exist: 'some_nonexistent_binary'"
|
||||
external = "my_7z_extractor"
|
||||
|
||||
def mock_subprocess_run(args, **kwargs):
|
||||
assert args[0] == external
|
||||
if not external_tool_exists:
|
||||
raise FileNotFoundError()
|
||||
|
||||
monkeypatch.setattr("aqt.installer.subprocess.run", mock_subprocess_run)
|
||||
monkeypatch.setattr("aqt.installer.EXT7Z", False)
|
||||
if external_tool_exists:
|
||||
assert external == cli._set_sevenzip(external)
|
||||
else:
|
||||
with pytest.raises(CliInputError) as err:
|
||||
cli._set_sevenzip(external)
|
||||
assert format(err.value) == format(f"Specified 7zip command executable does not exist: '{external}'")
|
||||
assert capsys.readouterr()[1] == ""
|
||||
|
||||
|
||||
@pytest.mark.parametrize("fallback_exists", (True, False))
|
||||
def test_set_7zip_uses_fallback_when_py7zr_missing(monkeypatch, capsys, fallback_exists: bool):
|
||||
cli = Cli()
|
||||
cli._setup_settings()
|
||||
external, fallback = None, Settings.zipcmd
|
||||
|
||||
def mock_subprocess_run(args, **kwargs):
|
||||
assert args[0] == fallback
|
||||
if not fallback_exists:
|
||||
raise FileNotFoundError()
|
||||
|
||||
monkeypatch.setattr("aqt.installer.subprocess.run", mock_subprocess_run)
|
||||
monkeypatch.setattr("aqt.installer.EXT7Z", True)
|
||||
if fallback_exists:
|
||||
assert fallback == cli._set_sevenzip(external)
|
||||
else:
|
||||
with pytest.raises(CliInputError) as err:
|
||||
cli._set_sevenzip(external)
|
||||
assert format(err.value) == format(f"Fallback 7zip command executable does not exist: '{fallback}'")
|
||||
assert f"Falling back to '{fallback}'" in capsys.readouterr()[1]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("fallback_exists", (True, False))
|
||||
def test_set_7zip_chooses_p7zr_when_ext_missing(monkeypatch, capsys, fallback_exists: bool):
|
||||
cli = Cli()
|
||||
cli._setup_settings()
|
||||
external = None
|
||||
|
||||
def mock_subprocess_run(args, **kwargs):
|
||||
assert False, "Should not try to run anything"
|
||||
|
||||
monkeypatch.setattr("aqt.installer.subprocess.run", mock_subprocess_run)
|
||||
monkeypatch.setattr("aqt.installer.EXT7Z", False)
|
||||
assert cli._set_sevenzip(external) is None
|
||||
assert capsys.readouterr()[1] == ""
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
@@ -374,3 +463,175 @@ def test_cli_choose_archive_dest(
|
||||
|
||||
assert Cli.choose_archive_dest(archive_dest, keep, temp_dir) == Path(expect)
|
||||
assert enclosed["made_dir"] == should_make_dir
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"host, target, arch, is_auto, mocked_arches, existing_arch_dirs, expect",
|
||||
(
|
||||
( # not installed
|
||||
"windows",
|
||||
"android",
|
||||
"android_armv7",
|
||||
False,
|
||||
["win64_mingw99"],
|
||||
["not_mingw"],
|
||||
{"install": None, "instruct": "win64_mingw99", "use_dir": "mingw99_64"},
|
||||
),
|
||||
( # Alt Desktop Qt already installed
|
||||
"windows",
|
||||
"android",
|
||||
"android_armv7",
|
||||
False,
|
||||
["win64_mingw99"],
|
||||
["mingw128_32"],
|
||||
{"install": None, "instruct": None, "use_dir": "mingw128_32"},
|
||||
),
|
||||
# not installed
|
||||
(
|
||||
"linux",
|
||||
"android",
|
||||
"android_armv7",
|
||||
False,
|
||||
[],
|
||||
["gcc_32"],
|
||||
{"install": None, "instruct": "gcc_64", "use_dir": "gcc_64"},
|
||||
),
|
||||
( # Desktop Qt already installed
|
||||
"linux",
|
||||
"android",
|
||||
"android_armv7",
|
||||
False,
|
||||
[],
|
||||
["gcc_64"],
|
||||
{"install": None, "instruct": None, "use_dir": "gcc_64"},
|
||||
),
|
||||
( # not installed
|
||||
"windows",
|
||||
"android",
|
||||
"android_armv7",
|
||||
True,
|
||||
["win64_mingw99"],
|
||||
["not_mingw"],
|
||||
{"install": "win64_mingw99", "instruct": None, "use_dir": "mingw99_64"},
|
||||
),
|
||||
( # Alt Desktop Qt already installed
|
||||
"windows",
|
||||
"android",
|
||||
"android_armv7",
|
||||
True,
|
||||
["win64_mingw99"],
|
||||
["mingw128_32"],
|
||||
{"install": None, "instruct": None, "use_dir": "mingw128_32"},
|
||||
),
|
||||
# not installed
|
||||
(
|
||||
"linux",
|
||||
"android",
|
||||
"android_armv7",
|
||||
True,
|
||||
[],
|
||||
["gcc_32"],
|
||||
{"install": "gcc_64", "instruct": None, "use_dir": "gcc_64"},
|
||||
),
|
||||
( # Desktop Qt already installed
|
||||
"linux",
|
||||
"android",
|
||||
"android_armv7",
|
||||
True,
|
||||
[],
|
||||
["gcc_64"],
|
||||
{"install": None, "instruct": None, "use_dir": "gcc_64"},
|
||||
),
|
||||
( # MSVC arm64 with --autodesktop: should install min64_msvc2019_64
|
||||
"windows",
|
||||
"desktop",
|
||||
"win64_msvc2019_arm64",
|
||||
True,
|
||||
["win64_mingw", "win64_msvc2019_64", "win64_msvc2019_arm64", "wasm_singlethread", "wasm_multithread"],
|
||||
["mingw128_32"],
|
||||
{"install": "win64_msvc2019_64", "instruct": None, "use_dir": "msvc2019_64"},
|
||||
),
|
||||
( # MSVC arm64 without --autodesktop: should point to min64_msvc2019_64
|
||||
"windows",
|
||||
"desktop",
|
||||
"win64_msvc2019_arm64",
|
||||
False,
|
||||
["win64_mingw", "win64_msvc2019_64", "win64_msvc2019_arm64", "wasm_singlethread", "wasm_multithread"],
|
||||
["mingw128_32"],
|
||||
{"install": None, "instruct": "win64_msvc2019_64", "use_dir": "msvc2019_64"},
|
||||
),
|
||||
( # MSVC arm64 without --autodesktop, with correct target already installed
|
||||
"windows",
|
||||
"desktop",
|
||||
"win64_msvc2019_arm64",
|
||||
False,
|
||||
["win64_mingw", "win64_msvc2019_64", "win64_msvc2019_arm64", "wasm_singlethread", "wasm_multithread"],
|
||||
["msvc2019_64"],
|
||||
{"install": None, "instruct": None, "use_dir": "msvc2019_64"},
|
||||
),
|
||||
( # MSVC arm64 without --autodesktop, with wrong target already installed
|
||||
"windows",
|
||||
"desktop",
|
||||
"win64_msvc2019_arm64",
|
||||
False,
|
||||
["win64_mingw", "win64_msvc2019_64", "win64_msvc2019_arm64", "wasm_singlethread", "wasm_multithread"],
|
||||
["mingw128_32"],
|
||||
{"install": None, "instruct": "win64_msvc2019_64", "use_dir": "msvc2019_64"},
|
||||
),
|
||||
),
|
||||
)
|
||||
def test_get_autodesktop_dir_and_arch_non_android(
|
||||
monkeypatch,
|
||||
capsys,
|
||||
host: str,
|
||||
target: str,
|
||||
arch: str,
|
||||
is_auto: bool,
|
||||
mocked_arches: List[str],
|
||||
existing_arch_dirs: List[str],
|
||||
expect: Dict[str, str],
|
||||
):
|
||||
"""
|
||||
:is_auto: Simulates passing `--autodesktop` to aqt
|
||||
:mocked_mingw: When we ask MetadataFactory for a list of available architectures, we return this value
|
||||
:existing_arch_dirs: Directories that contain an existing file at `arch_dir/bin/qmake`
|
||||
:expect[install]: The archdir we expect aqt to install
|
||||
:expect[instruct]: The architecture we expect aqt to ask the user to install
|
||||
:expect[use_dir]: The directory that includes `bin/qmake`; we will patch files in the mobile installation
|
||||
with this value
|
||||
"""
|
||||
monkeypatch.setattr(MetadataFactory, "fetch_arches", lambda *args: mocked_arches)
|
||||
monkeypatch.setattr(Cli, "run", lambda *args: 0)
|
||||
|
||||
version = "6.2.3"
|
||||
cli = Cli()
|
||||
cli._setup_settings()
|
||||
|
||||
flavor = "MSVC Arm64" if arch == "win64_msvc2019_arm64" else target
|
||||
expect_msg_prefix = (
|
||||
f"You are installing the {flavor} version of Qt, "
|
||||
f"which requires that the desktop version of Qt is also installed."
|
||||
)
|
||||
|
||||
with TemporaryDirectory() as temp_dir:
|
||||
base_dir = Path(temp_dir)
|
||||
for arch_dir in existing_arch_dirs:
|
||||
qmake = base_dir / version / arch_dir / f"bin/qmake{'.exe' if host == 'windows' else ''}"
|
||||
qmake.parent.mkdir(parents=True)
|
||||
qmake.write_text("exe file")
|
||||
autodesktop_arch_dir, autodesktop_arch_to_install = cli._get_autodesktop_dir_and_arch(
|
||||
is_auto, host, target, base_dir, Version(version), arch
|
||||
)
|
||||
# It should choose the correct desktop arch directory for updates
|
||||
assert autodesktop_arch_dir == expect["use_dir"]
|
||||
|
||||
out, err = capsys.readouterr()
|
||||
if expect["install"]:
|
||||
assert err.strip() == f"INFO : {expect_msg_prefix} Now installing Qt: desktop {version} {expect['install']}"
|
||||
elif expect["instruct"]:
|
||||
assert (
|
||||
err.strip() == f"WARNING : {expect_msg_prefix} You can install it with the following command:\n"
|
||||
f" `aqt install-qt {host} desktop {version} {expect['instruct']}`"
|
||||
)
|
||||
else:
|
||||
assert err.strip() == f"INFO : Found installed {host}-desktop Qt at {base_dir / version / expect['use_dir']}"
|
||||
|
||||
@@ -37,7 +37,7 @@ def test_cli_unknown_version(capsys):
|
||||
"""
|
||||
|
||||
matcher = re.compile(
|
||||
r"^aqtinstall\(aqt\) v.* on Python 3.*\n"
|
||||
r"[^\n]*aqtinstall\(aqt\) v.* on Python 3.*\n"
|
||||
r".*Specified Qt version is unknown: " + re.escape(wrong_version) + r"\.\n"
|
||||
r".*Failed to locate XML data for Qt version '" + re.escape(wrong_version) + r"'\.\n"
|
||||
r"==============================Suggested follow-up:==============================\n"
|
||||
|
||||
@@ -63,6 +63,46 @@ def test_helper_altlink(monkeypatch):
|
||||
assert newurl.startswith("http://ftp.jaist.ac.jp/")
|
||||
|
||||
|
||||
def test_helper_altlink_black(monkeypatch):
|
||||
class Message:
|
||||
headers = {"content-type": "text/plain", "length": 300}
|
||||
text = """<?xml version="1.0" encoding="UTF-8"?>
|
||||
<metalink xmlns="urn:ietf:params:xml:ns:metalink">
|
||||
<generator>MirrorBrain/2.17.0</generator>
|
||||
<origin dynamic="true">http://download.example.io/boo.7z.meta4</origin>
|
||||
<published>2020-03-04T01:11:48Z</published>
|
||||
<publisher>
|
||||
<name>Example Project</name>
|
||||
<url>https://download.example.io</url>
|
||||
</publisher>
|
||||
|
||||
<file name="boo.7z">
|
||||
<size>651</size>
|
||||
<hash type="md5">d49eba3937fb063caa48769e8f28377c</hash>
|
||||
<hash type="sha-1">25d3a33d00c1e5880679a17fd4b8b831134cfa6f</hash>
|
||||
<hash type="sha-256">37e50248cf061109e2cb92105cd2c36a6e271701d6d4a72c4e73c6d82aad790a</hash>
|
||||
<pieces length="262144" type="sha-1">
|
||||
<hash>bec628a149ed24a3a9b83747776ecca5a1fad11c</hash>
|
||||
<hash>98b1dee3f741de51167a9428b0560cd2d1f4d945</hash>
|
||||
<hash>8717a0cb3d14c1958de5981635c9b90b146da165</hash>
|
||||
<hash>78cd2ae3ae37ca7c080a56a2b34eb33ec44a9ef1</hash>
|
||||
</pieces>
|
||||
<url location="cn" priority="1">http://mirrors.geekpie.club/boo.7z</url>
|
||||
</file>
|
||||
</metalink>
|
||||
"""
|
||||
|
||||
def mock_return(url):
|
||||
return Message()
|
||||
|
||||
monkeypatch.setattr(helper, "_get_meta", mock_return)
|
||||
|
||||
url = "http://foo.baz/qtproject/boo.7z"
|
||||
alt = "http://ftp.yz.yamagata-u.ac.jp/pub/boo.7z"
|
||||
newurl = helper.altlink(url, alt)
|
||||
assert newurl.startswith("http://ftp.yz.yamagata-u.ac.jp/pub/boo.7z")
|
||||
|
||||
|
||||
@pytest.mark.load_default_settings(False)
|
||||
def test_settings(tmp_path):
|
||||
helper.Settings.load_settings(os.path.join(os.path.dirname(__file__), "data", "settings.ini"))
|
||||
@@ -87,7 +127,6 @@ def mocked_requests_get(*args, **kwargs):
|
||||
|
||||
|
||||
def test_helper_downloadBinary_md5(tmp_path, monkeypatch):
|
||||
|
||||
monkeypatch.setattr(requests.Session, "get", mocked_requests_get)
|
||||
|
||||
expected = binascii.unhexlify("1d41a93e4a585bb01e4518d4af431933")
|
||||
@@ -96,7 +135,6 @@ def test_helper_downloadBinary_md5(tmp_path, monkeypatch):
|
||||
|
||||
|
||||
def test_helper_downloadBinary_sha256(tmp_path, monkeypatch):
|
||||
|
||||
monkeypatch.setattr(requests.Session, "get", mocked_requests_get)
|
||||
|
||||
expected = binascii.unhexlify("07b3ef4606b712923a14816b1cfe9649687e617d030fc50f948920d784c0b1cd")
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,7 +5,8 @@ import re
|
||||
import shutil
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from typing import Dict, List, Set, Union
|
||||
from tempfile import TemporaryDirectory
|
||||
from typing import Dict, List, Optional, Set, Union
|
||||
from urllib.parse import urlparse
|
||||
|
||||
import pytest
|
||||
@@ -32,6 +33,8 @@ from aqt.metadata import (
|
||||
suggested_follow_up,
|
||||
)
|
||||
|
||||
ModulesQuery = MetadataFactory.ModulesQuery
|
||||
|
||||
Settings.load_settings()
|
||||
|
||||
|
||||
@@ -144,42 +147,33 @@ def test_list_versions_tools(monkeypatch, spec_regex, os_name, target, in_file,
|
||||
tools = MetadataFactory(ArchiveId("tools", os_name, target)).getList()
|
||||
assert tools == expected["tools"]
|
||||
|
||||
for ext, expected_output in expected["qt"].items():
|
||||
# Test 'aqt list-qt'
|
||||
archive_id = ArchiveId("qt", os_name, target, ext if ext != "qt" else "")
|
||||
all_versions = MetadataFactory(archive_id).getList()
|
||||
# Test 'aqt list-qt'
|
||||
expected_output = expected["qt"]["qt"]
|
||||
archive_id = ArchiveId("qt", os_name, target)
|
||||
all_versions = MetadataFactory(archive_id).getList()
|
||||
assert f"{all_versions}" == "\n".join(expected_output)
|
||||
|
||||
if len(expected_output) == 0:
|
||||
assert not all_versions
|
||||
else:
|
||||
assert f"{all_versions}" == "\n".join(expected_output)
|
||||
# Filter for the latest version only
|
||||
latest_ver = MetadataFactory(archive_id, is_latest_version=True).getList()
|
||||
assert f"{latest_ver}" == expected_output[-1].split(" ")[-1]
|
||||
|
||||
# Filter for the latest version only
|
||||
latest_ver = MetadataFactory(archive_id, is_latest_version=True).getList()
|
||||
for row in expected_output:
|
||||
spec = SimpleSpec(spec_regex.search(row).group(1))
|
||||
|
||||
if len(expected_output) == 0:
|
||||
assert not latest_ver
|
||||
else:
|
||||
assert f"{latest_ver}" == expected_output[-1].split(" ")[-1]
|
||||
# Find the latest version for a particular spec
|
||||
latest_ver_for_spec = MetadataFactory(
|
||||
archive_id,
|
||||
spec=spec,
|
||||
is_latest_version=True,
|
||||
).getList()
|
||||
assert f"{latest_ver_for_spec}" == row.split(" ")[-1]
|
||||
|
||||
for row in expected_output:
|
||||
spec_str = spec_regex.search(row).group(1)
|
||||
spec = SimpleSpec(spec_str) if not ext.endswith("preview") else SimpleSpec(spec_str + ".0-preview")
|
||||
|
||||
# Find the latest version for a particular spec
|
||||
latest_ver_for_spec = MetadataFactory(
|
||||
archive_id,
|
||||
spec=spec,
|
||||
is_latest_version=True,
|
||||
).getList()
|
||||
assert f"{latest_ver_for_spec}" == row.split(" ")[-1]
|
||||
|
||||
# Find all versions for a particular spec
|
||||
all_ver_for_spec = MetadataFactory(
|
||||
archive_id,
|
||||
spec=spec,
|
||||
).getList()
|
||||
assert f"{all_ver_for_spec}" == row
|
||||
# Find all versions for a particular spec
|
||||
all_ver_for_spec = MetadataFactory(
|
||||
archive_id,
|
||||
spec=spec,
|
||||
).getList()
|
||||
assert f"{all_ver_for_spec}" == row
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
@@ -196,8 +190,8 @@ def test_list_versions_tools(monkeypatch, spec_regex, os_name, target, in_file,
|
||||
("6.2.0", "", "windows-620-update.xml", "windows-620-expect.json"),
|
||||
],
|
||||
)
|
||||
def test_list_architectures_and_modules(monkeypatch, version: str, extension: str, in_file: str, expect_out_file: str):
|
||||
archive_id = ArchiveId("qt", "windows", "desktop", extension)
|
||||
def test_list_qt_modules(monkeypatch, version: str, extension: str, in_file: str, expect_out_file: str):
|
||||
archive_id = ArchiveId("qt", "windows", "desktop")
|
||||
_xml = (Path(__file__).parent / "data" / in_file).read_text("utf-8")
|
||||
expect = json.loads((Path(__file__).parent / "data" / expect_out_file).read_text("utf-8"))
|
||||
|
||||
@@ -207,9 +201,6 @@ def test_list_architectures_and_modules(monkeypatch, version: str, extension: st
|
||||
modules = MetadataFactory(archive_id).fetch_modules(Version(version), arch)
|
||||
assert modules == sorted(expect["modules_by_arch"][arch])
|
||||
|
||||
arches = MetadataFactory(archive_id).fetch_arches(Version(version))
|
||||
assert arches == expect["architectures"]
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def win_5152_sde_xml_file() -> str:
|
||||
@@ -240,7 +231,7 @@ def test_list_src_doc_examples_archives(
|
||||
):
|
||||
monkeypatch.setattr(MetadataFactory, "fetch_http", lambda self, _: win_5152_sde_xml_file)
|
||||
|
||||
archive_id = ArchiveId("qt", host, "desktop", "src_doc_examples")
|
||||
archive_id = ArchiveId("qt", host, "desktop")
|
||||
archives = set(MetadataFactory(archive_id).fetch_archives_sde(cmd_type, Version(version)))
|
||||
assert archives == expected
|
||||
|
||||
@@ -262,7 +253,7 @@ def test_list_src_doc_examples_modules(
|
||||
):
|
||||
monkeypatch.setattr(MetadataFactory, "fetch_http", lambda self, _: win_5152_sde_xml_file)
|
||||
|
||||
archive_id = ArchiveId("qt", host, "desktop", "src_doc_examples")
|
||||
archive_id = ArchiveId("qt", host, "desktop")
|
||||
modules = set(MetadataFactory(archive_id).fetch_modules_sde(cmd_type, Version(version)))
|
||||
assert modules == expected
|
||||
|
||||
@@ -278,7 +269,11 @@ def test_list_src_doc_examples_modules(
|
||||
),
|
||||
)
|
||||
def test_list_src_doc_examples_cli(monkeypatch, capsys, win_5152_sde_xml_file, command: str, expected: Set[str]):
|
||||
monkeypatch.setattr(MetadataFactory, "fetch_http", lambda self, _: win_5152_sde_xml_file)
|
||||
def mock_fetch(self, rest_of_url):
|
||||
assert rest_of_url == "online/qtsdkrepository/windows_x86/desktop/qt5_5152_src_doc_examples/Updates.xml"
|
||||
return win_5152_sde_xml_file
|
||||
|
||||
monkeypatch.setattr(MetadataFactory, "fetch_http", mock_fetch)
|
||||
|
||||
cli = Cli()
|
||||
assert 0 == cli.run(command.split())
|
||||
@@ -315,7 +310,7 @@ def test_list_archives(
|
||||
else:
|
||||
expected_mod_metadata = expect["modules_metadata_by_arch"][arch]
|
||||
if "all" not in modules_to_query:
|
||||
expected_mod_metadata = filter(lambda mod: mod["Name"].split(".")[-2] in modules_to_query, expected_mod_metadata)
|
||||
expected_mod_metadata = [mod for mod in expected_mod_metadata if mod["Name"].split(".")[-2] in modules_to_query]
|
||||
expected = set([arc.split("-")[0] for mod in expected_mod_metadata for arc in mod["DownloadableArchives"]])
|
||||
|
||||
archives_query = [version, arch, *modules_to_query]
|
||||
@@ -349,19 +344,22 @@ def test_list_archives_insufficient_args(capsys):
|
||||
assert err.strip() == "ERROR : The '--archives' flag requires a 'QT_VERSION' and an 'ARCHITECTURE' parameter."
|
||||
|
||||
|
||||
def test_list_archives_bad_xml(monkeypatch):
|
||||
@pytest.mark.parametrize(
|
||||
"xml_content",
|
||||
(
|
||||
"<Updates><PackageUpdate><badname></badname></PackageUpdate></Updates>",
|
||||
"<Updates><PackageUpdate><Name></Name></PackageUpdate></Updates>",
|
||||
"<Updates></PackageUpdate><PackageUpdate></Updates><Name></Name>",
|
||||
),
|
||||
)
|
||||
def test_list_archives_bad_xml(monkeypatch, xml_content: str):
|
||||
archive_id = ArchiveId("qt", "windows", "desktop")
|
||||
archives_query = ["5.15.2", "win32_mingw81", "qtcharts"]
|
||||
|
||||
xml_no_name = "<Updates><PackageUpdate><badname></badname></PackageUpdate></Updates>"
|
||||
xml_empty_name = "<Updates><PackageUpdate><Name></Name></PackageUpdate></Updates>"
|
||||
xml_broken = "<Updates></PackageUpdate><PackageUpdate></Updates><Name></Name>"
|
||||
|
||||
for _xml in (xml_no_name, xml_empty_name, xml_broken):
|
||||
monkeypatch.setattr(MetadataFactory, "fetch_http", lambda self, _: _xml)
|
||||
with pytest.raises(ArchiveListError) as e:
|
||||
MetadataFactory(archive_id, archives_query=archives_query).getList()
|
||||
assert e.type == ArchiveListError
|
||||
monkeypatch.setattr(MetadataFactory, "fetch_http", lambda self, _: xml_content)
|
||||
with pytest.raises(ArchiveListError) as e:
|
||||
MetadataFactory(archive_id, archives_query=archives_query).getList()
|
||||
assert e.type == ArchiveListError
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
@@ -404,52 +402,54 @@ def test_long_qt_modules(monkeypatch, host: str, target: str, version: str, arch
|
||||
|
||||
monkeypatch.setattr(MetadataFactory, "fetch_http", lambda self, _: _xml)
|
||||
|
||||
table = MetadataFactory(archive_id, modules_query=(version, arch), is_long_listing=True).getList()
|
||||
table = MetadataFactory(archive_id, modules_query=ModulesQuery(version, arch), is_long_listing=True).getList()
|
||||
assert table._rows(table.long_heading_keys) == expect["modules_long_by_arch"][arch]
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def expected_windows_desktop_5140() -> Dict:
|
||||
xmlexpect = "windows-5140-expect.json"
|
||||
return json.loads((Path(__file__).parent / "data" / xmlexpect).read_text("utf-8"))
|
||||
def expected_windows_desktop_plus_wasm_5140(is_wasm_threaded: bool) -> Dict:
|
||||
if is_wasm_threaded:
|
||||
input_filenames = (
|
||||
"windows-5140-expect.json",
|
||||
"windows-650-wasm-single-expect.json",
|
||||
"windows-650-wasm-multi-expect.json",
|
||||
)
|
||||
else:
|
||||
input_filenames = "windows-5140-expect.json", "windows-5140-wasm-expect.json"
|
||||
to_join = [json.loads((Path(__file__).parent / "data" / f).read_text("utf-8")) for f in input_filenames]
|
||||
return {
|
||||
"architectures": [arch for _dict in to_join for arch in _dict["architectures"]],
|
||||
"modules_by_arch": {k: v for _dict in to_join for k, v in _dict["modules_by_arch"].items()},
|
||||
}
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"args, expect",
|
||||
"args, is_wasm_threaded, expect",
|
||||
(
|
||||
("--extensions latest", {"src_doc_examples"}),
|
||||
("--spec 5.14 --extensions latest", {"wasm", "src_doc_examples"}),
|
||||
("--extensions 5.14.0", {"wasm", "src_doc_examples"}),
|
||||
("--modules latest win64_msvc2017_64", ["modules_by_arch", "win64_msvc2017_64"]),
|
||||
("--spec 5.14 --modules latest win64_msvc2017_64", ["modules_by_arch", "win64_msvc2017_64"]),
|
||||
("--modules 5.14.0 win32_mingw73", ["modules_by_arch", "win32_mingw73"]),
|
||||
("--modules 5.14.0 win32_msvc2017", ["modules_by_arch", "win32_msvc2017"]),
|
||||
("--modules 5.14.0 win64_mingw73", ["modules_by_arch", "win64_mingw73"]),
|
||||
("--modules 5.14.0 win64_msvc2015_64", ["modules_by_arch", "win64_msvc2015_64"]),
|
||||
("--modules 5.14.0 win64_msvc2017_64", ["modules_by_arch", "win64_msvc2017_64"]),
|
||||
("--extension wasm --modules latest win64_msvc2017_64", ["modules_by_arch", "win64_msvc2017_64"]),
|
||||
("--extension wasm --spec 5.14 --modules latest win64_msvc2017_64", ["modules_by_arch", "win64_msvc2017_64"]),
|
||||
("--extension wasm --modules 5.14.0 win64_msvc2017_64", ["modules_by_arch", "win64_msvc2017_64"]),
|
||||
("--arch latest", ["architectures"]),
|
||||
("--spec 5.14 --arch latest", ["architectures"]),
|
||||
("--arch 5.14.0", ["architectures"]),
|
||||
("--extension wasm --arch latest", ["architectures"]),
|
||||
("--extension wasm --spec 5.14 --arch latest", ["architectures"]),
|
||||
("--extension wasm --arch 5.14.0", ["architectures"]),
|
||||
("--modules latest win64_msvc2017_64", False, ["modules_by_arch", "win64_msvc2017_64"]),
|
||||
("--spec 5.14 --modules latest win64_msvc2017_64", False, ["modules_by_arch", "win64_msvc2017_64"]),
|
||||
("--modules 5.14.0 win32_mingw73", False, ["modules_by_arch", "win32_mingw73"]),
|
||||
("--modules 5.14.0 win32_msvc2017", False, ["modules_by_arch", "win32_msvc2017"]),
|
||||
("--modules 5.14.0 win64_mingw73", False, ["modules_by_arch", "win64_mingw73"]),
|
||||
("--modules 5.14.0 win64_msvc2015_64", False, ["modules_by_arch", "win64_msvc2015_64"]),
|
||||
("--modules 5.14.0 win64_msvc2017_64", False, ["modules_by_arch", "win64_msvc2017_64"]),
|
||||
("--modules 6.5.0 wasm_singlethread", True, ["modules_by_arch", "wasm_singlethread"]),
|
||||
("--modules 6.5.0 wasm_multithread", True, ["modules_by_arch", "wasm_multithread"]),
|
||||
("--arch latest", True, ["architectures"]),
|
||||
("--spec 5.14 --arch latest", False, ["architectures"]),
|
||||
("--arch 5.14.0", False, ["architectures"]),
|
||||
),
|
||||
)
|
||||
def test_list_qt_cli(
|
||||
monkeypatch,
|
||||
capsys,
|
||||
expected_windows_desktop_5140: Dict[str, Set[str]],
|
||||
args: str,
|
||||
is_wasm_threaded: bool,
|
||||
expect: Union[Set[str], List[str]],
|
||||
):
|
||||
htmlfile, xmlfile = "windows-desktop.html", "windows-5140-update.xml"
|
||||
version_string_to_replace = "qt5.5140"
|
||||
if isinstance(expect, list):
|
||||
# In this case, 'expect' is a list of keys to follow to the expected values.
|
||||
expected_dict = expected_windows_desktop_5140
|
||||
expected_dict = expected_windows_desktop_plus_wasm_5140(is_wasm_threaded)
|
||||
for key in expect: # Follow the chain of keys to the list of values.
|
||||
expected_dict = expected_dict[key]
|
||||
assert isinstance(expected_dict, list)
|
||||
@@ -459,11 +459,21 @@ def test_list_qt_cli(
|
||||
assert isinstance(expect_set, set)
|
||||
|
||||
def _mock_fetch_http(_, rest_of_url, *args, **kwargs: str) -> str:
|
||||
htmltext = (Path(__file__).parent / "data" / htmlfile).read_text("utf-8")
|
||||
htmltext = (Path(__file__).parent / "data" / "windows-desktop.html").read_text("utf-8")
|
||||
if not rest_of_url.endswith("Updates.xml"):
|
||||
return htmltext
|
||||
|
||||
xmltext = (Path(__file__).parent / "data" / xmlfile).read_text("utf-8")
|
||||
def get_xml_filename() -> str:
|
||||
if rest_of_url.endswith("_wasm/Updates.xml"):
|
||||
return "windows-5140-wasm-update.xml"
|
||||
elif rest_of_url.endswith("_wasm_singlethread/Updates.xml"):
|
||||
return "windows-650-wasm-single-update.xml"
|
||||
elif rest_of_url.endswith("_wasm_multithread/Updates.xml"):
|
||||
return "windows-650-wasm-multi-update.xml"
|
||||
else:
|
||||
return "windows-5140-update.xml"
|
||||
|
||||
xmltext = (Path(__file__).parent / "data" / get_xml_filename()).read_text("utf-8")
|
||||
# If we are serving an Updates.xml, `aqt list` will look for a Qt version number.
|
||||
# We will replace the version numbers in the file with the requested version.
|
||||
match = re.search(r"qt(\d)_(\d+)", rest_of_url)
|
||||
@@ -481,6 +491,93 @@ def test_list_qt_cli(
|
||||
assert output_set == expect_set
|
||||
|
||||
|
||||
def test_list_missing_wasm_updates(monkeypatch, capsys):
|
||||
"""Require that MetadataFactory is resilient to missing wasm updates.xml files"""
|
||||
data_dir = Path(__file__).parent / "data"
|
||||
expect = set(json.loads((data_dir / "windows-620-expect.json").read_text("utf-8"))["architectures"])
|
||||
|
||||
def _mock_fetch_http(_, rest_of_url, *args, **kwargs: str) -> str:
|
||||
htmltext = (Path(__file__).parent / "data" / "windows-desktop.html").read_text("utf-8")
|
||||
if rest_of_url.endswith("windows_x86/desktop/"):
|
||||
return htmltext
|
||||
elif rest_of_url.endswith("windows_x86/desktop/qt6_620/Updates.xml"):
|
||||
return (data_dir / "windows-620-update.xml").read_text("utf-8")
|
||||
else:
|
||||
raise ArchiveDownloadError(f"No such file at {rest_of_url}")
|
||||
|
||||
monkeypatch.setattr(MetadataFactory, "fetch_http", _mock_fetch_http)
|
||||
|
||||
cli = Cli()
|
||||
rv = cli.run("list-qt windows desktop --arch 6.2.0".split())
|
||||
assert rv == 0
|
||||
out, err = capsys.readouterr()
|
||||
assert set(out.strip().split()) == expect
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"qt_ver_str, expect_set", (("6.2.0", {"android_x86", "android_x86_64", "android_armv7", "android_arm64_v8a"}),)
|
||||
)
|
||||
def test_list_android_arches(monkeypatch, capsys, qt_ver_str: str, expect_set: Set[str]):
|
||||
host, target = "windows", "android"
|
||||
|
||||
def _mock_fetch_http(_, rest_of_url, *args, **kwargs: str) -> str:
|
||||
assert rest_of_url.endswith("Updates.xml"), f"Fetched unexpected file at {rest_of_url}"
|
||||
|
||||
xmltext = (Path(__file__).parent / "data" / "windows-620-android-armv7-update.xml").read_text("utf-8")
|
||||
# If we are serving an Updates.xml, `aqt list` will look for a Qt version number.
|
||||
# We will replace the version numbers in the file with the requested version.
|
||||
match = re.search(r"qt\d_\d+_(?P<arch>\w+)/Updates\.xml$", rest_of_url)
|
||||
assert match
|
||||
return xmltext.replace("armv7", match.group("arch"))
|
||||
|
||||
monkeypatch.setattr(MetadataFactory, "fetch_http", _mock_fetch_http)
|
||||
|
||||
# Unit test:
|
||||
archive_id = ArchiveId("qt", host, target)
|
||||
actual_arches = MetadataFactory(archive_id).fetch_arches(Version(qt_ver_str))
|
||||
assert set(actual_arches) == expect_set
|
||||
|
||||
# Integration test:
|
||||
cli = Cli()
|
||||
cli.run(["list-qt", host, target, "--arch", qt_ver_str])
|
||||
out, err = capsys.readouterr()
|
||||
output_set = set(out.strip().split())
|
||||
assert output_set == expect_set
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"host, has_wasm",
|
||||
(("linux", True), ("windows", False), ("mac", False)),
|
||||
)
|
||||
def test_list_desktop_arches_qt5130(monkeypatch, capsys, host: str, has_wasm: bool):
|
||||
"""Tests the edge case of desktop Qt 5.13.0, in which "wasm_32" is a valid arch for Linux but not win/mac."""
|
||||
|
||||
# Generate some mock Updates.xml files. The host mismatch is not important; we just want to check for arch==wasm
|
||||
updates_xmltext, wasm_updates_xmltext = [
|
||||
(Path(__file__).parent / "data" / filename).read_text("utf-8").replace("qt5.5140", "qt5.5130")
|
||||
for filename in ("windows-5140-update.xml", "windows-5140-wasm-update.xml")
|
||||
]
|
||||
|
||||
def _mock_fetch_http(_, rest_of_url, *args, **kwargs: str) -> str:
|
||||
if rest_of_url == "online/qtsdkrepository/linux_x64/desktop/qt5_5130_wasm/Updates.xml":
|
||||
return wasm_updates_xmltext
|
||||
elif rest_of_url.endswith("/desktop/qt5_5130/Updates.xml"):
|
||||
return updates_xmltext
|
||||
else:
|
||||
assert False, f"Fetched an unexpected file at '{rest_of_url}'"
|
||||
|
||||
monkeypatch.setattr(MetadataFactory, "fetch_http", _mock_fetch_http)
|
||||
|
||||
cli = Cli()
|
||||
cli.run(["list-qt", host, "desktop", "--arch", "5.13.0"])
|
||||
out, err = capsys.readouterr()
|
||||
output_set = set(out.strip().split())
|
||||
if has_wasm:
|
||||
assert "wasm_32" in output_set
|
||||
else:
|
||||
assert "wasm_32" not in output_set
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"cmd, host, expect",
|
||||
(
|
||||
@@ -568,45 +665,9 @@ def test_list_choose_tool_by_version(simple_spec, expected_name):
|
||||
assert expected_name is None
|
||||
|
||||
|
||||
qt6_android_requires_ext_msg = (
|
||||
"Qt 6 for Android requires one of the following extensions: "
|
||||
f"{ArchiveId.EXTENSIONS_REQUIRED_ANDROID_QT6}. "
|
||||
"Please add your extension using the `--extension` flag."
|
||||
)
|
||||
no_arm64_v8_msg = "The extension 'arm64_v8a' is only valid for Qt 6 for Android"
|
||||
no_wasm_msg = "The extension 'wasm' is only available in Qt 5.13-5.15 and 6.2+ on desktop."
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"target, ext, version, expected_msg",
|
||||
(
|
||||
("android", "", "6.2.0", qt6_android_requires_ext_msg),
|
||||
("android", "arm64_v8a", "5.13.0", no_arm64_v8_msg),
|
||||
("desktop", "arm64_v8a", "5.13.0", no_arm64_v8_msg),
|
||||
("desktop", "arm64_v8a", "6.2.0", no_arm64_v8_msg),
|
||||
("desktop", "wasm", "5.12.11", no_wasm_msg), # out of range
|
||||
("desktop", "wasm", "6.1.9", no_wasm_msg), # out of range
|
||||
("android", "wasm", "5.12.11", no_wasm_msg), # in range, wrong target
|
||||
("android", "wasm", "5.14.0", no_wasm_msg), # in range, wrong target
|
||||
("android", "wasm", "6.1.9", qt6_android_requires_ext_msg),
|
||||
),
|
||||
)
|
||||
def test_list_invalid_extensions(capsys, monkeypatch, target, ext, version, expected_msg):
|
||||
host = "windows"
|
||||
extension_params = ["--extension", ext] if ext else []
|
||||
cli = Cli()
|
||||
cli.run(["list-qt", host, target, *extension_params, "--arch", version])
|
||||
out, err = capsys.readouterr()
|
||||
sys.stdout.write(out)
|
||||
sys.stderr.write(err)
|
||||
assert expected_msg in err
|
||||
|
||||
|
||||
mac_qt = ArchiveId("qt", "mac", "desktop")
|
||||
mac_wasm = ArchiveId("qt", "mac", "desktop", "wasm")
|
||||
wrong_tool_name_msg = "Please use 'aqt list-tool mac desktop' to check what tools are available."
|
||||
wrong_qt_version_msg = "Please use 'aqt list-qt mac desktop' to show versions of Qt available."
|
||||
wrong_ext_msg = "Please use 'aqt list-qt mac desktop --extensions <QT_VERSION>' to list valid extensions."
|
||||
wrong_arch_msg = "Please use 'aqt list-qt mac desktop --arch <QT_VERSION>' to list valid architectures."
|
||||
|
||||
|
||||
@@ -627,13 +688,9 @@ wrong_arch_msg = "Please use 'aqt list-qt mac desktop --arch <QT_VERSION>' to li
|
||||
[wrong_qt_version_msg],
|
||||
),
|
||||
(
|
||||
MetadataFactory(mac_qt, modules_query=("1.2.3", "clang_64")),
|
||||
MetadataFactory(mac_qt, modules_query=ModulesQuery("1.2.3", "clang_64")),
|
||||
[wrong_qt_version_msg, wrong_arch_msg],
|
||||
),
|
||||
(
|
||||
MetadataFactory(mac_qt, extensions_ver="1.2.3"),
|
||||
[wrong_qt_version_msg],
|
||||
),
|
||||
(
|
||||
MetadataFactory(mac_qt, archives_query=["1.2.3", "clang_64", "a module", "another module"]),
|
||||
[
|
||||
@@ -650,34 +707,20 @@ wrong_arch_msg = "Please use 'aqt list-qt mac desktop --arch <QT_VERSION>' to li
|
||||
],
|
||||
),
|
||||
(
|
||||
MetadataFactory(mac_wasm),
|
||||
[wrong_ext_msg],
|
||||
MetadataFactory(mac_qt, spec=SimpleSpec("<5.9")),
|
||||
["Please use 'aqt list-qt mac desktop' to check that versions of qt exist within the spec '<5.9'."],
|
||||
),
|
||||
(
|
||||
MetadataFactory(mac_wasm, spec=SimpleSpec("<5.9")),
|
||||
[
|
||||
wrong_ext_msg,
|
||||
"Please use 'aqt list-qt mac desktop' to check that versions of qt exist within the spec '<5.9'.",
|
||||
],
|
||||
MetadataFactory(ArchiveId("tools", "mac", "desktop"), tool_name="ifw"),
|
||||
[wrong_tool_name_msg],
|
||||
),
|
||||
(
|
||||
MetadataFactory(ArchiveId("tools", "mac", "desktop", "wasm"), tool_name="ifw"),
|
||||
[
|
||||
"Please use 'aqt list-tool mac desktop --extensions <QT_VERSION>' to list valid extensions.",
|
||||
wrong_tool_name_msg,
|
||||
],
|
||||
MetadataFactory(mac_qt, architectures_ver="1.2.3"),
|
||||
[wrong_qt_version_msg],
|
||||
),
|
||||
(
|
||||
MetadataFactory(mac_wasm, architectures_ver="1.2.3"),
|
||||
[wrong_ext_msg, wrong_qt_version_msg],
|
||||
),
|
||||
(
|
||||
MetadataFactory(mac_wasm, modules_query=("1.2.3", "clang_64")),
|
||||
[wrong_ext_msg, wrong_qt_version_msg, wrong_arch_msg],
|
||||
),
|
||||
(
|
||||
MetadataFactory(mac_wasm, extensions_ver="1.2.3"),
|
||||
[wrong_ext_msg, wrong_qt_version_msg],
|
||||
MetadataFactory(mac_qt, modules_query=ModulesQuery("1.2.3", "clang_64")),
|
||||
[wrong_qt_version_msg, wrong_arch_msg],
|
||||
),
|
||||
),
|
||||
)
|
||||
@@ -687,12 +730,12 @@ def test_suggested_follow_up(meta: MetadataFactory, expected_message: str):
|
||||
|
||||
def test_format_suggested_follow_up():
|
||||
suggestions = [
|
||||
"Please use 'aqt list-tool mac desktop --extensions <QT_VERSION>' to list valid extensions.",
|
||||
"Please use 'aqt list-tool mac desktop --modules <QT_VERSION>' to list valid modules.",
|
||||
"Please use 'aqt list-tool mac desktop' to check what tools are available.",
|
||||
]
|
||||
expected = (
|
||||
"==============================Suggested follow-up:==============================\n"
|
||||
"* Please use 'aqt list-tool mac desktop --extensions <QT_VERSION>' to list valid extensions.\n"
|
||||
"* Please use 'aqt list-tool mac desktop --modules <QT_VERSION>' to list valid modules.\n"
|
||||
"* Please use 'aqt list-tool mac desktop' to check what tools are available."
|
||||
)
|
||||
ex = AqtException("msg", suggested_action=suggestions)
|
||||
@@ -712,13 +755,13 @@ def test_format_suggested_follow_up_empty():
|
||||
"qt/mac/desktop with spec 5.42",
|
||||
),
|
||||
(
|
||||
MetadataFactory(ArchiveId("qt", "mac", "desktop", "wasm"), spec=SimpleSpec("5.42")),
|
||||
"qt/mac/desktop/wasm with spec 5.42",
|
||||
MetadataFactory(ArchiveId("qt", "mac", "desktop"), spec=SimpleSpec("5.42")),
|
||||
"qt/mac/desktop with spec 5.42",
|
||||
),
|
||||
(MetadataFactory(ArchiveId("qt", "mac", "desktop")), "qt/mac/desktop"),
|
||||
(
|
||||
MetadataFactory(ArchiveId("qt", "mac", "desktop", "wasm")),
|
||||
"qt/mac/desktop/wasm",
|
||||
MetadataFactory(ArchiveId("qt", "mac", "desktop")),
|
||||
"qt/mac/desktop",
|
||||
),
|
||||
),
|
||||
)
|
||||
@@ -727,35 +770,38 @@ def test_list_describe_filters(meta: MetadataFactory, expect: str):
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"archive_id, spec, version_str, expect",
|
||||
"archive_id, spec, version_str, arch, expect",
|
||||
(
|
||||
(mac_qt, None, "5.12.42", Version("5.12.42")),
|
||||
(mac_qt, None, "5.12.42", None, Version("5.12.42")),
|
||||
(
|
||||
mac_qt,
|
||||
None,
|
||||
"not a version",
|
||||
None,
|
||||
CliInputError("Invalid version string: 'not a version'"),
|
||||
),
|
||||
(mac_qt, SimpleSpec("5"), "latest", Version("5.15.2")),
|
||||
(mac_qt, SimpleSpec("5"), "latest", None, Version("5.15.2")),
|
||||
(
|
||||
mac_qt,
|
||||
SimpleSpec("5.0"),
|
||||
"latest",
|
||||
None,
|
||||
CliInputError("There is no latest version of Qt with the criteria 'qt/mac/desktop with spec 5.0'"),
|
||||
),
|
||||
(mac_qt, SimpleSpec("<6.2.0"), "latest", "wasm_32", Version("5.15.2")),
|
||||
),
|
||||
)
|
||||
def test_list_to_version(monkeypatch, archive_id, spec, version_str, expect):
|
||||
def test_list_to_version(monkeypatch, archive_id, spec, version_str, arch: Optional[str], expect):
|
||||
_html = (Path(__file__).parent / "data" / "mac-desktop.html").read_text("utf-8")
|
||||
monkeypatch.setattr(MetadataFactory, "fetch_http", lambda *args, **kwargs: _html)
|
||||
|
||||
if isinstance(expect, Exception):
|
||||
with pytest.raises(CliInputError) as error:
|
||||
MetadataFactory(archive_id, spec=spec)._to_version(version_str)
|
||||
MetadataFactory(archive_id, spec=spec)._to_version(version_str, arch)
|
||||
assert error.type == CliInputError
|
||||
assert str(expect) == str(error.value)
|
||||
else:
|
||||
assert MetadataFactory(archive_id, spec=spec)._to_version(version_str) == expect
|
||||
assert MetadataFactory(archive_id, spec=spec)._to_version(version_str, arch) == expect
|
||||
|
||||
|
||||
def test_list_fetch_tool_by_simple_spec(monkeypatch):
|
||||
@@ -857,65 +903,64 @@ def test_show_list_tools_long_ifw(capsys, monkeypatch, columns, expect):
|
||||
assert out == expect
|
||||
|
||||
|
||||
LONG_MODULES_WIN_5140_120 = (
|
||||
" Module Name Display Name Release Date Download Size Installed Size\n"
|
||||
"====================================================================================================================\n"
|
||||
"qtcharts Qt Charts for MinGW 7.3.0 32-bit 2019-12-11 772.7K 7.8M \n"
|
||||
"qtdatavis3d Qt Data Visualization for MinGW 7.3.0 32-bit 2019-12-11 620.2K 5.0M \n"
|
||||
"qtlottie Qt Lottie Animation for MinGW 7.3.0 32-bit 2019-12-11 153.5K 968.4K \n"
|
||||
"qtnetworkauth Qt Network Authorization for MinGW 7.3.0 32-bit 2019-12-11 98.7K 638.6K \n"
|
||||
"qtpurchasing Qt Purchasing for MinGW 7.3.0 32-bit 2019-12-11 50.9K 306.8K \n"
|
||||
"qtquick3d Qt Quick 3D for MinGW 7.3.0 32-bit 2019-12-11 9.8M 21.2M \n"
|
||||
"qtquicktimeline Qt Quick Timeline for MinGW 7.3.0 32-bit 2019-12-11 35.3K 154.1K \n"
|
||||
"qtscript Qt Script for MinGW 7.3.0 32-bit 2019-12-11 1.0M 5.5M \n"
|
||||
"qtvirtualkeyboard Qt Virtual Keyboard for MinGW 7.3.0 32-bit 2019-12-11 2.1M 6.8M \n"
|
||||
"qtwebglplugin Qt WebGL Streaming Plugin for MinGW 7.3.0 32-bit 2019-12-11 201.7K 1.0M \n"
|
||||
)
|
||||
LONG_MODULES_WIN_5140_80 = (
|
||||
" Module Name Display Name \n"
|
||||
"====================================================================\n"
|
||||
"qtcharts Qt Charts for MinGW 7.3.0 32-bit \n"
|
||||
"qtdatavis3d Qt Data Visualization for MinGW 7.3.0 32-bit \n"
|
||||
"qtlottie Qt Lottie Animation for MinGW 7.3.0 32-bit \n"
|
||||
"qtnetworkauth Qt Network Authorization for MinGW 7.3.0 32-bit \n"
|
||||
"qtpurchasing Qt Purchasing for MinGW 7.3.0 32-bit \n"
|
||||
"qtquick3d Qt Quick 3D for MinGW 7.3.0 32-bit \n"
|
||||
"qtquicktimeline Qt Quick Timeline for MinGW 7.3.0 32-bit \n"
|
||||
"qtscript Qt Script for MinGW 7.3.0 32-bit \n"
|
||||
"qtvirtualkeyboard Qt Virtual Keyboard for MinGW 7.3.0 32-bit \n"
|
||||
"qtwebglplugin Qt WebGL Streaming Plugin for MinGW 7.3.0 32-bit\n"
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"columns, expect",
|
||||
"columns, use_cli, expect",
|
||||
(
|
||||
(
|
||||
120,
|
||||
" Module Name Display Name Release Date Download Size "
|
||||
"Installed Size\n"
|
||||
"======================================================================================================"
|
||||
"==============\n"
|
||||
"qtcharts Qt Charts for MinGW 7.3.0 32-bit 2019-12-11 772.7K "
|
||||
"7.8M \n"
|
||||
"qtdatavis3d Qt Data Visualization for MinGW 7.3.0 32-bit 2019-12-11 620.2K "
|
||||
"5.0M \n"
|
||||
"qtlottie Qt Lottie Animation for MinGW 7.3.0 32-bit 2019-12-11 153.5K "
|
||||
"968.4K \n"
|
||||
"qtnetworkauth Qt Network Authorization for MinGW 7.3.0 32-bit 2019-12-11 98.7K "
|
||||
"638.6K \n"
|
||||
"qtpurchasing Qt Purchasing for MinGW 7.3.0 32-bit 2019-12-11 50.9K "
|
||||
"306.8K \n"
|
||||
"qtquick3d Qt Quick 3D for MinGW 7.3.0 32-bit 2019-12-11 9.8M "
|
||||
"21.2M \n"
|
||||
"qtquicktimeline Qt Quick Timeline for MinGW 7.3.0 32-bit 2019-12-11 35.3K "
|
||||
"154.1K \n"
|
||||
"qtscript Qt Script for MinGW 7.3.0 32-bit 2019-12-11 1.0M "
|
||||
"5.5M \n"
|
||||
"qtvirtualkeyboard Qt Virtual Keyboard for MinGW 7.3.0 32-bit 2019-12-11 2.1M "
|
||||
"6.8M \n"
|
||||
"qtwebglplugin Qt WebGL Streaming Plugin for MinGW 7.3.0 32-bit 2019-12-11 201.7K "
|
||||
"1.0M \n",
|
||||
),
|
||||
(
|
||||
80,
|
||||
" Module Name Display Name \n"
|
||||
"====================================================================\n"
|
||||
"qtcharts Qt Charts for MinGW 7.3.0 32-bit \n"
|
||||
"qtdatavis3d Qt Data Visualization for MinGW 7.3.0 32-bit \n"
|
||||
"qtlottie Qt Lottie Animation for MinGW 7.3.0 32-bit \n"
|
||||
"qtnetworkauth Qt Network Authorization for MinGW 7.3.0 32-bit \n"
|
||||
"qtpurchasing Qt Purchasing for MinGW 7.3.0 32-bit \n"
|
||||
"qtquick3d Qt Quick 3D for MinGW 7.3.0 32-bit \n"
|
||||
"qtquicktimeline Qt Quick Timeline for MinGW 7.3.0 32-bit \n"
|
||||
"qtscript Qt Script for MinGW 7.3.0 32-bit \n"
|
||||
"qtvirtualkeyboard Qt Virtual Keyboard for MinGW 7.3.0 32-bit \n"
|
||||
"qtwebglplugin Qt WebGL Streaming Plugin for MinGW 7.3.0 32-bit\n",
|
||||
),
|
||||
(120, False, LONG_MODULES_WIN_5140_120),
|
||||
(80, False, LONG_MODULES_WIN_5140_80),
|
||||
(120, True, LONG_MODULES_WIN_5140_120),
|
||||
(80, True, LONG_MODULES_WIN_5140_80),
|
||||
),
|
||||
)
|
||||
def test_show_list_long_qt_modules(capsys, monkeypatch, columns, expect):
|
||||
def test_show_list_long_qt_modules(capsys, monkeypatch, columns: int, use_cli: bool, expect: str):
|
||||
update_xml = (Path(__file__).parent / "data" / "windows-5140-update.xml").read_text("utf-8")
|
||||
monkeypatch.setattr(MetadataFactory, "fetch_http", lambda self, _: update_xml)
|
||||
|
||||
cli = Cli()
|
||||
|
||||
# Patching get_terminal_size prevents successful instantiation of Cli, so do it afterwards:
|
||||
monkeypatch.setattr(shutil, "get_terminal_size", lambda fallback: os.terminal_size((columns, 24)))
|
||||
|
||||
meta = MetadataFactory(
|
||||
ArchiveId("qt", "windows", "desktop"),
|
||||
modules_query=("5.14.0", "win32_mingw73"),
|
||||
is_long_listing=True,
|
||||
)
|
||||
show_list(meta)
|
||||
if use_cli:
|
||||
return_code = cli.run("list-qt windows desktop --long-modules 5.14.0 win32_mingw73".split())
|
||||
assert return_code == 0
|
||||
else:
|
||||
meta = MetadataFactory(
|
||||
ArchiveId("qt", "windows", "desktop"),
|
||||
modules_query=ModulesQuery("5.14.0", "win32_mingw73"),
|
||||
is_long_listing=True,
|
||||
)
|
||||
show_list(meta)
|
||||
out, err = capsys.readouterr()
|
||||
sys.stdout.write(out)
|
||||
sys.stderr.write(err)
|
||||
@@ -970,14 +1015,13 @@ def test_show_list_bad_connection(monkeypatch, capsys, exception_class, error_ms
|
||||
raise exception_class(error_msg)
|
||||
|
||||
monkeypatch.setattr(source, mock)
|
||||
meta = MetadataFactory(mac_wasm, spec=SimpleSpec("<5.9"))
|
||||
meta = MetadataFactory(mac_qt, spec=SimpleSpec("<5.9"))
|
||||
with pytest.raises(exception_class) as error:
|
||||
show_list(meta)
|
||||
assert error.type == exception_class
|
||||
assert format(error.value) == (
|
||||
f"{error_msg}\n"
|
||||
"==============================Suggested follow-up:==============================\n"
|
||||
"* Please use 'aqt list-qt mac desktop --extensions <QT_VERSION>' to list valid extensions.\n"
|
||||
"* Please use 'aqt list-qt mac desktop' to check that versions of qt exist within the spec '<5.9'."
|
||||
)
|
||||
|
||||
@@ -1022,7 +1066,13 @@ def fetch_expected_tooldata(json_filename: str) -> ToolData:
|
||||
return ToolData(tools)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("host, target, tool_name", (("mac", "desktop", "tools_cmake"),))
|
||||
@pytest.mark.parametrize(
|
||||
"host, target, tool_name",
|
||||
(
|
||||
("mac", "desktop", "tools_cmake"),
|
||||
("mac", "desktop", "sdktool"),
|
||||
),
|
||||
)
|
||||
def test_list_tool_cli(monkeypatch, capsys, host: str, target: str, tool_name: str):
|
||||
html_file = f"{host}-{target}.html"
|
||||
xml_file = f"{host}-{target}-{tool_name}-update.xml"
|
||||
@@ -1040,7 +1090,7 @@ def test_list_tool_cli(monkeypatch, capsys, host: str, target: str, tool_name: s
|
||||
if not rest_of_url.endswith("Updates.xml"):
|
||||
return htmltext
|
||||
folder = urlparse(rest_of_url).path.split("/")[-2]
|
||||
assert folder.startswith("tools_")
|
||||
assert folder.startswith("tools_") or folder in ["sdktool"]
|
||||
return xmltext
|
||||
|
||||
monkeypatch.setattr(MetadataFactory, "fetch_http", _mock_fetch_http)
|
||||
@@ -1048,27 +1098,31 @@ def test_list_tool_cli(monkeypatch, capsys, host: str, target: str, tool_name: s
|
||||
cli = Cli()
|
||||
cli.run(["list-tool", host, target])
|
||||
out, err = capsys.readouterr()
|
||||
assert not err
|
||||
output_set = set(out.strip().split())
|
||||
assert output_set == expected_tools
|
||||
|
||||
cli.run(["list-tool", host, target, tool_name])
|
||||
out, err = capsys.readouterr()
|
||||
assert not err
|
||||
output_set = set(out.strip().split())
|
||||
assert output_set == expected_tool_modules
|
||||
|
||||
# Test abbreviated tool name: "aqt list-tool mac desktop ifw"
|
||||
assert tool_name.startswith("tools_")
|
||||
short_tool_name = tool_name[6:]
|
||||
assert tool_name.startswith("tools_") or tool_name in ["sdktool"]
|
||||
short_tool_name = tool_name[6:] if tool_name.startswith("tools_") else tool_name
|
||||
cli.run(["list-tool", host, target, short_tool_name])
|
||||
out, err = capsys.readouterr()
|
||||
assert not err
|
||||
output_set = set(out.strip().split())
|
||||
assert output_set == expected_tool_modules
|
||||
|
||||
cli.run(["list-tool", host, target, tool_name, "-l"])
|
||||
out, err = capsys.readouterr()
|
||||
assert not err
|
||||
|
||||
expected_tooldata = format(fetch_expected_tooldata(xml_expect))
|
||||
assert out.strip() == expected_tooldata
|
||||
assert out.strip() == expected_tooldata.strip()
|
||||
|
||||
|
||||
def test_fetch_http_ok(monkeypatch):
|
||||
@@ -1117,3 +1171,58 @@ def test_fetch_http_download_error(monkeypatch, exception_on_error):
|
||||
|
||||
# Require that a fallback url was tried
|
||||
assert len(urls_requested) == 2
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"host, expected, all_arches",
|
||||
(
|
||||
("windows", "win32_mingw", ["win64_msvc2013_64", "win32_mingw", "win16_mingw"]),
|
||||
("windows", "win32_mingw", ["win64_msvc2013_64", "win32_mingw"]),
|
||||
("windows", "win1_mingw0", ["win64_msvc2013_64", "win_mingw900", "win1_mingw0"]),
|
||||
("windows", "win32_mingw1", ["win64_msvc2013_64", "win32_mingw", "win32_mingw1"]),
|
||||
("windows", "win64_mingw", ["win64_msvc2013_64", "win32_mingw900", "win64_mingw"]),
|
||||
("windows", "win64_mingw81", ["win64_msvc2013_64", "win64_mingw81", "win64_mingw"]),
|
||||
("windows", "win64_mingw73", ["win64_msvc2013_64", "win64_mingw53", "win64_mingw73"]),
|
||||
("windows", "win64_mingw", ["win64_msvc2013_64", "win64_mingw", "win64_mingw"]),
|
||||
("windows", EmptyMetadata(), []),
|
||||
("linux", "gcc_64", ["should not fetch arches"]),
|
||||
("mac", "clang_64", ["should not fetch arches"]),
|
||||
),
|
||||
)
|
||||
def test_select_default_mingw(monkeypatch, host: str, expected: Union[str, Exception], all_arches: List[str]):
|
||||
monkeypatch.setattr("aqt.metadata.MetadataFactory.fetch_arches", lambda *args, **kwargs: all_arches)
|
||||
|
||||
if isinstance(expected, Exception):
|
||||
with pytest.raises(type(expected)) as e:
|
||||
MetadataFactory(ArchiveId("qt", host, "desktop")).fetch_default_desktop_arch(Version("1.2.3"))
|
||||
assert e.type == type(expected)
|
||||
else:
|
||||
actual_arch = MetadataFactory(ArchiveId("qt", host, "desktop")).fetch_default_desktop_arch(Version("1.2.3"))
|
||||
assert actual_arch == expected
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"expected_result, installed_files",
|
||||
(
|
||||
("mingw73_32", ["mingw73_32/bin/qmake.exe", "msvc2017/bin/qmake.exe"]),
|
||||
(None, ["msvc2017/bin/qmake.exe"]),
|
||||
(None, ["mingw73_win/bin/qmake.exe"]), # Bad directory: mingw73_win does not fit the mingw naming convention
|
||||
(None, ["mingw73_32/bin/qmake", "msvc2017/bin/qmake.exe"]),
|
||||
("mingw81_32", ["mingw73_32/bin/qmake.exe", "mingw81_32/bin/qmake.exe"]),
|
||||
("mingw73_64", ["mingw73_64/bin/qmake.exe", "mingw73_32/bin/qmake.exe"]),
|
||||
),
|
||||
)
|
||||
def test_find_installed_qt_mingw_dir(expected_result: str, installed_files: List[str]):
|
||||
qt_ver = "6.3.0"
|
||||
host = "windows"
|
||||
|
||||
# Setup a mock install directory that includes some installed files
|
||||
with TemporaryDirectory() as base_dir:
|
||||
base_path = Path(base_dir)
|
||||
for file in installed_files:
|
||||
path = base_path / qt_ver / file
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
path.write_text("Mock installed file")
|
||||
|
||||
actual_result = QtRepoProperty.find_installed_desktop_qt_dir(host, base_path, Version(qt_ver))
|
||||
assert (actual_result.name if actual_result else None) == expected_result
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import re
|
||||
from pathlib import Path
|
||||
from tempfile import TemporaryDirectory
|
||||
|
||||
import pytest
|
||||
@@ -58,7 +59,7 @@ def test_updater_update_license_io_error(monkeypatch, target_config: TargetConfi
|
||||
with pytest.raises(UpdaterError) as err:
|
||||
with TemporaryDirectory() as empty_dir:
|
||||
# Try to update a Qt installation that does not exist
|
||||
Updater.update(target_config, base_dir=empty_dir)
|
||||
Updater.update(target_config, base_path=Path(empty_dir), installed_desktop_arch_dir=None)
|
||||
assert err.type == UpdaterError
|
||||
err_msg = format(err.value)
|
||||
assert expected_err_pattern.match(err_msg)
|
||||
|
||||
33
tools/build_standalone.py
Normal file
33
tools/build_standalone.py
Normal file
@@ -0,0 +1,33 @@
|
||||
import argparse
|
||||
import os
|
||||
import PyInstaller.__main__
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("arch", nargs="?")
|
||||
args = parser.parse_args()
|
||||
|
||||
# build PyInstaller arguments
|
||||
tools_dir = os.path.dirname(__file__)
|
||||
name = "aqt" if args.arch is None else "aqt_" + args.arch
|
||||
args = [
|
||||
'--noconfirm',
|
||||
'--onefile',
|
||||
'--name', name,
|
||||
'--paths', ".",
|
||||
'--hidden-import', "aqt",
|
||||
]
|
||||
|
||||
# Add data files
|
||||
if os.name == 'nt':
|
||||
adddata_arg = "{src:s};aqt"
|
||||
else:
|
||||
adddata_arg = "{src:s}:aqt"
|
||||
for data in ["aqt/logging.ini", "aqt/settings.ini", "aqt/combinations.json"]:
|
||||
args.append('--add-data')
|
||||
args.append(adddata_arg.format(src=data))
|
||||
args.append(os.path.join(tools_dir, "launch_aqt.py"))
|
||||
|
||||
# launch PyInstaller
|
||||
PyInstaller.__main__.run(args)
|
||||
8
tools/launch_aqt.py
Normal file
8
tools/launch_aqt.py
Normal file
@@ -0,0 +1,8 @@
|
||||
#!python.exe
|
||||
import aqt
|
||||
import re
|
||||
import sys
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(aqt.main())
|
||||
Reference in New Issue
Block a user