Commit Graph

239 Commits

Author SHA1 Message Date
Dave Dalcino
a6db5da83d Refactor warning messages into reusable functions
This will reduce code duplication and make the warning messages easier
to improve in the future, since they will only need to be changed in one
location.
2023-02-16 14:24:47 -08:00
Dave Dalcino
6a0c174e01 Improve warning messages re: unknown aqt arguments
This improves the warnings about unknown versions, modules, and
architectures of Qt, so that it is more explicit what the message
actually means.

This changes the purpose of `Cli._check_modules_arg` from checking if
modules exist in combinations.json, to returning a list of modules
that do not exist in that file. The function has been renamed as well.
This change was necessary to make the warning message more informative.
2023-02-16 14:01:39 -08:00
Dave Dalcino
5a60b6d6e1 Update logic for --autodesktop flag
The `--autodesktop` flag is only useful when installing Qt6 for mobile
or wasm. The previous implementation would unnecessarily cause it to
install a desktop Qt for Qt5 mobile installations. This change ensures
that `--autodesktop` will not install an extra desktop Qt for any Qt5
installation.
2023-02-13 13:13:04 -08:00
Dave Dalcino
6e97b9fca9 Update documentation for --autodesktop flag
The `--autodesktop` flag is only useful when installing Qt6 for mobile
or wasm. There is no need to have an additional desktop Qt installation
for any Qt5 mobile or wasm installs. This updates the docs to reflect
that.
2023-02-13 13:13:03 -08:00
Hiroshi Miura
0f1010baee Load settings.ini in child process
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2022-12-05 19:50:51 +09:00
Dave Dalcino
452f8d74b2 Fix mypy type errors
- Introduce classes inherit argparse.ArgumentParser to suppress mypy
  errors in Cli class.
- `requests.session.Session.get()` expects that `timeout` is `float | tuple[float, float] | tuple[float, None] | None`
  so use `Tuple[float, float]` for timeout
