Commit Graph

142 Commits

Author SHA1 Message Date
Hiroshi Miura
f007ad8e7b Quick hack to install latest version of tool
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-07-06 18:15:21 +09:00
Julien Marrec
91f33da898 Minor changes: use posixpath.join, add __repr__/__str__, some type hints, and some mypy issues (#287)
* Avoid calling functions with positional args: use names in case you reorder, Some type hints + __repr__ and __str__

* Use posixpath.join

* mypy issue: logger is sometimes passed.

* mypy: rename the Settings class to SettingsClass

```
aqt/helper.py:333: error: Cannot assign to a type
aqt/helper.py:333: error: Incompatible types in assignment (expression has type "Settings", variable has type "Type[Settings]")
```

* Reduce indenting by avoiding unnecessary except.else

* more calling by named arguments
2021-07-06 12:13:35 +09:00
David Dalcino
705c6225e2 Add capability to list tools (#235)
* Add html scraping capability to helper.py

The function scrape_html_for_folders() reads an html file at
`https://download.qt.io/online/qtsdkrepository/<os>/<target>/` and
extracts a list of all the folders within that directory.
It separates the folders by category, so that 'tools' are not
mixed in with 'qt5' or 'qt6'.

This commit also adds a function that prints the available folders,
allowing the caller to filter the output by category.

* Add interface for accessing scrape_html_for_folders

I'm sure this isn't exactly what is needed, and that this functionality
should probably be folded into `aqt list`, but it does demonstrate that
aqt can list all the tools available at downloads.qt.io by scraping html.

This allows you to type `aqt list2 tools linux desktop`, and get a list
of all the tools on the server.
There are more options; type `aqt list2 -h` to see them all.

* Add failing tests for `aqt list`

* Add passing implementation of `aqt list`

* Remove old implementation of `aqt list`

This removes `Cli.run_list_old`, as well as any commented-out code in
installer.py that was related to the old implementation of `run_list`.

This also restores some code that was commented out erroneously.

* Fix misuse of semantic_version

In an earlier commit, I used the parameter `partial=True` for the
preview builds of Qt, since they do not include a patch number. I did
not recognize this as a misuse of semantic_version until I ran the tox
linter. `partial` is meant for 'partial specification', as in, 'this
program requires version 6.2, and the patch is unimportant`.

This change removes the `partial=True` parameter, adds a `0` for the
patch number, and uses a format string to print preview versions without
the patch.

* Use semantic version in interfaces instead of str

This updates all functions that accept a Qt version as a string, so that
they now accept a semantic version object instead. This forces the
caller to do some input validation, and moves the responsibility of
string-to-version conversions out of functions where it does not belong.

* Improve `aqt list` interface as discussed

This adds several new options to `aqt list`, and renames the ambiguous
`packages` to `modules`. New options include the ability to list
targets, extensions, and architectures for a particular (host, target,
Qt version) tuple. The goal is to provide sufficient information to the
user, such that the user can use all the other features of aqt without
having to look them up somewhere else.

* Cleanup `targets` dictionary

* Add `list architectures` feature

* Add tests for `list architectures` feature

* Add documentation for new list feature.

* Fix url bugs related to BASE_URL change

* Add stub for `list --extensions`

* Implement `list --extensions`

* Cleanup imports

* Add basic tests of `aqt list` to azure pipeline

* Fix failed merge with upstream

* Simplify string-to-version code

An earlier commit introduced `cli_2_semantic_version`, which calls
`get_semantic_version_with_dots`, which will never be called by any
other code. I think that this should really just be one function, and
splitting it in two is just needlessly complex.

* Revert dd41e653 - changes to azure-pipelines.yml

* CI: change test case for list command

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Update MANIFEST

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Fix errors reported by flake8

This commit fixes some unused imports, missing imports, and formatting
errors.

* Run isort

* Add three more build jobs to azure pipelines

This adds three more combinations of `qt version/host/target` to the
`aqt list` command tests on the azure pipelines. This is pretty far from
exhaustive, but I think it's worth it to add these: they execute
slightly different code paths than the standard `linux/desktop`
variants. I don't want to add a whole lot more than this; `aqt list` is
slower than I'd like it to be, and I don't want to waste CI time.

* Fix bug where empty extensions returns success

Prior to this commit, if you ran `aqt list` to list possible extensions,
it could print a blank line and return 0. This is because the
get_extensions_for_version function was accepting empty strings as a
valid extension, and returning a list consisting of one empty string.
This commit filters out those empty strings.

* Attempt to fix ci bug when listing android exts

Android extensions for Qt6 follow different rules than Qt5; this
attempts to account for that.

* remove invalid ArchiveId objects from tests

* Add author

* Use Python for test logic instead of bash

* Remove 'build accelbubble' step from 'list' test

This commit attempts to separate the 'build accelbubble example' test
from the 'aqt list' test.

In this case, the test for `aqt list qt5 linux android` was running the
"build accelbubble example" test in addition to the intended test. If
the "build accelbubble example" test fails, then it looks like the `aqt
list` test failed, until you look to see why it failed.

* Remove dead code

* Accept `latest` keyword instead of qt version

This commit modifies the interface of `aqt list`, so that the flags
`--modules`, `--extensions`, and `--arch` will accept either a Qt
version or the word `latest`. If the user specifies a version of Qt,
the command works as before. If the user specifies `--modules latest`,
`aqt list` will determine the latest version of Qt, given the filters
specified, and return the modules for that version.

This commit removes the flag `--latest-modules`, because that flag is no
longer necessary. The `latest` keyword serves the same function, and it
works for the `--extensions`, and `--arch` flags as well. This prevents
the need for flags such as `--latest-extensions` and `--latest-arch`,
which otherwise would have been necessary to provide this functionality
to the other list features.

* remove unused import

* Update azure pipeline to reflect `latest` feature

* WIP refactor helper methods into ListCommand

* Refactor helper methods into ListCommand

This PR adds many helper methods to helper.py that are closely related
to each other, and which are only useful to the ListCommand object. This
commit moves the majority of these into the ListCommand object, so that
they don't confuse future readers who are looking for something else.

* Fix imports after merge

* Fix unused import

* Add test and impl for list tool modules

This adds code that parses an 'Updates.xml' file for the names of tool
modules, which a user can use to install tools. This does not have any
cli-facing code yet, since the current interface does not make sense for
this purpose.

* Add CLI command to list tool variant names

This exposes `ListCommand.fetch_tool_modules` to the CLI.
Accordingly, it adds a test to the Azure Pipelines for every `aqt list`
job, and it adds documentation to docs/cli.rst.

Since this feature is meant to print values you can feed into the `aqt
tool` command, the documentation for the `aqt tool` command was changed
as well.

* Use monkeypatch for http_fetcher

This removes the http_fetcher parameter for ListCommand in favor of
monkeypatching.

* Remove dataclasses

Dataclasses were new in Python 3.7, and don't exist in the minimum
supported Python 3.6.

* black

* Fix ci test for `aqt list tools --tool`

* Add default timeout to request_http_with_failover

* fix monkeypatched http fetcher

* Fix 'aqt list tools' command on Azure Pipeline

Currently, the `tools_qt3dstudio_runtime_240` appears to be the only
tool available on all host/target combinations, so we will check that
one in Azure Pipelines.

* Move helper classes specific to ListCommand into ListCommand

* Fix use of new global Settings object

* Fix sphinx docstring syntax

* Swap `request_http_with_failover` for `getUrl`

* Add additional follow-up suggestion on error

* Fix exceptions import

* Prevent repeated 'suggested follow up' actions

This change uses exclusive branches to prevent `aqt list` from repeating
the same/similar recommended actions.

* Fix bugs related to updated getUrl error messages

* run black

* docs: add auto section link label extension

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* docs: add more list command examples

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Fix typo in docs

* remove duplicate `semantic_version`

* Add expected outputs and arch example to docs

This change adds some expected output to the documentation. For any
user who is confused about what the documentation means when it
mentions `tools` and `modules`, and is unsure which is which, this
change should help that user figure that out.

This also adds an example for listing architectures.

* Remove `logger` from `getUrl` parameter list

* helper: getLogger("aqt.helper") in helper functions

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Use `pretty_print` instead of `str()` for output

* test_list.py use pretty_print instead of str

* fix Versions constructor

* black

Co-authored-by: Hiroshi Miura <miurahr@linux.com>
2021-07-06 07:58:18 +09:00
Julien Marrec
4069b623e1 Hotfix #281 2021-06-29 22:00:29 +02:00
Julien Marrec
a277ecf4a1 Fix #280 - wrong base path in run_list 2021-06-25 14:00:04 +02:00
Hiroshi Miura
fbdcb0cf7c PEP8/Black
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-06-22 16:37:58 +09:00
Hiroshi Miura
580143352a Fix version comparison (#275)
Fix function error when migrating semantic_version package

Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-06-22 16:35:04 +09:00
Hiroshi Miura
f35edf398a Fix logging in installer sub-process when multiprocessing context with spawn method (#273)
* Simplify logging

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Update logging

- keep logging file path in Settings
- introduce installer logger

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* PEP8/Black

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Logging: add queue handler

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Logging: introduce logutils module

- Add QueueListenerHandler
- Add queue listener handler config
- qualname to aqt.installer

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Logging: introduce aqt.updater logger

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Logging: introduce aqt.main and aqt.archives logger

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* PEP8/Black

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Logging: simplify config file

- use propergate for last output handler
- change formatter
  * console: brief
  * file: verbose
- Use multiprocessing.Queue() instead of queue.Queue()
- Remember logging config file customization in Settings
- QueueListener use handler as of getLogger("aqt").handlers

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* change log level of redirection

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Logging: Single global LoggingQueueListener

- Global instance of LoggingQueueListener
- Drop queue_listener from logging.ini
- Generate QueueHandler from LoggingQueueLisnter.get_queue_handler
- Explicitly close QueueListenerHandler and Queue object.

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* CI: use verbose console logging for ci

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* CLI: drop options to specify logger and logger configuration file

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Make Instance of LoggingQueueListener in Cli class

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Handle QueueListener in Cli.call_installer

- Use mp.Manager().Queue()
- start(), stop() in caller
- Gracefully close QueueHandler in installer

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* PEP8

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Drop berkeley.edu from fallbacks of mirror site

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Fix log format of time digits

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Update settings load

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* CI: catch custom settings from change in master branch

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Show log when loading custom settings

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Improve subprocess logging that use root logger

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* fix logging.ini settings

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Fix against tests

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Introduce MyQueueListener

- Inherit System QueueListner to override logger name

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* PEP8/Black

Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-06-21 15:25:00 +09:00
Hiroshi Miura
fac014216f Use global instance to hold Settings instead of Borg (#272)
* Use global variable to hold Settings

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Settings global instance to hold configurations

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Revert to Settings class to helper module

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Revert Settings class variables

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* PEP8

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* CI: change actions to use macos-11

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Revert "CI: change actions to use macos-11"

CI: macos-11 is just for private preview

This reverts commit f1d576f4bf.
2021-06-19 10:43:19 +09:00
Hiroshi Miura
fe38fb0e62 Version comparison by semantic_version (#263)
* Version comparison by packaging.version

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Use semantic_version instead of packaging.version

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Use more semantic_version

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Fix typo and imports

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Fix missing imports

and fix typo, reduce redundancies.

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* PEP8

Signed-off-by: Hiroshi Miura <miurahr@linux.com>

* Add 5.12.11 to known version

Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-06-12 10:46:45 +09:00
Hiroshi Miura
8cca49bb8b Fix changes for test hook
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-05-22 17:33:06 +09:00
Hiroshi Miura
43cb99bc9c Refactoring network code
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-05-22 17:26:16 +09:00
Hiroshi Miura
7debc508f4 Check blacklist when downloading Update.xml
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-05-22 16:42:42 +09:00
Hiroshi Miura
57cec9e2e0 Integrate cuteci installer into aqtinstall (#239)
* Add cuteci intaller

* Check qtaccount.ini existence

* Fix subprocess call

* sub command show elapsed time

* test: cli: update help message exception

* Update URL base handling

* old version installer accept environment variable

- qtaccount: QTLOGIN and QTPASSWORD variable

* Change cuteci sub command to 'offline_installer'

* Update qscript to deselect QtCreator from installation

* Reuse downloaded installer file

* Update test and fix MANIFEST

Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-05-20 14:43:02 +09:00
Hiroshi Miura
2bb8d68d6c PEP8
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-05-11 16:20:08 +09:00
Hiroshi Miura
c313b13c2a Check sha1 checksum of archive if possible
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-05-11 16:03:49 +09:00
Hiroshi Miura
d841741641 Reformat by black
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-04-02 12:20:10 +09:00
Hiroshi Miura
30bbff97c0 Catch both ReadTimeout and ConnectionTimeout and redirect to mirror
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-02-13 12:52:33 +09:00
Hiroshi Miura
c4b488bd22 Catch timeout connection then fallback
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-02-13 11:29:57 +09:00
Hiroshi Miura
d48ad94854 Suppress debug log of XML file
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-02-04 21:50:02 +09:00
Hiroshi Miura
c2750e34f1 Update documents and copyrights
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-01-30 00:28:44 +09:00
Hiroshi Miura
eddd4d5685 Fix installing android packages
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-01-27 15:16:20 +09:00
Hiroshi Miura
009e5e4069 Fix for taking substring
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-01-27 14:52:30 +09:00
Hiroshi Miura
fcccdd09da Update list command to work for Qt6
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-01-26 22:35:40 +09:00
Hiroshi Miura
01ed433429 Fix timeout option for SrcDocExample
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-01-21 21:32:28 +09:00
Hiroshi Miura
a43a26b7c6 Introduce timeout option
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-01-21 21:06:44 +09:00
Hiroshi Miura
4450242e2c Set timeout for requests connections
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-01-21 20:54:39 +09:00
Hiroshi Miura
7fd019e83b Fix for checks and tests
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-01-21 10:09:44 +09:00
Hiroshi Miura
c6f95a7d58 Select fallbacks from known list
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-01-21 10:04:14 +09:00
Hiroshi Miura
88b6cc6c81 Support --fallback mirror option 2021-01-21 08:21:19 +09:00
Hiroshi Miura
d21a098a96 Tools: Check name for archive seletion
Related: #187 @stemoretti proposed
2020-12-12 10:33:54 +09:00
Hiroshi Miura
37226ceda6 Tool: Compare version string by startswith
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2020-12-11 16:03:55 +09:00
Gamso
e99cb752eb fix syntax 2020-11-24 20:05:44 +01:00
Gamso
ef12e34f85 Add filter on doc and example packages when option "all_extra" is enabled.
Add test.
2020-11-24 19:48:03 +01:00
Hiroshi Miura
51fe856d1c Refactor: drop settings.py
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2020-11-22 15:25:22 +09:00
Hiroshi Miura
59a07f02e7 PEP8
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2020-09-16 11:05:10 +09:00
Hiroshi Miura
943f2dcf05 Add list command
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2020-09-16 09:58:16 +09:00
Gamso
91b78c24f2 Add check on packages name to download (#159)
* Add check on packages name to download only packages for platforms specified.

* More stronger check with using platforms from combinations.json.

* Add test

Co-authored-by: Gamso <gamso@live.fr>
2020-09-11 14:41:53 +09:00
Hiroshi Miura
d807f80b67 Fix to if .. is not None
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2020-08-18 18:08:57 +09:00
Hiroshi Miura
6032d67965 Check whether download archives is None 2020-08-18 17:34:58 +09:00
Hiroshi Miura
b5a84acfad Can use qt6_ as an archive base name
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2020-06-19 00:55:19 +09:00
Hiroshi Miura
5cf0fa2ae0 Do not raise exception for unknown option combinations
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2020-06-13 19:42:07 +09:00
Hiroshi Miura
cab78ff8fb Refactoring
- Refactoring archives classes to use inhert functions
- define installer.finalize() and call it explicit from cli.py

Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2020-05-31 14:24:53 +09:00
Hiroshi Miura
358819e6b4 Add subcommand to intall doc/src/examples
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2020-05-31 12:56:32 +09:00
Hiroshi Miura
72c4589e7d Patch qmake as finalize process (#130)
* Patch qmake hard coded path with installed prefix(#100)
* AP: Update tests
 - Test android target with 5.14.x
 - Test ios target on mac
* Does not patch mac framework when android, ios and wasm
* Update changelog
* GHA: Update to run qmake to check patch
  - Check qmake works well if patched.

Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2020-05-21 21:56:04 +09:00
Hiroshi Miura
fcb5b45631 CLI: Add --archives option
when specify '--archive qtbase qttools' then
aqt installs these subset of installation.

There is no gurantee it works, and it is an advanced
option.

Implemented #126

Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2020-05-19 12:14:25 +09:00
Hiroshi Miura
32d4cb7e6e Tool: fix download url construction with full_version
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2020-05-03 15:39:30 +09:00
Hiroshi Miura
10aa3c230b Fix Tools intallation
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2020-05-02 12:38:30 +09:00
Hiroshi Miura
6bf28e5afb Update Error Handling
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2020-05-02 12:19:40 +09:00
Hiroshi Miura
048d129768 Fix handling of QtArchive variables
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2020-05-02 12:19:40 +09:00