- Use named tuple for modules_query
- Update test_list.py
2022-11-21 07:34:45 +09:00
Hiroshi Miura
7362621618 installer.py#installer: base_dir is always not None
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2022-11-20 15:20:27 +09:00
Hiroshi Miura
d95b5d7f05 mypy: improve SrcDocExample func
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2022-11-20 15:20:27 +09:00
Hiroshi Miura
c1627a9686 mypy: update untyped defs
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2022-11-20 15:20:27 +09:00
Dave Dalcino
81eebde168 Adjust against mypy type errors 2022-11-20 15:20:27 +09:00
Hiroshi Miura
893439fbbc PEP8
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2022-11-17 10:46:07 +09:00
Dave Dalcino
c90b262984 remove extensions from ArchiveId 2022-11-16 16:14:55 -08:00
Dave Dalcino
caee04bcb3 Remove extensions 2022-11-16 16:14:54 -08:00
EtlamGit
924e4b087b improve link to report issue
When we print the link with trailing dot, some automatic log-formaters will add that dot to the link itself.
E.g. when you use Github Actions this link will show up with extra dot and therefore does not work.
By removing the dot, the link is functional also in these cases.
2022-11-05 11:24:18 +01:00
Dave Dalcino
b52fa0f3e5 Fix log message for Qt that requires desktop version 2022-10-12 18:11:29 -07:00
Dave Dalcino
42481c42e1 Allow --autodesktop to autoinstall desktop qt for qt6/wasm.
Apparently, Qt6 for wasm does not ship with qmake, so CI must install it.
This change leverages `--autodesktop` for that purpose.
2022-10-10 22:57:21 -07:00
Dave Dalcino
703f2d2fe3 rework logic for readability 2022-08-20 09:09:23 -07:00
Dave Dalcino
0a8dd41dfa Fix formatting of version in paths 2022-08-20 09:04:52 -07:00
Dave Dalcino
ed6cf76968 Add CLI option to install desktop qt automatically
This change also causes aqt to emit a warning when the option is not
turned on and the expected desktop Qt is not found.
2022-08-20 07:53:00 -07:00
Hiroshi Miura
d30618791c Merge pull request #547 from ddalcino/list-qt-desc-modules
Add `aqt list-qt --long-modules`
2022-08-12 22:57:04 +09:00
Dave Dalcino
f407cfe37b Implementation for aqt list-qt --long-modules 2022-08-08 17:49:05 -07:00
Dave Dalcino
9422b9fc67 Make MetadataFactory respect baseurl set in arguments 2022-08-07 11:27:31 -07:00
Mozi
60889b7296 Log: left align the level name with padding (#539)
* Change log format for brief

- prepend %(levelname)s:

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

* Update test expectations for error/warning messages

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

* log: left align the level name with padding

Why 8: sizeof("CRITICAL") == 8

Ref:
  printf-style String Formatting § Built-in Types — Python 3 documentation
  https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting

* log: remove the duplicate "warning" words

Co-authored-by: Hiroshi Miura <miurahr@linux.com>
2022-07-18 22:29:16 +09:00
David Dalcino
dc45839df4 Fix implementation of helper.get_hash
Causes `get_hash` to verify the hash length, and check that the hash can
be unhexlified properly.

Fixes the interface for `get_hash` so that the caller does not have to
run `binascii.unhexlify` or verify its output.
2022-03-20 14:16:24 -07:00
David Dalcino
96af3eb393 Refactor: split QtArchive.archive_url into parts
This splits QtArchive.archive_url into two new datamembers: archive_path
and base_url. Ultimately, base_url should be removed from QtPackage
entirely.
2022-03-06 17:36:32 -08:00
David Dalcino
7ebd6aa34e Use sha256 hashes only from trusted mirrors
To keep this commit small, `hashurl` was removed from QtPackage, and
`get_hash` constructs the hash url based on the url of the 7z archive
to download. I think that in the future, QtArchive and QtPackage could
be refactored to construct this url more appropriately. However, this
would be a complicated change that doesn't belong in this commit.
2022-03-06 17:36:32 -08:00
Hiroshi Miura
cb7eaeeb2a Update 64bit python detection
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2022-02-11 11:00:27 +09:00
David Dalcino
8a289e922c Merge remote-tracking branch 'upstream/master' into fix-archives-flag 2021-12-13 18:17:17 -08:00
Hiroshi Miura
f86f6aa321 Explicit triggering garbage collection
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-12-07 20:32:09 +09:00
Hiroshi Miura
38cf9cbcef Limit maxtasksperchild=1 for pool on 32bit python
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-12-07 20:11:16 +09:00
Hiroshi Miura
9833124237 Set maxtasksperchild=1 for download and extraction pool
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-12-07 17:08:34 +09:00
David Dalcino
633cbacc62 Update docs and help text for --archives 2021-12-05 11:53:42 -08:00
David Dalcino
05cc2347c7 Merge branch 'master' into topic-fix-453 2021-11-24 22:01:27 -08:00
David Dalcino
7d5ee32ac3 Add settings entries for --keep & --archive-dest
This allows a user to turn on `--keep` every time they run the program,
and to set the default archive destination when `--keep` is turned on.
Using `--archive-dest` overrides the archive destination in setting.ini.
2021-11-24 14:01:26 -08:00
David Dalcino
db4db6c9a4 Implement --archive-dest feature 2021-11-24 13:30:48 -08:00
David Dalcino
3af9c97ba0 Refactor: Allow modifiable download dest path
This adds the parameter `archive_dest` to `run_installer`, which will
control where `helper.downloadBinaryFile` will download files, and sets
it to "." by default.

For convenience/readability, this will also turn any reference to the
downloaded file into a `pathlib.Path` object. This makes it easier to
ensure that the file ends up in the right location.
2021-11-24 13:29:20 -08:00
David Dalcino
678387ccad Fix help text for list-see 2021-11-23 15:17:36 -08:00
David Dalcino
d9733363bc remove --modules flag from install-src 2021-11-23 11:10:14 -08:00
David Dalcino
6d1ff77cd4 Change target param for install-src/doc/example
This changes the CLI so that the `target` parameter for `install-src`,
`install-doc`, and `install-example` is now ignored, and "desktop" is
substituted for anything the user inputs. The only valid option here
is "desktop" anyway, so the user should be forgiven for trying to input
anything else.

It may be better to remove `target` from the parameter list, but that's
a big change to the interface that could break a lot of dependent code.
2021-11-23 11:10:10 -08:00
David Dalcino
e6cd276e20 Add impl of list-src/doc/examples 2021-11-23 11:08:11 -08:00
David Dalcino
621cd7a6c0 Fix implementation of aqt tool
This modifies `aqt tool` to allow `-` characters in tool versions, so
that `aqt tool` can pass the same unit tests that `install-tool` can.
This makes it less like the `aqt tool` from v1.2.5, but it should work
better with more tools with different version formats.
2021-10-30 19:23:35 -07:00
David Dalcino
ea55f2c8a7 fix broken install-tool (#442) 2021-10-30 16:23:33 -07:00
David Dalcino
173fbb9b6b Add suggestion on MemoryError to use external 7z 2021-10-29 11:08:15 -07:00
David Dalcino
bc1205945c Move _set_arch call before _determine_version 2021-10-28 15:42:43 -07:00
David Dalcino
4ab854291b Allow Cli._set_arch to receive SimpleSpec 2021-10-28 15:42:10 -07:00
David Dalcino
46fc2aaf9f Cause --noarchives to omit the base Qt module 2021-10-20 19:32:36 -07:00
David Dalcino
d5213142a8 Fix misuse of disable_socket (#415)
In an earlier PR, I added calls to `disable_socket()` from
`pytest_socket` where I thought they were needed to prevent some tests
from accessing the network, in case they weren't monkeypatched properly.
Today, I discovered that `disable_socket()` disables sockets globally
for all tests, which means that the tests that use remote data cannot
run if they are executed after another test calls `disable_socket()`.

This change calls `disable_socket()` once from `conftest.py`, so that
no tests are allowed to use network data unless they are marked as ok
to use the network, with `@pytest.mark.enable_socket`. See example of
usage in `tests/test_connection.py`.

Changed return code for unexpected exceptions:

This allows us to write tests that can discover whether an unexpected
exception occurred just by checking the return code, rather than reading
stderr. This will allow us to write less friable tests that don't break
every time some insignificant output details change.

This change catches exceptions derived from Exception and
KeyboardInterrupt raised by `installer`, while run by multiple
processes, and propagates them back to earlier stack entries. This will
prevent any OSError and BrokenPipe exceptions that would otherwise be
raised when one process has an exception while the other processes are
still running.

This also handles the MemoryError exception we saw in #416, and offers
some suggestions for solving the issue.
2021-10-05 14:40:05 +09:00
David Dalcino
4b99ee5755 Allow retry of download on checksum error 2021-10-03 16:13:35 -07:00
Hiroshi Miura
4eed29fdf1 Merge pull request #419 from ddalcino/allow-multiprocessing-error-propagation
Propagate exceptions from `run_installer()`
2021-10-03 01:06:44 -07:00
David Dalcino
23f2c89fe4 flake8 2021-10-02 18:37:59 -07:00