mirror of
https://github.com/miurahr/aqtinstall.git
synced 2025-12-17 20:54:38 +03:00
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>
This commit is contained in:
@@ -16,6 +16,8 @@ recursive-include docs *.svg
|
||||
recursive-include docs *.html
|
||||
recursive-include docs *.txt
|
||||
recursive-include docs Makefile
|
||||
recursive-include tests *.html
|
||||
recursive-include tests *.ini
|
||||
recursive-include tests *.json
|
||||
recursive-include tests *.py
|
||||
recursive-include tests *.xml
|
||||
|
||||
386
aqt/archives.py
386
aqt/archives.py
@@ -19,15 +19,26 @@
|
||||
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
import itertools
|
||||
import posixpath
|
||||
import random
|
||||
import re
|
||||
import xml.etree.ElementTree as ElementTree
|
||||
from logging import getLogger
|
||||
from typing import Callable, Generator, Iterable, Iterator, List, Optional, Tuple, Union
|
||||
|
||||
import bs4
|
||||
from semantic_version import SimpleSpec, Version
|
||||
|
||||
from aqt.exceptions import ArchiveListError, NoPackageFound
|
||||
from aqt.helper import Settings, getUrl
|
||||
from aqt import helper
|
||||
from aqt.exceptions import (
|
||||
ArchiveConnectionError,
|
||||
ArchiveDownloadError,
|
||||
ArchiveListError,
|
||||
CliInputError,
|
||||
NoPackageFound,
|
||||
)
|
||||
from aqt.helper import ArchiveId, Settings, getUrl, xml_to_modules
|
||||
|
||||
|
||||
class TargetConfig:
|
||||
@@ -38,6 +49,371 @@ class TargetConfig:
|
||||
self.os_name = os_name
|
||||
|
||||
|
||||
class ListCommand:
|
||||
"""Encapsulate all parts of the `aqt list` command"""
|
||||
|
||||
# Inner helper classes
|
||||
class Versions:
|
||||
def __init__(
|
||||
self,
|
||||
versions: Union[None, Version, Iterable[Tuple[int, Iterable[Version]]]],
|
||||
):
|
||||
if versions is None:
|
||||
self.versions = list()
|
||||
elif isinstance(versions, Version):
|
||||
self.versions = [[versions]]
|
||||
else:
|
||||
self.versions: List[List[Version]] = [
|
||||
list(versions_iterator) for _, versions_iterator in versions
|
||||
]
|
||||
|
||||
def __str__(self) -> str:
|
||||
return str(self.versions)
|
||||
|
||||
def pretty_print(self) -> str:
|
||||
return "\n".join(
|
||||
" ".join(
|
||||
ListCommand.Versions.stringify_ver(version)
|
||||
for version in minor_list
|
||||
)
|
||||
for minor_list in self.versions
|
||||
)
|
||||
|
||||
def __bool__(self):
|
||||
return len(self.versions) > 0 and len(self.versions[0]) > 0
|
||||
|
||||
def latest(self) -> Optional[Version]:
|
||||
if not self:
|
||||
return None
|
||||
return self.versions[-1][-1]
|
||||
|
||||
@staticmethod
|
||||
def stringify_ver(version: Version) -> str:
|
||||
if version.prerelease:
|
||||
return "{}.{}-preview".format(version.major, version.minor)
|
||||
return str(version)
|
||||
|
||||
class ListOfStr:
|
||||
def __init__(self, strings: List[str]):
|
||||
self.strings = strings
|
||||
|
||||
def __str__(self):
|
||||
return str(self.strings)
|
||||
|
||||
def pretty_print(self) -> str:
|
||||
return " ".join(self.strings)
|
||||
|
||||
def __bool__(self):
|
||||
return len(self.strings) > 0 and len(self.strings[0]) > 0
|
||||
|
||||
class Tools(ListOfStr):
|
||||
def pretty_print(self) -> str:
|
||||
return "\n".join(self.strings)
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
archive_id: ArchiveId,
|
||||
*,
|
||||
filter_minor: Optional[int] = None,
|
||||
is_latest_version: bool = False,
|
||||
modules_ver: Optional[str] = None,
|
||||
extensions_ver: Optional[str] = None,
|
||||
architectures_ver: Optional[str] = None,
|
||||
tool_name: Optional[str] = None,
|
||||
):
|
||||
"""
|
||||
Construct ListCommand.
|
||||
|
||||
:param filter_minor: When set, the ListCommand will filter out all versions of
|
||||
Qt that don't match this minor version.
|
||||
:param is_latest_version: When True, the ListCommand will find all versions of Qt
|
||||
matching filters, and only print the most recent version
|
||||
:param modules_ver: Version of Qt 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
|
||||
"""
|
||||
self.logger = getLogger("aqt.archives")
|
||||
self.archive_id = archive_id
|
||||
self.filter_minor = filter_minor
|
||||
|
||||
if archive_id.is_tools():
|
||||
if tool_name:
|
||||
self.request_type = "tool variant names"
|
||||
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: ListCommand.Versions(self.fetch_latest_version())
|
||||
elif modules_ver:
|
||||
self.request_type = "modules"
|
||||
self._action = lambda: self.fetch_modules(self._to_version(modules_ver))
|
||||
elif extensions_ver:
|
||||
self.request_type = "extensions"
|
||||
self._action = lambda: self.fetch_extensions(
|
||||
self._to_version(extensions_ver)
|
||||
)
|
||||
elif architectures_ver:
|
||||
self.request_type = "architectures"
|
||||
self._action = lambda: self.fetch_arches(
|
||||
self._to_version(architectures_ver)
|
||||
)
|
||||
else:
|
||||
self.request_type = "versions"
|
||||
self._action = self.fetch_versions
|
||||
|
||||
def action(self) -> Union[ListOfStr, Tools, Versions]:
|
||||
return self._action()
|
||||
|
||||
def run(self) -> int:
|
||||
try:
|
||||
output = self.action()
|
||||
if not output:
|
||||
self.logger.info(
|
||||
"No {} available for this request.".format(self.request_type)
|
||||
)
|
||||
self.print_suggested_follow_up(self.logger.info)
|
||||
return 1
|
||||
print(output.pretty_print())
|
||||
return 0
|
||||
except CliInputError as e:
|
||||
self.logger.error("Command line input error: {}".format(e))
|
||||
exit(1)
|
||||
except (ArchiveConnectionError, ArchiveDownloadError) as e:
|
||||
self.logger.error("{}".format(e))
|
||||
self.print_suggested_follow_up(self.logger.error)
|
||||
return 1
|
||||
|
||||
def fetch_modules(self, version: Version) -> ListOfStr:
|
||||
return self.get_modules_architectures_for_version(version=version)[0]
|
||||
|
||||
def fetch_arches(self, version: Version) -> ListOfStr:
|
||||
return self.get_modules_architectures_for_version(version=version)[1]
|
||||
|
||||
def fetch_extensions(self, version: Version) -> ListOfStr:
|
||||
versions_extensions = ListCommand.get_versions_extensions(
|
||||
self.fetch_http(self.archive_id.to_url()), self.archive_id.category
|
||||
)
|
||||
filtered = filter(
|
||||
lambda ver_ext: ver_ext[0] == version and ver_ext[1],
|
||||
versions_extensions,
|
||||
)
|
||||
return ListCommand.ListOfStr(
|
||||
strings=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.filter_minor is None or self.filter_minor == version.minor)
|
||||
and (self.archive_id.extension == extension)
|
||||
)
|
||||
|
||||
def get_version(ver_ext: Tuple[Version, str]):
|
||||
return ver_ext[0]
|
||||
|
||||
versions_extensions = ListCommand.get_versions_extensions(
|
||||
self.fetch_http(self.archive_id.to_url()), 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 ListCommand.Versions(iterables)
|
||||
|
||||
def fetch_latest_version(self) -> Optional[Version]:
|
||||
return self.fetch_versions().latest()
|
||||
|
||||
def fetch_tools(self) -> Tools:
|
||||
html_doc = self.fetch_http(self.archive_id.to_url())
|
||||
return ListCommand.Tools(list(ListCommand.iterate_folders(html_doc, "tools")))
|
||||
|
||||
def fetch_tool_modules(self, tool_name: str) -> ListOfStr:
|
||||
rest_of_url = self.archive_id.to_url() + tool_name + "/Updates.xml"
|
||||
xml = self.fetch_http(rest_of_url) # raises RequestException
|
||||
modules = xml_to_modules(
|
||||
xml,
|
||||
predicate=ListCommand._has_nonempty_downloads,
|
||||
keys_to_keep=(), # Just want names
|
||||
)
|
||||
return ListCommand.ListOfStr(strings=list(modules.keys()))
|
||||
|
||||
def _to_version(self, qt_ver: 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.
|
||||
If qt_ver == latest, and no versions exist corresponding to the filters specified,
|
||||
then CliInputError will be raised.
|
||||
If qt_ver == latest, and an HTTP error occurs, requests.RequestException will be raised.
|
||||
|
||||
:param qt_ver: Either the literal string `latest`, or a semantic version
|
||||
with each part separated with dots.
|
||||
"""
|
||||
assert qt_ver
|
||||
if qt_ver == "latest":
|
||||
latest_version = self.fetch_latest_version()
|
||||
if not latest_version:
|
||||
msg = "There is no latest version of Qt with the criteria '{}'".format(
|
||||
self.describe_filters()
|
||||
)
|
||||
raise CliInputError(msg)
|
||||
return latest_version
|
||||
version = helper.to_version(qt_ver)
|
||||
if self.archive_id.is_major_ver_mismatch(version):
|
||||
msg = "Major version mismatch between {} and {}".format(
|
||||
self.archive_id.category, version
|
||||
)
|
||||
raise CliInputError(msg)
|
||||
return version
|
||||
|
||||
@staticmethod
|
||||
def fetch_http(rest_of_url: str) -> str:
|
||||
base_urls = Settings.baseurl, random.choice(Settings.fallbacks)
|
||||
for i, base_url in enumerate(base_urls):
|
||||
try:
|
||||
url = posixpath.join(base_url, rest_of_url)
|
||||
return getUrl(
|
||||
url=url,
|
||||
timeout=(Settings.connection_timeout, Settings.response_timeout),
|
||||
)
|
||||
|
||||
except (ArchiveDownloadError, ArchiveConnectionError) as e:
|
||||
if i == len(base_urls) - 1:
|
||||
raise e
|
||||
|
||||
@staticmethod
|
||||
def iterate_folders(
|
||||
html_doc: str, filter_category: str = ""
|
||||
) -> Generator[str, None, None]:
|
||||
def table_row_to_folder(tr: bs4.element.Tag) -> str:
|
||||
try:
|
||||
return tr.find_all("td")[1].a.contents[0].rstrip("/")
|
||||
except (AttributeError, IndexError):
|
||||
return ""
|
||||
|
||||
soup: bs4.BeautifulSoup = bs4.BeautifulSoup(html_doc, "html.parser")
|
||||
for row in soup.body.table.find_all("tr"):
|
||||
content: str = table_row_to_folder(row)
|
||||
if not content or content == "Parent Directory":
|
||||
continue
|
||||
if content.startswith(filter_category):
|
||||
yield content
|
||||
|
||||
@staticmethod
|
||||
def get_versions_extensions(
|
||||
html_doc: str, category: str
|
||||
) -> Iterator[Tuple[Optional[Version], str]]:
|
||||
def folder_to_version_extension(folder: str) -> Tuple[Optional[Version], str]:
|
||||
components = folder.split("_", maxsplit=2)
|
||||
ext = "" if len(components) < 3 else components[2]
|
||||
ver = "" if len(components) < 2 else components[1]
|
||||
return (
|
||||
helper.get_semantic_version(qt_ver=ver, is_preview="preview" in ext),
|
||||
ext,
|
||||
)
|
||||
|
||||
return map(
|
||||
folder_to_version_extension, ListCommand.iterate_folders(html_doc, category)
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def _has_nonempty_downloads(element: ElementTree.Element) -> bool:
|
||||
"""Returns True if the element has an empty '<DownloadableArchives/>' tag"""
|
||||
downloads = element.find("DownloadableArchives")
|
||||
return downloads is not None and downloads.text
|
||||
|
||||
def get_modules_architectures_for_version(
|
||||
self, version: Version
|
||||
) -> Tuple[ListOfStr, ListOfStr]:
|
||||
"""Returns [list of modules, list of architectures]"""
|
||||
patch = (
|
||||
""
|
||||
if version.prerelease or self.archive_id.is_preview()
|
||||
else str(version.patch)
|
||||
)
|
||||
qt_ver_str = "{}{}{}".format(version.major, version.minor, patch)
|
||||
# Example: re.compile(r"^(preview\.)?qt\.(qt5\.)?590\.(.+)$")
|
||||
pattern = re.compile(
|
||||
r"^(preview\.)?qt\.(qt"
|
||||
+ str(version.major)
|
||||
+ r"\.)?"
|
||||
+ qt_ver_str
|
||||
+ r"\.(.+)$"
|
||||
)
|
||||
|
||||
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:
|
||||
return module_with_arch, None
|
||||
module, arch = module_with_arch.rsplit(".", 1)
|
||||
return module, arch
|
||||
|
||||
rest_of_url = self.archive_id.to_url(
|
||||
qt_version_no_dots=qt_ver_str, file="Updates.xml"
|
||||
)
|
||||
xml = self.fetch_http(rest_of_url) # raises RequestException
|
||||
|
||||
# We want the names of modules, regardless of architecture:
|
||||
modules = xml_to_modules(
|
||||
xml,
|
||||
predicate=ListCommand._has_nonempty_downloads,
|
||||
keys_to_keep=(), # Just want names
|
||||
)
|
||||
|
||||
def naive_modules_arches(
|
||||
names: Iterable[str],
|
||||
) -> Tuple[ListCommand.ListOfStr, ListCommand.ListOfStr]:
|
||||
modules_and_arches, _modules, arches = set(), set(), set()
|
||||
for name in names:
|
||||
# First term could be a module name or an architecture
|
||||
first_term, arch = to_module_arch(name)
|
||||
if first_term:
|
||||
modules_and_arches.add(first_term)
|
||||
if arch:
|
||||
arches.add(arch)
|
||||
for first_term in modules_and_arches:
|
||||
if first_term not in arches:
|
||||
_modules.add(first_term)
|
||||
return (
|
||||
ListCommand.ListOfStr(strings=sorted(_modules)),
|
||||
ListCommand.ListOfStr(strings=sorted(arches)),
|
||||
)
|
||||
|
||||
return naive_modules_arches(modules.keys())
|
||||
|
||||
def describe_filters(self) -> str:
|
||||
if self.filter_minor is None:
|
||||
return str(self.archive_id)
|
||||
return "{} with minor version {}".format(self.archive_id, self.filter_minor)
|
||||
|
||||
def print_suggested_follow_up(self, printer: Callable[[str], None]) -> None:
|
||||
"""Makes an informed guess at what the user got wrong, in the event of an error."""
|
||||
base_cmd = "aqt {0.category} {0.host} {0.target}".format(self.archive_id)
|
||||
if self.archive_id.extension:
|
||||
msg = "Please use '{} --extensions <QT_VERSION>' to list valid extensions.".format(
|
||||
base_cmd
|
||||
)
|
||||
printer(msg)
|
||||
|
||||
if self.archive_id.is_tools() and self.request_type == "tool variant names":
|
||||
msg = "Please use '{}' to check what tools are available.".format(base_cmd)
|
||||
printer(msg)
|
||||
elif self.filter_minor is not None:
|
||||
msg = "Please use '{}' to check that versions of {} exist with the minor version '{}'".format(
|
||||
base_cmd, self.archive_id.category, self.filter_minor
|
||||
)
|
||||
printer(msg)
|
||||
elif self.request_type in ("architectures", "modules", "extensions"):
|
||||
msg = "Please use '{}' to show versions of Qt available".format(base_cmd)
|
||||
printer(msg)
|
||||
|
||||
|
||||
class QtPackage:
|
||||
"""
|
||||
Hold package information.
|
||||
@@ -97,7 +473,7 @@ class PackagesList:
|
||||
ext,
|
||||
)
|
||||
update_xml_url = posixpath.join(self.base, archive_path, "Updates.xml")
|
||||
xml_text = getUrl(update_xml_url, self.timeout, self.logger)
|
||||
xml_text = getUrl(update_xml_url, self.timeout)
|
||||
self.update_xml = ElementTree.fromstring(xml_text)
|
||||
for packageupdate in self.update_xml.iter("PackageUpdate"):
|
||||
name = packageupdate.find("Name").text
|
||||
@@ -215,7 +591,7 @@ class QtArchives:
|
||||
|
||||
def _download_update_xml(self, update_xml_url):
|
||||
"""Hook for unit test."""
|
||||
self.update_xml_text = getUrl(update_xml_url, self.timeout, self.logger)
|
||||
self.update_xml_text = getUrl(update_xml_url, self.timeout)
|
||||
|
||||
def _parse_update_xml(self, archive_url, target_packages):
|
||||
try:
|
||||
|
||||
@@ -34,3 +34,7 @@ class ArchiveListError(Exception):
|
||||
|
||||
class NoPackageFound(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class CliInputError(Exception):
|
||||
pass
|
||||
|
||||
174
aqt/helper.py
174
aqt/helper.py
@@ -22,19 +22,94 @@
|
||||
import configparser
|
||||
import hashlib
|
||||
import json
|
||||
import logging
|
||||
import logging.config
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
import xml.etree.ElementTree as ElementTree
|
||||
from logging import getLogger
|
||||
from logging.handlers import QueueListener
|
||||
from typing import List
|
||||
from typing import Callable, Dict, Iterable, List, Optional
|
||||
from urllib.parse import urlparse
|
||||
|
||||
import requests
|
||||
import requests.adapters
|
||||
from semantic_version import Version
|
||||
|
||||
from aqt.exceptions import ArchiveConnectionError, ArchiveDownloadError
|
||||
from aqt.exceptions import ArchiveConnectionError, ArchiveDownloadError, CliInputError
|
||||
|
||||
|
||||
class ArchiveId:
|
||||
CATEGORIES = ("tools", "qt5", "qt6")
|
||||
HOSTS = ("windows", "mac", "linux")
|
||||
TARGETS_FOR_HOST = {
|
||||
"windows": ["android", "desktop", "winrt"],
|
||||
"mac": ["android", "desktop", "ios"],
|
||||
"linux": ["android", "desktop"],
|
||||
}
|
||||
ALL_EXTENSIONS = (
|
||||
"wasm",
|
||||
"src_doc_examples",
|
||||
"preview",
|
||||
"wasm_preview",
|
||||
"x86_64",
|
||||
"x86",
|
||||
"armv7",
|
||||
"arm64_v8a",
|
||||
)
|
||||
|
||||
def __init__(self, category: str, host: str, target: str, extension: 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
|
||||
|
||||
def is_qt(self) -> bool:
|
||||
return self.category.startswith("qt")
|
||||
|
||||
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 is_major_ver_mismatch(self, qt_version: Version) -> bool:
|
||||
"""Returns True if the version specifies a version different from the specified category"""
|
||||
return self.is_qt() and int(self.category[-1]) != qt_version.major
|
||||
|
||||
def to_url(self, qt_version_no_dots: Optional[str] = None, file: str = "") -> str:
|
||||
base = "online/qtsdkrepository/{os}{arch}/{target}/".format(
|
||||
os=self.host,
|
||||
arch="_x86" if self.host == "windows" else "_x64",
|
||||
target=self.target,
|
||||
)
|
||||
if not qt_version_no_dots:
|
||||
return base
|
||||
folder = "{category}_{ver}{ext}/".format(
|
||||
category=self.category,
|
||||
ver=qt_version_no_dots,
|
||||
ext="_" + self.extension if self.extension else "",
|
||||
)
|
||||
return base + folder + file
|
||||
|
||||
def __str__(self) -> str:
|
||||
return "{cat}/{host}/{target}{ext}".format(
|
||||
cat=self.category,
|
||||
host=self.host,
|
||||
target=self.target,
|
||||
ext="" if not self.extension else "/" + self.extension,
|
||||
)
|
||||
|
||||
|
||||
def _get_meta(url: str):
|
||||
@@ -46,7 +121,8 @@ def _check_content_type(ct: str) -> bool:
|
||||
return any(ct.startswith(t) for t in candidate)
|
||||
|
||||
|
||||
def getUrl(url: str, timeout, logger) -> str:
|
||||
def getUrl(url: str, timeout) -> str:
|
||||
logger = getLogger("aqt.helper")
|
||||
with requests.Session() as session:
|
||||
adapter = requests.adapters.HTTPAdapter()
|
||||
session.mount("http://", adapter)
|
||||
@@ -69,7 +145,7 @@ def getUrl(url: str, timeout, logger) -> str:
|
||||
requests.exceptions.ConnectionError,
|
||||
requests.exceptions.Timeout,
|
||||
):
|
||||
raise ArchiveConnectionError()
|
||||
raise ArchiveConnectionError("Failure to connect to {}".format(url))
|
||||
else:
|
||||
if r.status_code != 200:
|
||||
logger.error(
|
||||
@@ -78,12 +154,13 @@ def getUrl(url: str, timeout, logger) -> str:
|
||||
url, r.status_code, r.reason
|
||||
)
|
||||
)
|
||||
raise ArchiveDownloadError("Download error!")
|
||||
raise ArchiveDownloadError("Failure to retrieve {}".format(url))
|
||||
result = r.text
|
||||
return result
|
||||
|
||||
|
||||
def downloadBinaryFile(url: str, out: str, hash_algo: str, exp: str, timeout, logger):
|
||||
def downloadBinaryFile(url: str, out: str, hash_algo: str, exp: str, timeout):
|
||||
logger = getLogger("aqt.helper")
|
||||
with requests.Session() as session:
|
||||
adapter = requests.adapters.HTTPAdapter()
|
||||
session.mount("http://", adapter)
|
||||
@@ -130,7 +207,7 @@ def altlink(url: str, alt: 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."""
|
||||
logger = logging.getLogger("aqt.helper")
|
||||
logger = getLogger("aqt.helper")
|
||||
if not any(alt.startswith(b) for b in Settings.blacklist):
|
||||
return alt
|
||||
try:
|
||||
@@ -202,11 +279,88 @@ class MyQueueListener(QueueListener):
|
||||
Override logger name then handle at proper logger.
|
||||
"""
|
||||
record = self.prepare(record)
|
||||
logger = logging.getLogger("aqt.installer")
|
||||
logger = getLogger("aqt.installer")
|
||||
record.name = "aqt.installer"
|
||||
logger.handle(record)
|
||||
|
||||
|
||||
def to_version(qt_ver: str) -> Version:
|
||||
"""Converts a Qt version string with dots (5.X.Y, etc) into a semantic version.
|
||||
If the version ends in `-preview`, the version is treated as a preview release.
|
||||
If the patch value is missing, patch is assumed to be zero.
|
||||
If the version cannot be converted to a Version, a CliInputError is raised.
|
||||
"""
|
||||
match = re.match(r"^(\d+)\.(\d+)(\.(\d+)|-preview)$", qt_ver)
|
||||
if not match:
|
||||
raise CliInputError(
|
||||
"Invalid version: '{}'! Please use the form '5.X.Y'.".format(qt_ver)
|
||||
)
|
||||
major, minor, end, patch = match.groups()
|
||||
is_preview = end == "-preview"
|
||||
return Version(
|
||||
major=int(major),
|
||||
minor=int(minor),
|
||||
patch=int(patch) if patch else 0,
|
||||
prerelease=("preview",) if is_preview else None,
|
||||
)
|
||||
|
||||
|
||||
def get_semantic_version(qt_ver: str, is_preview: bool) -> Optional[Version]:
|
||||
"""Converts a Qt version string (596, 512, 5132, etc) into a semantic version.
|
||||
This makes a lot of assumptions based on established patterns:
|
||||
If is_preview is True, the number is interpreted as ver[0].ver[1:], with no patch.
|
||||
If the version is 3 digits, then major, minor, and patch each get 1 digit.
|
||||
If the version is 4 or more digits, then major gets 1 digit, minor gets 2 digits
|
||||
and patch gets all the rest.
|
||||
As of May 2021, the version strings at https://download.qt.io/online/qtsdkrepository
|
||||
conform to this pattern; they are not guaranteed to do so in the future.
|
||||
"""
|
||||
if not qt_ver or any(not ch.isdigit() for ch in qt_ver):
|
||||
return None
|
||||
if is_preview:
|
||||
return Version(
|
||||
major=int(qt_ver[:1]),
|
||||
minor=int(qt_ver[1:]),
|
||||
patch=0,
|
||||
prerelease=("preview",),
|
||||
)
|
||||
elif len(qt_ver) >= 4:
|
||||
return Version(
|
||||
major=int(qt_ver[:1]), minor=int(qt_ver[1:3]), patch=int(qt_ver[3:])
|
||||
)
|
||||
elif len(qt_ver) == 3:
|
||||
return Version(
|
||||
major=int(qt_ver[:1]), minor=int(qt_ver[1:2]), patch=int(qt_ver[2:])
|
||||
)
|
||||
elif len(qt_ver) == 2:
|
||||
return Version(major=int(qt_ver[:1]), minor=int(qt_ver[1:2]), patch=0)
|
||||
raise ValueError("Invalid version string '{}'".format(qt_ver))
|
||||
|
||||
|
||||
def xml_to_modules(
|
||||
xml_text: str,
|
||||
predicate: Callable[[ElementTree.Element], bool],
|
||||
keys_to_keep: Iterable[str],
|
||||
) -> Dict[str, Dict[str, str]]:
|
||||
"""Converts an XML document to a dict of `PackageUpdate` dicts, indexed by `Name` attribute.
|
||||
Only report elements that satisfy `predicate(element)`.
|
||||
Only report keys in the list `keys_to_keep`.
|
||||
"""
|
||||
try:
|
||||
parsed_xml = ElementTree.fromstring(xml_text)
|
||||
except ElementTree.ParseError:
|
||||
return {}
|
||||
packages = {}
|
||||
for packageupdate in parsed_xml.iter("PackageUpdate"):
|
||||
if predicate and not predicate(packageupdate):
|
||||
continue
|
||||
name = packageupdate.find("Name").text
|
||||
packages[name] = {}
|
||||
for key in keys_to_keep:
|
||||
packages[name][key] = getattr(packageupdate.find(key), "text", None)
|
||||
return packages
|
||||
|
||||
|
||||
class Settings:
|
||||
"""Class to hold configuration and settings.
|
||||
Actual values are stored in 'settings.ini' file.
|
||||
|
||||
155
aqt/installer.py
155
aqt/installer.py
@@ -33,10 +33,9 @@ from logging import getLogger
|
||||
from logging.handlers import QueueHandler
|
||||
|
||||
from semantic_version import Version
|
||||
from texttable import Texttable
|
||||
|
||||
import aqt
|
||||
from aqt.archives import PackagesList, QtArchives, SrcDocExamplesArchives, ToolArchives
|
||||
from aqt.archives import ListCommand, QtArchives, SrcDocExamplesArchives, ToolArchives
|
||||
from aqt.exceptions import (
|
||||
ArchiveConnectionError,
|
||||
ArchiveDownloadError,
|
||||
@@ -44,6 +43,7 @@ from aqt.exceptions import (
|
||||
NoPackageFound,
|
||||
)
|
||||
from aqt.helper import (
|
||||
ArchiveId,
|
||||
MyQueueListener,
|
||||
Settings,
|
||||
downloadBinaryFile,
|
||||
@@ -464,30 +464,121 @@ class Cli:
|
||||
)
|
||||
)
|
||||
|
||||
def run_list(self, args):
|
||||
"""Run list subcommand"""
|
||||
self.show_aqt_version()
|
||||
qt_version = args.qt_version
|
||||
self._validate_version_str(qt_version)
|
||||
host = args.host
|
||||
target = args.target
|
||||
try:
|
||||
pl = PackagesList(qt_version, host, target, Settings.baseurl)
|
||||
except (ArchiveConnectionError, ArchiveDownloadError):
|
||||
pl = PackagesList(
|
||||
qt_version, host, target, random.choice(Settings.fallbacks)
|
||||
def run_list(self, args: argparse.ArgumentParser) -> int:
|
||||
"""Print tools, versions of Qt, extensions, modules, architectures"""
|
||||
|
||||
if not args.target:
|
||||
print(" ".join(ArchiveId.TARGETS_FOR_HOST[args.host]))
|
||||
return 0
|
||||
if args.target not in ArchiveId.TARGETS_FOR_HOST[args.host]:
|
||||
self.logger.error(
|
||||
"'{0.target}' is not a valid target for host '{0.host}'".format(args)
|
||||
)
|
||||
print("List Qt packages in %s for %s" % (args.qt_version, args.host))
|
||||
table = Texttable()
|
||||
table.set_deco(Texttable.HEADER)
|
||||
table.set_cols_dtype(["t", "t", "t"])
|
||||
table.set_cols_align(["l", "l", "l"])
|
||||
table.header(["target", "arch", "description"])
|
||||
for entry in pl.get_list():
|
||||
if qt_version[0:1] == "6" or not entry.virtual:
|
||||
archid = entry.name.split(".")[-1]
|
||||
table.add_row([entry.display_name, archid, entry.desc])
|
||||
print(table.draw())
|
||||
return 1
|
||||
command = ListCommand(
|
||||
archive_id=ArchiveId(
|
||||
args.category,
|
||||
args.host,
|
||||
args.target,
|
||||
args.extension if args.extension else "",
|
||||
),
|
||||
filter_minor=args.filter_minor,
|
||||
is_latest_version=args.latest_version,
|
||||
modules_ver=args.modules,
|
||||
extensions_ver=args.extensions,
|
||||
architectures_ver=args.arch,
|
||||
tool_name=args.tool,
|
||||
)
|
||||
return command.run()
|
||||
|
||||
def _make_list_parser(self, subparsers: argparse._SubParsersAction):
|
||||
"""Creates a subparser that works with the ListCommand, and adds it to the `subparsers` parameter"""
|
||||
list_parser: argparse.ArgumentParser = subparsers.add_parser(
|
||||
"list",
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
epilog="Examples:\n"
|
||||
"$ aqt list qt5 mac # print all targets for Mac OS\n"
|
||||
"$ aqt list tools mac desktop # print all tools for mac desktop\n"
|
||||
"$ aqt list tools mac desktop --tool tools_ifw # print all tool variant names for QtIFW\n"
|
||||
"$ aqt list qt5 mac desktop # print all versions of Qt 5\n"
|
||||
"$ aqt list qt5 mac desktop --extension wasm # print all wasm versions of Qt 5\n"
|
||||
"$ aqt list qt5 mac desktop --filter-minor 9 # print all versions of Qt 5.9\n"
|
||||
"$ aqt list qt5 mac desktop --filter-minor 9 --latest-version # print latest Qt 5.9\n"
|
||||
"$ aqt list qt5 mac desktop --modules 5.12.0 # print modules for 5.12.0\n"
|
||||
"$ aqt list qt5 mac desktop --filter-minor 9 --modules latest # print modules for latest 5.9\n"
|
||||
"$ aqt list qt5 mac desktop --extensions 5.9.0 # print choices for --extension flag\n"
|
||||
"$ aqt list qt5 mac desktop --arch 5.9.9 "
|
||||
"# print architectures for 5.9.9/mac/desktop\n"
|
||||
"$ aqt list qt5 mac desktop --arch latest "
|
||||
"# print architectures for the latest Qt 5\n",
|
||||
)
|
||||
list_parser.add_argument(
|
||||
"category",
|
||||
choices=["tools", "qt5", "qt6"],
|
||||
help="category of packages to list",
|
||||
)
|
||||
list_parser.add_argument(
|
||||
"host", choices=["linux", "mac", "windows"], help="host os name"
|
||||
)
|
||||
list_parser.add_argument(
|
||||
"target",
|
||||
nargs="?",
|
||||
default=None,
|
||||
choices=["desktop", "winrt", "android", "ios"],
|
||||
help="Target SDK. When omitted, this prints all the targets available for a host OS.",
|
||||
)
|
||||
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.",
|
||||
)
|
||||
list_parser.add_argument(
|
||||
"--filter-minor",
|
||||
type=int,
|
||||
metavar="MINOR_VERSION",
|
||||
help="print versions for a particular minor version. "
|
||||
"IE: `aqt list qt5 windows desktop --filter-minor 12` prints all versions beginning with 5.12",
|
||||
)
|
||||
output_modifier_exclusive_group = list_parser.add_mutually_exclusive_group()
|
||||
output_modifier_exclusive_group.add_argument(
|
||||
"--modules",
|
||||
type=str,
|
||||
metavar="(VERSION | latest)",
|
||||
help='Qt version in the format of "5.X.Y", or the keyword "latest". '
|
||||
"When set, this prints all the modules available for either Qt 5.X.Y or the latest version of Qt.",
|
||||
)
|
||||
output_modifier_exclusive_group.add_argument(
|
||||
"--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.",
|
||||
)
|
||||
output_modifier_exclusive_group.add_argument(
|
||||
"--arch",
|
||||
type=str,
|
||||
metavar="(VERSION | latest)",
|
||||
help='Qt version in the format of "5.X.Y", or the keyword "latest". '
|
||||
"When set, this prints all architectures available for either Qt 5.X.Y or the latest version of Qt.",
|
||||
)
|
||||
output_modifier_exclusive_group.add_argument(
|
||||
"--latest-version",
|
||||
action="store_true",
|
||||
help="print only the newest version available",
|
||||
)
|
||||
output_modifier_exclusive_group.add_argument(
|
||||
"--tool",
|
||||
type=str,
|
||||
metavar="TOOL_NAME",
|
||||
help="The name of a tool. Use 'aqt list tools <host> <target>' to see accepted values. "
|
||||
"This flag only works with the 'tools' category, and cannot be combined with any other flags. "
|
||||
"When set, this prints all 'tool variant names' available. "
|
||||
# TODO: find a better word ^^^^^^^^^^^^^^^^^^^^; this is a mysterious help message
|
||||
"The output of this command is intended to be used with `aqt tool`.",
|
||||
)
|
||||
list_parser.set_defaults(func=self.run_list)
|
||||
|
||||
def show_help(self, args=None):
|
||||
"""Display help message"""
|
||||
@@ -641,13 +732,13 @@ class Cli:
|
||||
"version", help='Tool version in the format of "4.1.2"'
|
||||
)
|
||||
tools_parser.add_argument(
|
||||
"arch", help="Name of full tool name such as qt.tools.ifw.31"
|
||||
"arch",
|
||||
help="Name of full tool name such as qt.tools.ifw.31. "
|
||||
"Please use 'aqt list --tool' to list acceptable values for this parameter.",
|
||||
)
|
||||
self._set_common_options(tools_parser)
|
||||
#
|
||||
list_parser = subparsers.add_parser("list")
|
||||
list_parser.set_defaults(func=self.run_list)
|
||||
self._set_common_argument(list_parser)
|
||||
|
||||
self._make_list_parser(subparsers)
|
||||
#
|
||||
help_parser = subparsers.add_parser("help")
|
||||
help_parser.set_defaults(func=self.show_help)
|
||||
@@ -735,8 +826,8 @@ def installer(qt_archive, base_dir, command, queue, keep=False, response_timeout
|
||||
timeout = (Settings.connection_timeout, Settings.response_timeout)
|
||||
else:
|
||||
timeout = (Settings.connection_timeout, response_timeout)
|
||||
hash = binascii.unhexlify(getUrl(hashurl, timeout, logger))
|
||||
downloadBinaryFile(url, archive, "sha1", hash, timeout, logger)
|
||||
hash = binascii.unhexlify(getUrl(hashurl, timeout))
|
||||
downloadBinaryFile(url, archive, "sha1", hash, timeout)
|
||||
if command is None:
|
||||
with py7zr.SevenZipFile(archive, "r") as szf:
|
||||
szf.extractall(path=base_dir)
|
||||
|
||||
@@ -27,6 +27,7 @@ class BuildJob:
|
||||
mirror=None,
|
||||
subarchives=None,
|
||||
output_dir=None,
|
||||
list_options=None,
|
||||
):
|
||||
self.command = command
|
||||
self.qt_version = qt_version
|
||||
@@ -37,6 +38,7 @@ class BuildJob:
|
||||
self.module = module
|
||||
self.mirror = mirror
|
||||
self.subarchives = subarchives
|
||||
self.list_options = list_options if list_options else {}
|
||||
self.output_dir = output_dir
|
||||
|
||||
|
||||
@@ -159,7 +161,17 @@ linux_build_jobs.extend(
|
||||
"doc", "6.1.0", "linux", "desktop", "gcc_64", "gcc_64", subarchives="qtdoc"
|
||||
),
|
||||
# test for list commands
|
||||
BuildJob("list", "6.1.0", "linux", "desktop", "", ""),
|
||||
BuildJob('list', '5.15.2', 'linux', 'desktop', '', '', list_options={
|
||||
'HAS_WASM_EXTENSION': "True",
|
||||
'HAS_EXTENSIONS': "True",
|
||||
}),
|
||||
BuildJob('list', '6.1.0', 'linux', 'android', '', '', list_options={
|
||||
'HAS_EXTENSIONS': "True",
|
||||
'USE_EXTENSION': "armv7",
|
||||
}),
|
||||
# tests run on linux but query data about other platforms
|
||||
BuildJob('list', '5.14.1', 'mac', 'ios', '', '', list_options={}),
|
||||
BuildJob('list', '5.13.1', 'windows', 'winrt', '', '', list_options={}),
|
||||
]
|
||||
)
|
||||
mac_build_jobs.extend(
|
||||
@@ -262,6 +274,9 @@ for platform_build_job in all_platform_build_jobs:
|
||||
("MODULE", build_job.module if build_job.module else ""),
|
||||
("QT_BASE_MIRROR", build_job.mirror if build_job.mirror else ""),
|
||||
("SUBARCHIVES", build_job.subarchives if build_job.subarchives else ""),
|
||||
("HAS_WASM_EXTENSION", build_job.list_options.get("HAS_WASM_EXTENSION", "False")),
|
||||
("HAS_EXTENSIONS", build_job.list_options.get("HAS_EXTENSIONS", "False")),
|
||||
("USE_EXTENSION", build_job.list_options.get("USE_EXTENSION", "None")),
|
||||
("OUTPUT_DIR", build_job.output_dir if build_job.output_dir else ""),
|
||||
(
|
||||
"QT_BINDIR",
|
||||
|
||||
33
ci/steps.yml
33
ci/steps.yml
@@ -65,7 +65,36 @@ steps:
|
||||
fi
|
||||
fi
|
||||
if [[ "$(SUBCOMMAND)" == "list" ]]; then
|
||||
echo implement me.
|
||||
qtversion=$(QT_VERSION)
|
||||
MAJORMINOR=${qtversion%.*}
|
||||
qtmajor="qt${MAJORMINOR%.*}"
|
||||
qtminor=${MAJORMINOR##*.}
|
||||
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 $qtmajor $(HOST) # print all targets for host
|
||||
aqt list tools $(HOST) $(TARGET) # print all tools for host/target
|
||||
aqt list tools $(HOST) $(TARGET) --tool tools_qt3dstudio_runtime_240 # print all tool variant names for qt3dstudio
|
||||
aqt list $qtmajor $(HOST) $(TARGET) # print all versions of Qt
|
||||
if [[ $(HAS_WASM_EXTENSION) == "True" ]]; then
|
||||
aqt list $qtmajor $(HOST) $(TARGET) --extension wasm # print all wasm versions of Qt5
|
||||
else
|
||||
! aqt list $qtmajor $(HOST) $(TARGET) --extension wasm # Only Qt5 desktop provides wasm extension
|
||||
fi
|
||||
aqt list $qtmajor $(HOST) $(TARGET) $ext --filter-minor $qtminor # print all versions of Qt major/minor
|
||||
aqt list $qtmajor $(HOST) $(TARGET) $ext --filter-minor $qtminor --latest-version # print latest Qt major/minor
|
||||
aqt list $qtmajor $(HOST) $(TARGET) $ext --filter-minor $qtminor --modules latest # print modules for latest major/minor
|
||||
aqt list $qtmajor $(HOST) $(TARGET) $ext --modules $(QT_VERSION) # print modules for version/host/target
|
||||
if [[ $(HAS_EXTENSIONS) == "True" ]]; then
|
||||
aqt list $qtmajor $(HOST) $(TARGET) --extensions $(QT_VERSION) # print choices for --extension flag
|
||||
aqt list $qtmajor $(HOST) $(TARGET) --filter-minor $qtminor --extensions latest
|
||||
else
|
||||
! aqt list $qtmajor $(HOST) $(TARGET) --extensions $(QT_VERSION)
|
||||
! aqt list $qtmajor $(HOST) $(TARGET) --filter-minor $qtminor --extensions latest
|
||||
fi
|
||||
aqt list $qtmajor $(HOST) $(TARGET) $ext --arch $(QT_VERSION) # print architectures for version/host/target
|
||||
aqt list $qtmajor $(HOST) $(TARGET) $ext --filter-minor $qtminor --arch latest
|
||||
fi
|
||||
if [[ "$(SUBCOMMAND)" == "src" ]]; then
|
||||
python -m aqt $(SUBCOMMAND) $(QT_VERSION) $(HOST) $(TARGET) --archives $(SUBARCHIVES)
|
||||
@@ -97,7 +126,7 @@ 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')))
|
||||
condition: and(eq(variables['TARGET'], 'android'), or(eq(variables['Agent.OS'], 'Linux'), eq(variables['Agent.OS'], 'Darwin')), ne(variables['SUBCOMMAND'], 'list'))
|
||||
displayName: Build accelbubble example application to test for android
|
||||
|
||||
- script: |
|
||||
|
||||
@@ -14,7 +14,7 @@ Contributors, listed alphabetically, are:
|
||||
* Andrei Yankovich (tools ifw installation)
|
||||
* Aurélien Gâteau (patching to qmake)
|
||||
* Benjamin O (Github Actions and more)
|
||||
* David Dalcino (Improve tests and fix patching to qmake)
|
||||
* David Dalcino (List command, improve tests and fix patching to qmake)
|
||||
* Felix Barz (Android, Explicit extra module installation)
|
||||
* Gamso (improve parsing of update.xml)
|
||||
* Kyle Altendorf (7z binary path search)
|
||||
|
||||
125
docs/cli.rst
125
docs/cli.rst
@@ -15,13 +15,81 @@ Generic commands
|
||||
|
||||
show generic help
|
||||
|
||||
.. option:: list <Qt version> <target OS>
|
||||
|
||||
list available variations.
|
||||
positional arguments:
|
||||
qt_version Qt version in the format of "5.X.Y"
|
||||
{linux,mac,windows} host os name
|
||||
{desktop,winrt,android,ios} target sdk
|
||||
List command
|
||||
------------------
|
||||
|
||||
.. program:: aqt
|
||||
|
||||
.. option:: list [-h | --help] [--extension <extension>] [--filter-minor <Qt minor version>]
|
||||
[--modules (<Qt version> | latest) | --extensions (<Qt version> | latest) |
|
||||
--arch (<Qt version> | latest) | --latest-version | --tool <tool name>]
|
||||
<category> <target OS> [<target variant>]
|
||||
|
||||
list available tools, versions of Qt, targets, extensions, modules, and architectures.
|
||||
|
||||
.. describe:: category
|
||||
|
||||
tools, qt5 or qt6
|
||||
|
||||
.. describe:: target OS (aka host in code/help text)
|
||||
|
||||
linux, windows or mac
|
||||
|
||||
.. describe:: target variant (aka target in code/help text)
|
||||
|
||||
desktop, winrt, ios or android. When omitted, the command prints all the targets available for a host OS.
|
||||
|
||||
.. option:: --help, -h
|
||||
|
||||
Display help text
|
||||
|
||||
.. option:: --extension {wasm,src_doc_examples,preview,wasm_preview,x86_64,x86,armv7,arm64_v8a}
|
||||
|
||||
Extension of packages to list.
|
||||
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:: --filter-minor <Qt minor version>
|
||||
|
||||
Print versions of Qt that have a particular minor version.
|
||||
For example, `aqt list qt5 windows desktop --filter-minor 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.
|
||||
|
||||
.. option:: --modules (<Qt version> | latest)
|
||||
|
||||
Qt version in the format of "5.X.Y". When set, this lists all the modules
|
||||
available for Qt 5.X.Y with a host/target/extension, or the latest version
|
||||
of Qt if `latest` is specified.
|
||||
|
||||
.. 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
|
||||
of Qt if `latest` is specified.
|
||||
|
||||
.. option:: --latest-version
|
||||
|
||||
Print only the newest version available
|
||||
May be combined with the `--extension` and/or `--filter-minor` flags.
|
||||
|
||||
.. option:: --tool <tool name>
|
||||
|
||||
The name of a tool. Use `aqt list tools <host> <target>` to see accepted values.
|
||||
This flag only works with the 'tools' category, and may noy be combined with
|
||||
any other flags.
|
||||
When set, this prints all 'tool variant names' available.
|
||||
|
||||
The output of this command is meant to be used with the `aqt tool` command:
|
||||
See the :ref:`Tool installation commands` below.
|
||||
|
||||
Installation command
|
||||
--------------------
|
||||
@@ -123,6 +191,7 @@ Tool installation commands
|
||||
|
||||
install tools specified. tool name may be 'tools_openssl_x64', 'tools_ninja', 'tools_ifw', 'tools_cmake'
|
||||
and tool variants name may be 'qt.tools.openssl.gcc_64', 'qt.tools.ninja', 'qt.tools.ifw.32', 'qt.tools.cmake'.
|
||||
You may use the :ref:`List command` with the `--tool` flag to display what tool variant names are available.
|
||||
You may need to looking for version number at https://download.qt.io/online/qtsdkrepository/
|
||||
|
||||
|
||||
@@ -161,11 +230,53 @@ Example: Install Web Assembly
|
||||
aqt install 5.15.0 linux desktop wasm_32
|
||||
|
||||
|
||||
Example: List available versions for Qt5 on Linux
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
aqt list qt5 linux desktop
|
||||
|
||||
|
||||
Example: List available versions for Qt6 on macOS
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
aqt list qt6 mac desktop
|
||||
|
||||
|
||||
Example: List available modules for latest version of Qt6 on macOS
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
aqt list qt6 mac desktop --modules latest # prints 'qtquick3d qtshadertools', etc
|
||||
|
||||
|
||||
Example: List available architectures for Qt 6.1.2 on windows
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
aqt list qt6 windows desktop --arch 6.1.2 # prints 'win64_mingw81 win64_msvc2019_64', etc
|
||||
|
||||
|
||||
Example: List available tools on windows
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
aqt list tools windows desktop # prints 'tools_ifw tools_qtcreator', etc
|
||||
|
||||
|
||||
Example: List the variants of IFW available:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
aqt list tools linux desktop --tool tools_ifw # prints 'qt.tools.ifw.41'
|
||||
|
||||
|
||||
Example: Install an Install FrameWork (IFW):
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
aqt tool linux tools_ifw 4.0 qt.tools.ifw.40
|
||||
aqt tool linux tools_ifw 4.1 qt.tools.ifw.41
|
||||
|
||||
|
||||
Example: Install vcredist:
|
||||
|
||||
@@ -35,6 +35,7 @@ extensions = [
|
||||
'sphinx.ext.coverage',
|
||||
'sphinx.ext.extlinks',
|
||||
'sphinx.ext.viewcode',
|
||||
'sphinx.ext.autosectionlabel',
|
||||
]
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
|
||||
@@ -37,6 +37,7 @@ install_requires =
|
||||
patch>=1.16
|
||||
py7zr>=0.15.1
|
||||
texttable
|
||||
bs4
|
||||
setup_requires =
|
||||
setuptools-scm[toml]>=6.0.1
|
||||
setuptools>=45.0
|
||||
|
||||
66
tests/data/linux-android-expect.json
Normal file
66
tests/data/linux-android-expect.json
Normal file
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"qt5": {
|
||||
"qt": [
|
||||
"5.9.0 5.9.1 5.9.2 5.9.3 5.9.4 5.9.5 5.9.6 5.9.7 5.9.8 5.9.9",
|
||||
"5.10.0 5.10.1",
|
||||
"5.11.0 5.11.1 5.11.2 5.11.3",
|
||||
"5.12.0 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.12.10",
|
||||
"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"
|
||||
],
|
||||
"preview": [
|
||||
"5.9-preview",
|
||||
"5.10-preview",
|
||||
"5.11-preview",
|
||||
"5.12-preview",
|
||||
"5.13-preview",
|
||||
"5.14-preview",
|
||||
"5.15-preview"
|
||||
],
|
||||
"wasm": [],
|
||||
"wasm_preview": [],
|
||||
"src_doc_examples": []
|
||||
},
|
||||
"qt6": {
|
||||
"qt": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
],
|
||||
"preview": [
|
||||
"6.0-preview",
|
||||
"6.1-preview"
|
||||
],
|
||||
"src_doc_examples": [],
|
||||
"x86_64": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
],
|
||||
"x86": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
],
|
||||
"armv7": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
],
|
||||
"arm64_v8a": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
]
|
||||
},
|
||||
"tools": [
|
||||
"tools_qt3dstudio_runtime_preview",
|
||||
"tools_qt3dstudio_runtime_240",
|
||||
"tools_qt3dstudio_runtime_230",
|
||||
"tools_qt3dstudio_runtime_220",
|
||||
"tools_qt3dstudio_openglruntime_preview",
|
||||
"tools_qt3dstudio_openglruntime_280_5151",
|
||||
"tools_qt3dstudio_openglruntime_280",
|
||||
"tools_qt3dstudio_openglruntime_270_5150",
|
||||
"tools_qt3dstudio_openglruntime_270",
|
||||
"tools_qt3dstudio_openglruntime_260",
|
||||
"tools_qt3dstudio_openglruntime_250",
|
||||
"tools_qt3dstudio_openglruntime_240"
|
||||
]
|
||||
}
|
||||
106
tests/data/linux-android.html
Normal file
106
tests/data/linux-android.html
Normal file
@@ -0,0 +1,106 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Index of /online/qtsdkrepository/linux_x64/android</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" type="text/css" href="/static/normalize.css"><link rel="stylesheet" type="text/css" href="/static/style.css"><link rel="stylesheet" href="/static/bootstrap.css" type="text/css"><link rel="stylesheet" href="/static/bootstrap-download-index.css" type="text/css"><script type="text/javascript" src="/static/jquery.js"></script> <script type="text/javascript" src="/static/javascript-index.js"></script> <script type="text/javascript" src="/static/javascript- mirrorlist.js"></script> </head>
|
||||
<body>
|
||||
<h1>Index of /online/qtsdkrepository/linux_x64/android</h1>
|
||||
<table><tr><th> </th><th><a href="?C=N;O=A">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th>Metadata</th></tr><tr><th colspan="5"><hr /></th></tr>
|
||||
<tr><td valign="top"> </td><td><a href="/online/qtsdkrepository/linux_x64/">Parent Directory</a></td><td> </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_preview/">tools_qt3dstudio_runtime_preview/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_240/">tools_qt3dstudio_runtime_240/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_230/">tools_qt3dstudio_runtime_230/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_220/">tools_qt3dstudio_runtime_220/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_preview/">tools_qt3dstudio_openglruntime_preview/</a></td><td align="right">20-Oct-2020 08:54 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_280_5151/">tools_qt3dstudio_openglruntime_280_5151/</a></td><td align="right">16-Nov-2020 10:16 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_280/">tools_qt3dstudio_openglruntime_280/</a></td><td align="right">28-Oct-2020 14:22 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_270_5150/">tools_qt3dstudio_openglruntime_270_5150/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_270/">tools_qt3dstudio_openglruntime_270/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_260/">tools_qt3dstudio_openglruntime_260/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_250/">tools_qt3dstudio_openglruntime_250/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_240/">tools_qt3dstudio_openglruntime_240/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_610_x86_64/">qt6_610_x86_64/</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_610_x86/">qt6_610_x86/</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_610_armv7/">qt6_610_armv7/</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_arm64_v8a/">qt6_610_arm64_v8a/</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:09 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603_x86_64/">qt6_603_x86_64/</a></td><td align="right">31-Mar-2021 07:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603_x86/">qt6_603_x86/</a></td><td align="right">31-Mar-2021 07:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603_armv7/">qt6_603_armv7/</a></td><td align="right">31-Mar-2021 07:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603_arm64_v8a/">qt6_603_arm64_v8a/</a></td><td align="right">31-Mar-2021 07:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603/">qt6_603/</a></td><td align="right">31-Mar-2021 07:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602_x86_64/">qt6_602_x86_64/</a></td><td align="right">03-Mar-2021 07:41 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602_x86/">qt6_602_x86/</a></td><td align="right">03-Mar-2021 07:41 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602_armv7/">qt6_602_armv7/</a></td><td align="right">03-Mar-2021 07:41 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602_arm64_v8a/">qt6_602_arm64_v8a/</a></td><td align="right">03-Mar-2021 07:41 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602/">qt6_602/</a></td><td align="right">03-Mar-2021 07:41 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601_x86_64/">qt6_601_x86_64/</a></td><td align="right">03-Feb-2021 07:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601_x86/">qt6_601_x86/</a></td><td align="right">03-Feb-2021 07:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601_armv7/">qt6_601_armv7/</a></td><td align="right">03-Feb-2021 07:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601_arm64_v8a/">qt6_601_arm64_v8a/</a></td><td align="right">03-Feb-2021 07:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601/">qt6_601/</a></td><td align="right">03-Feb-2021 07:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600_x86_64/">qt6_600_x86_64/</a></td><td align="right">07-Dec-2020 15:30 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600_x86/">qt6_600_x86/</a></td><td align="right">07-Dec-2020 15:30 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600_armv7/">qt6_600_armv7/</a></td><td align="right">07-Dec-2020 15:30 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600_arm64_v8a/">qt6_600_arm64_v8a/</a></td><td align="right">07-Dec-2020 15:30 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600/">qt6_600/</a></td><td align="right">07-Dec-2020 15:30 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_61_preview/">qt6_61_preview/</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_60_preview/">qt6_60_preview/</a></td><td align="right">31-Mar-2021 07:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_51210/">qt5_51210/</a></td><td align="right">09-Nov-2020 09:28 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5152/">qt5_5152/</a></td><td align="right">19-Nov-2020 12:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5151/">qt5_5151/</a></td><td align="right">07-Sep-2020 14:44 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5150/">qt5_5150/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5142/">qt5_5142/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5141/">qt5_5141/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5140/">qt5_5140/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5132/">qt5_5132/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5131/">qt5_5131/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5130/">qt5_5130/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5129/">qt5_5129/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129-backup-2020-04-23--08:59:03/">qt5_5129-backup-2020-04-23--08:59:03/</a></td><td align="right">23-Apr-2020 09:22 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129-backup-2020-04-22--11:51:53/">qt5_5129-backup-2020-04-22--11:51:53/</a></td><td align="right">22-Apr-2020 15:10 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129-backup-2020-04-22--11:51:50/">qt5_5129-backup-2020-04-22--11:51:50/</a></td><td align="right">22-Apr-2020 13:02 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129-backup-2020-04-22--07:40:31/">qt5_5129-backup-2020-04-22--07:40:31/</a></td><td align="right">22-Apr-2020 08:13 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5128/">qt5_5128/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5127/">qt5_5127/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5126/">qt5_5126/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5125/">qt5_5125/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5124/">qt5_5124/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5123/">qt5_5123/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5122/">qt5_5122/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5121/">qt5_5121/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5120/">qt5_5120/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5113/">qt5_5113/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5112/">qt5_5112/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5111/">qt5_5111/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5110/">qt5_5110/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5101/">qt5_5101/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5100/">qt5_5100/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_599/">qt5_599/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_598/">qt5_598/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_597/">qt5_597/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_596/">qt5_596/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_595/">qt5_595/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_594/">qt5_594/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_593/">qt5_593/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_592/">qt5_592/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_591/">qt5_591/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_515_preview/">qt5_515_preview/</a></td><td align="right">19-Nov-2020 12:33 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_514_preview/">qt5_514_preview/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_513_preview/">qt5_513_preview/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_512_preview_backup/">qt5_512_preview_backup/</a></td><td align="right">12-Jun-2020 12:54 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_512_preview/">qt5_512_preview/</a></td><td align="right">09-Nov-2020 09:28 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-23--08:59:03/">qt5_512_preview-backup-2020-04-23--08:59:03/</a></td><td align="right">23-Apr-2020 09:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-22--11:51:53/">qt5_512_preview-backup-2020-04-22--11:51:53/</a></td><td align="right">22-Apr-2020 15:11 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-22--11:51:50/">qt5_512_preview-backup-2020-04-22--11:51:50/</a></td><td align="right">22-Apr-2020 13:03 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-22--07:40:31/">qt5_512_preview-backup-2020-04-22--07:40:31/</a></td><td align="right">22-Apr-2020 08:14 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-21--14:48:40/">qt5_512_preview-backup-2020-04-21--14:48:40/</a></td><td align="right">21-Apr-2020 15:16 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_511_preview/">qt5_511_preview/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_510_preview/">qt5_510_preview/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59_preview/">qt5_59_preview/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59/">qt5_59/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><th colspan="5"><hr /></th></tr>
|
||||
</table>
|
||||
<br/><address><a href="http://mirrorbrain.org/">MirrorBrain</a> powered by <a href="http://httpd.apache.org/">Apache</a></address>
|
||||
</body></html>
|
||||
87
tests/data/linux-desktop-expect.json
Normal file
87
tests/data/linux-desktop-expect.json
Normal file
@@ -0,0 +1,87 @@
|
||||
{
|
||||
"qt5": {
|
||||
"qt": [
|
||||
"5.9.0 5.9.1 5.9.2 5.9.3 5.9.4 5.9.5 5.9.6 5.9.7 5.9.8 5.9.9",
|
||||
"5.10.0 5.10.1",
|
||||
"5.11.0 5.11.1 5.11.2 5.11.3",
|
||||
"5.12.0 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.12.10",
|
||||
"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"
|
||||
],
|
||||
"preview": [
|
||||
"5.9-preview",
|
||||
"5.10-preview",
|
||||
"5.11-preview",
|
||||
"5.12-preview",
|
||||
"5.13-preview",
|
||||
"5.14-preview",
|
||||
"5.15-preview"
|
||||
],
|
||||
"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"
|
||||
],
|
||||
"wasm_preview": [
|
||||
"5.13-preview",
|
||||
"5.14-preview",
|
||||
"5.15-preview"
|
||||
],
|
||||
"src_doc_examples": [
|
||||
"5.9.0 5.9.1 5.9.2 5.9.3 5.9.4 5.9.5 5.9.6 5.9.7 5.9.8 5.9.9",
|
||||
"5.10.0 5.10.1",
|
||||
"5.11.0 5.11.1 5.11.2 5.11.3",
|
||||
"5.12.0 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.12.10",
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"qt6": {
|
||||
"qt": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
],
|
||||
"preview": [
|
||||
"6.0-preview",
|
||||
"6.1-preview"
|
||||
],
|
||||
"src_doc_examples": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
]
|
||||
},
|
||||
"tools": [
|
||||
"tools_telemetry_preview",
|
||||
"tools_telemetry",
|
||||
"tools_qtdesignstudio_preview",
|
||||
"tools_qtdesignstudio",
|
||||
"tools_qtcreator_preview",
|
||||
"tools_qtcreator",
|
||||
"tools_qt3dstudio_runtime_preview",
|
||||
"tools_qt3dstudio_runtime_240",
|
||||
"tools_qt3dstudio_runtime_230",
|
||||
"tools_qt3dstudio_runtime_220",
|
||||
"tools_qt3dstudio_preview",
|
||||
"tools_qt3dstudio_openglruntime_preview",
|
||||
"tools_qt3dstudio_openglruntime_280_5151",
|
||||
"tools_qt3dstudio_openglruntime_280",
|
||||
"tools_qt3dstudio_openglruntime_270_5150",
|
||||
"tools_qt3dstudio_openglruntime_270",
|
||||
"tools_qt3dstudio_openglruntime_260",
|
||||
"tools_qt3dstudio_openglruntime_250",
|
||||
"tools_qt3dstudio_openglruntime_240",
|
||||
"tools_qt3dstudio",
|
||||
"tools_openssl_x64",
|
||||
"tools_openssl_src",
|
||||
"tools_ninja",
|
||||
"tools_maintenance_update_reminder",
|
||||
"tools_maintenance_early_access",
|
||||
"tools_maintenance",
|
||||
"tools_ifw",
|
||||
"tools_generic",
|
||||
"tools_conan",
|
||||
"tools_cmake"
|
||||
]
|
||||
}
|
||||
163
tests/data/linux-desktop.html
Normal file
163
tests/data/linux-desktop.html
Normal file
@@ -0,0 +1,163 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Index of /online/qtsdkrepository/linux_x64/desktop</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" type="text/css" href="/static/normalize.css"><link rel="stylesheet" type="text/css" href="/static/style.css"><link rel="stylesheet" href="/static/bootstrap.css" type="text/css"><link rel="stylesheet" href="/static/bootstrap-download-index.css" type="text/css"><script type="text/javascript" src="/static/jquery.js"></script> <script type="text/javascript" src="/static/javascript-index.js"></script> <script type="text/javascript" src="/static/javascript- mirrorlist.js"></script> </head>
|
||||
<body>
|
||||
<h1>Index of /online/qtsdkrepository/linux_x64/desktop</h1>
|
||||
<table><tr><th> </th><th><a href="?C=N;O=A">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th>Metadata</th></tr><tr><th colspan="5"><hr /></th></tr>
|
||||
<tr><td valign="top"> </td><td><a href="/online/qtsdkrepository/linux_x64/">Parent Directory</a></td><td> </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_telemetry_preview/">tools_telemetry_preview/</a></td><td align="right">14-Apr-2021 10:39 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_telemetry/">tools_telemetry/</a></td><td align="right">22-Mar-2021 10:22 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qtdesignstudio_preview/">tools_qtdesignstudio_preview/</a></td><td align="right">21-Apr-2021 10:27 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qtdesignstudio/">tools_qtdesignstudio/</a></td><td align="right">28-Apr-2021 10:13 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qtcreator_preview/">tools_qtcreator_preview/</a></td><td align="right">14-Apr-2021 10:37 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qtcreator/">tools_qtcreator/</a></td><td align="right">22-Mar-2021 10:19 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_preview/">tools_qt3dstudio_runtime_preview/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_240/">tools_qt3dstudio_runtime_240/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_230/">tools_qt3dstudio_runtime_230/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_220/">tools_qt3dstudio_runtime_220/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_preview/">tools_qt3dstudio_preview/</a></td><td align="right">20-Oct-2020 08:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_preview/">tools_qt3dstudio_openglruntime_preview/</a></td><td align="right">20-Oct-2020 08:54 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_280_5151/">tools_qt3dstudio_openglruntime_280_5151/</a></td><td align="right">16-Nov-2020 10:16 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_280/">tools_qt3dstudio_openglruntime_280/</a></td><td align="right">28-Oct-2020 14:22 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_270_5150/">tools_qt3dstudio_openglruntime_270_5150/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_270/">tools_qt3dstudio_openglruntime_270/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_260/">tools_qt3dstudio_openglruntime_260/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_250/">tools_qt3dstudio_openglruntime_250/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_240/">tools_qt3dstudio_openglruntime_240/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio/">tools_qt3dstudio/</a></td><td align="right">28-Oct-2020 14:22 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_openssl_x64/">tools_openssl_x64/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_openssl_src/">tools_openssl_src/</a></td><td align="right">26-Feb-2021 14:50 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_ninja/">tools_ninja/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_maintenance_update_reminder/">tools_maintenance_update_reminder/</a></td><td align="right">02-Feb-2018 10:00 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_maintenance_early_access/">tools_maintenance_early_access/</a></td><td align="right">30-Sep-2020 12:48 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_maintenance/">tools_maintenance/</a></td><td align="right">13-Apr-2021 14:41 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_ifw/">tools_ifw/</a></td><td align="right">13-Apr-2021 14:58 </td><td align="right"> - </td><td> </td></tr>
|
||||
<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="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>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603/">qt6_603/</a></td><td align="right">31-Mar-2021 07:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602_src_doc_examples/">qt6_602_src_doc_examples/</a></td><td align="right">03-Mar-2021 07:40 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602/">qt6_602/</a></td><td align="right">03-Mar-2021 07:40 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601_src_doc_examples/">qt6_601_src_doc_examples/</a></td><td align="right">05-Feb-2021 10:59 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601/">qt6_601/</a></td><td align="right">03-Feb-2021 07:43 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600_src_doc_examples/">qt6_600_src_doc_examples/</a></td><td align="right">07-Dec-2020 15:29 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600/">qt6_600/</a></td><td align="right">07-Dec-2020 15:28 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_61_preview/">qt6_61_preview/</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_60_preview/">qt6_60_preview/</a></td><td align="right">31-Mar-2021 07:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_51210_src_doc_examples/">qt5_51210_src_doc_examples/</a></td><td align="right">09-Nov-2020 09:21 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_51210/">qt5_51210/</a></td><td align="right">09-Nov-2020 09:20 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5152_wasm/">qt5_5152_wasm/</a></td><td align="right">19-Nov-2020 12:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5152_src_doc_examples/">qt5_5152_src_doc_examples/</a></td><td align="right">19-Nov-2020 12:29 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5152/">qt5_5152/</a></td><td align="right">19-Nov-2020 12:27 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5151_wasm/">qt5_5151_wasm/</a></td><td align="right">07-Sep-2020 14:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5151_src_doc_examples/">qt5_5151_src_doc_examples/</a></td><td align="right">07-Sep-2020 14:43 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5151/">qt5_5151/</a></td><td align="right">07-Sep-2020 14:43 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5150_wasm/">qt5_5150_wasm/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5150_src_doc_examples/">qt5_5150_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5150/">qt5_5150/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5142_wasm/">qt5_5142_wasm/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5142_src_doc_examples/">qt5_5142_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5142/">qt5_5142/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5141_wasm/">qt5_5141_wasm/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5141_src_doc_examples/">qt5_5141_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5141/">qt5_5141/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5140_wasm/">qt5_5140_wasm/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5140_src_doc_examples/">qt5_5140_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5140/">qt5_5140/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5132_wasm/">qt5_5132_wasm/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5132_src_doc_examples/">qt5_5132_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5132/">qt5_5132/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5131_wasm/">qt5_5131_wasm/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5131_src_doc_examples/">qt5_5131_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5131/">qt5_5131/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5130_wasm/">qt5_5130_wasm/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5130_src_doc_examples/">qt5_5130_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5130/">qt5_5130/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5129_src_doc_examples/">qt5_5129_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129_src_doc_examples-backup-2020-04-23--08:59:03/">qt5_5129_src_doc_examples-backup-2020-04-23--08:59:03/</a></td><td align="right">23-Apr-2020 09:20 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129_src_doc_examples-backup-2020-04-22--11:51:53/">qt5_5129_src_doc_examples-backup-2020-04-22--11:51:53/</a></td><td align="right">22-Apr-2020 15:09 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129_src_doc_examples-backup-2020-04-22--11:51:50/">qt5_5129_src_doc_examples-backup-2020-04-22--11:51:50/</a></td><td align="right">22-Apr-2020 12:59 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129_src_doc_examples-backup-2020-04-22--07:40:31/">qt5_5129_src_doc_examples-backup-2020-04-22--07:40:31/</a></td><td align="right">22-Apr-2020 08:10 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5129/">qt5_5129/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129-backup-2020-04-23--08:59:03/">qt5_5129-backup-2020-04-23--08:59:03/</a></td><td align="right">23-Apr-2020 09:17 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129-backup-2020-04-22--11:51:53/">qt5_5129-backup-2020-04-22--11:51:53/</a></td><td align="right">22-Apr-2020 15:04 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129-backup-2020-04-22--11:51:50/">qt5_5129-backup-2020-04-22--11:51:50/</a></td><td align="right">22-Apr-2020 12:44 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129-backup-2020-04-22--07:40:31/">qt5_5129-backup-2020-04-22--07:40:31/</a></td><td align="right">22-Apr-2020 08:03 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5128_src_doc_examples/">qt5_5128_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5128/">qt5_5128/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5127_src_doc_examples/">qt5_5127_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5127/">qt5_5127/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5126_src_doc_examples/">qt5_5126_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5126/">qt5_5126/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5125_src_doc_examples/">qt5_5125_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5125/">qt5_5125/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5124_src_doc_examples/">qt5_5124_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5124/">qt5_5124/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5123_src_doc_examples/">qt5_5123_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5123/">qt5_5123/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5122_src_doc_examples/">qt5_5122_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5122/">qt5_5122/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5121_src_doc_examples/">qt5_5121_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5121/">qt5_5121/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5120_src_doc_examples/">qt5_5120_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5120/">qt5_5120/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5113_src_doc_examples/">qt5_5113_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5113/">qt5_5113/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5112_src_doc_examples/">qt5_5112_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5112/">qt5_5112/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5111_src_doc_examples/">qt5_5111_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5111/">qt5_5111/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5110_src_doc_examples/">qt5_5110_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5110/">qt5_5110/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5101_src_doc_examples/">qt5_5101_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5101/">qt5_5101/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5100_src_doc_examples/">qt5_5100_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5100/">qt5_5100/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_599_src_doc_examples/">qt5_599_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_599/">qt5_599/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_598_src_doc_examples/">qt5_598_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_598/">qt5_598/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_597_src_doc_examples/">qt5_597_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_597/">qt5_597/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_596_src_doc_examples/">qt5_596_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_596/">qt5_596/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_595_src_doc_examples/">qt5_595_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_595/">qt5_595/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_594_src_doc_examples/">qt5_594_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_594/">qt5_594/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_593_src_doc_examples/">qt5_593_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_593/">qt5_593/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_592_src_doc_examples/">qt5_592_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_592/">qt5_592/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_591_src_doc_examples/">qt5_591_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_591/">qt5_591/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_515_wasm_preview/">qt5_515_wasm_preview/</a></td><td align="right">19-Nov-2020 12:33 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_515_preview/">qt5_515_preview/</a></td><td align="right">19-Nov-2020 12:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_514_wasm_preview/">qt5_514_wasm_preview/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_514_preview/">qt5_514_preview/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_513_wasm_preview/">qt5_513_wasm_preview/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_513_preview/">qt5_513_preview/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_512_preview/">qt5_512_preview/</a></td><td align="right">09-Nov-2020 09:28 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-23--08:59:03/">qt5_512_preview-backup-2020-04-23--08:59:03/</a></td><td align="right">23-Apr-2020 09:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-22--11:51:53/">qt5_512_preview-backup-2020-04-22--11:51:53/</a></td><td align="right">22-Apr-2020 15:10 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-22--11:51:50/">qt5_512_preview-backup-2020-04-22--11:51:50/</a></td><td align="right">22-Apr-2020 13:03 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-22--07:40:31/">qt5_512_preview-backup-2020-04-22--07:40:31/</a></td><td align="right">22-Apr-2020 08:14 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-21--14:48:40/">qt5_512_preview-backup-2020-04-21--14:48:40/</a></td><td align="right">21-Apr-2020 15:16 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_511_preview/">qt5_511_preview/</a></td><td align="right">24-Aug-2020 15:37 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_510_preview/">qt5_510_preview/</a></td><td align="right">24-Aug-2020 15:37 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59_src_doc_examples/">qt5_59_src_doc_examples/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59_preview/">qt5_59_preview/</a></td><td align="right">24-Aug-2020 15:37 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59/">qt5_59/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="preview_main_node/">preview_main_node/</a></td><td align="right">12-Nov-2020 11:33 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="licenses/">licenses/</a></td><td align="right">24-Aug-2020 15:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="extras_src/">extras_src/</a></td><td align="right">10-Mar-2021 11:07 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><th colspan="5"><hr /></th></tr>
|
||||
</table>
|
||||
<br/><address><a href="http://mirrorbrain.org/">MirrorBrain</a> powered by <a href="http://httpd.apache.org/">Apache</a></address>
|
||||
</body></html>
|
||||
66
tests/data/mac-android-expect.json
Normal file
66
tests/data/mac-android-expect.json
Normal file
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"qt5": {
|
||||
"qt": [
|
||||
"5.9.0 5.9.1 5.9.2 5.9.3 5.9.4 5.9.5 5.9.6 5.9.7 5.9.8 5.9.9",
|
||||
"5.10.0 5.10.1",
|
||||
"5.11.0 5.11.1 5.11.2 5.11.3",
|
||||
"5.12.0 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.12.10",
|
||||
"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"
|
||||
],
|
||||
"preview": [
|
||||
"5.9-preview",
|
||||
"5.10-preview",
|
||||
"5.11-preview",
|
||||
"5.12-preview",
|
||||
"5.13-preview",
|
||||
"5.14-preview",
|
||||
"5.15-preview"
|
||||
],
|
||||
"wasm": [],
|
||||
"wasm_preview": [],
|
||||
"src_doc_examples": []
|
||||
},
|
||||
"qt6": {
|
||||
"qt": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
],
|
||||
"preview": [
|
||||
"6.0-preview",
|
||||
"6.1-preview"
|
||||
],
|
||||
"src_doc_examples": [],
|
||||
"x86_64": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
],
|
||||
"x86": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
],
|
||||
"armv7": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
],
|
||||
"arm64_v8a": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
]
|
||||
},
|
||||
"tools": [
|
||||
"tools_qt3dstudio_runtime_preview",
|
||||
"tools_qt3dstudio_runtime_240",
|
||||
"tools_qt3dstudio_runtime_230",
|
||||
"tools_qt3dstudio_runtime_220",
|
||||
"tools_qt3dstudio_openglruntime_preview",
|
||||
"tools_qt3dstudio_openglruntime_280_5151",
|
||||
"tools_qt3dstudio_openglruntime_280",
|
||||
"tools_qt3dstudio_openglruntime_270_5150",
|
||||
"tools_qt3dstudio_openglruntime_270",
|
||||
"tools_qt3dstudio_openglruntime_260",
|
||||
"tools_qt3dstudio_openglruntime_250",
|
||||
"tools_qt3dstudio_openglruntime_240"
|
||||
]
|
||||
}
|
||||
99
tests/data/mac-android.html
Normal file
99
tests/data/mac-android.html
Normal file
@@ -0,0 +1,99 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Index of /online/qtsdkrepository/mac_x64/android</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" type="text/css" href="/static/normalize.css"><link rel="stylesheet" type="text/css" href="/static/style.css"><link rel="stylesheet" href="/static/bootstrap.css" type="text/css"><link rel="stylesheet" href="/static/bootstrap-download-index.css" type="text/css"><script type="text/javascript" src="/static/jquery.js"></script> <script type="text/javascript" src="/static/javascript-index.js"></script> <script type="text/javascript" src="/static/javascript- mirrorlist.js"></script> </head>
|
||||
<body>
|
||||
<h1>Index of /online/qtsdkrepository/mac_x64/android</h1>
|
||||
<table><tr><th> </th><th><a href="?C=N;O=A">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th>Metadata</th></tr><tr><th colspan="5"><hr /></th></tr>
|
||||
<tr><td valign="top"> </td><td><a href="/online/qtsdkrepository/mac_x64/">Parent Directory</a></td><td> </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_preview/">tools_qt3dstudio_runtime_preview/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_240/">tools_qt3dstudio_runtime_240/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_230/">tools_qt3dstudio_runtime_230/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_220/">tools_qt3dstudio_runtime_220/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_preview/">tools_qt3dstudio_openglruntime_preview/</a></td><td align="right">20-Oct-2020 08:55 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_280_5151/">tools_qt3dstudio_openglruntime_280_5151/</a></td><td align="right">16-Nov-2020 10:16 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_280/">tools_qt3dstudio_openglruntime_280/</a></td><td align="right">28-Oct-2020 14:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_270_5150/">tools_qt3dstudio_openglruntime_270_5150/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_270/">tools_qt3dstudio_openglruntime_270/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_260/">tools_qt3dstudio_openglruntime_260/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_250/">tools_qt3dstudio_openglruntime_250/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_240/">tools_qt3dstudio_openglruntime_240/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_610_x86_64/">qt6_610_x86_64/</a></td><td align="right">30-Apr-2021 08:14 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_610_x86/">qt6_610_x86/</a></td><td align="right">30-Apr-2021 08:14 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_610_armv7/">qt6_610_armv7/</a></td><td align="right">30-Apr-2021 08:14 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_610_arm64_v8a/">qt6_610_arm64_v8a/</a></td><td align="right">30-Apr-2021 08:14 </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:14 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603_x86_64/">qt6_603_x86_64/</a></td><td align="right">31-Mar-2021 07:35 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603_x86/">qt6_603_x86/</a></td><td align="right">31-Mar-2021 07:35 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603_armv7/">qt6_603_armv7/</a></td><td align="right">31-Mar-2021 07:35 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603_arm64_v8a/">qt6_603_arm64_v8a/</a></td><td align="right">31-Mar-2021 07:35 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603/">qt6_603/</a></td><td align="right">31-Mar-2021 07:35 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602_x86_64/">qt6_602_x86_64/</a></td><td align="right">03-Mar-2021 07:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602_x86/">qt6_602_x86/</a></td><td align="right">03-Mar-2021 07:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602_armv7/">qt6_602_armv7/</a></td><td align="right">03-Mar-2021 07:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602_arm64_v8a/">qt6_602_arm64_v8a/</a></td><td align="right">03-Mar-2021 07:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602/">qt6_602/</a></td><td align="right">03-Mar-2021 07:44 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601_x86_64/">qt6_601_x86_64/</a></td><td align="right">03-Feb-2021 07:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601_x86/">qt6_601_x86/</a></td><td align="right">03-Feb-2021 07:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601_armv7/">qt6_601_armv7/</a></td><td align="right">03-Feb-2021 07:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601_arm64_v8a/">qt6_601_arm64_v8a/</a></td><td align="right">03-Feb-2021 07:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601/">qt6_601/</a></td><td align="right">03-Feb-2021 07:44 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600_x86_64/">qt6_600_x86_64/</a></td><td align="right">07-Dec-2020 15:30 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600_x86/">qt6_600_x86/</a></td><td align="right">07-Dec-2020 15:30 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600_armv7/">qt6_600_armv7/</a></td><td align="right">07-Dec-2020 15:30 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600_arm64_v8a/">qt6_600_arm64_v8a/</a></td><td align="right">07-Dec-2020 15:29 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600/">qt6_600/</a></td><td align="right">07-Dec-2020 15:29 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_61_preview/">qt6_61_preview/</a></td><td align="right">30-Apr-2021 08:16 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_60_preview/">qt6_60_preview/</a></td><td align="right">31-Mar-2021 07:36 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_51210/">qt5_51210/</a></td><td align="right">09-Nov-2020 09:49 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5152/">qt5_5152/</a></td><td align="right">19-Nov-2020 12:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5151/">qt5_5151/</a></td><td align="right">07-Sep-2020 15:07 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5150/">qt5_5150/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5142/">qt5_5142/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5141/">qt5_5141/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5140/">qt5_5140/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5132/">qt5_5132/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5131/">qt5_5131/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5130/">qt5_5130/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5129/">qt5_5129/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129-backup-2020-04-23--08:59:15/">qt5_5129-backup-2020-04-23--08:59:15/</a></td><td align="right">23-Apr-2020 09:49 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5128/">qt5_5128/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5127/">qt5_5127/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5126/">qt5_5126/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5125/">qt5_5125/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5124/">qt5_5124/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5123/">qt5_5123/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5122/">qt5_5122/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5121/">qt5_5121/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5120/">qt5_5120/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5113/">qt5_5113/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5112/">qt5_5112/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5111/">qt5_5111/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5110/">qt5_5110/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5101/">qt5_5101/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5100/">qt5_5100/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_599/">qt5_599/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_598/">qt5_598/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_597/">qt5_597/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_596/">qt5_596/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_595/">qt5_595/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_594/">qt5_594/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_593/">qt5_593/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_592/">qt5_592/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_591/">qt5_591/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_515_preview/">qt5_515_preview/</a></td><td align="right">19-Nov-2020 12:38 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_514_preview/">qt5_514_preview/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_513_preview/">qt5_513_preview/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_512_preview/">qt5_512_preview/</a></td><td align="right">09-Nov-2020 09:52 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-23--08:59:15/">qt5_512_preview-backup-2020-04-23--08:59:15/</a></td><td align="right">23-Apr-2020 09:56 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-22--11:51:53/">qt5_512_preview-backup-2020-04-22--11:51:53/</a></td><td align="right">22-Apr-2020 16:04 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_511_preview/">qt5_511_preview/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_510_preview/">qt5_510_preview/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59_preview/">qt5_59_preview/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59/">qt5_59/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><th colspan="5"><hr /></th></tr>
|
||||
</table>
|
||||
<br/><address><a href="http://mirrorbrain.org/">MirrorBrain</a> powered by <a href="http://httpd.apache.org/">Apache</a></address>
|
||||
</body></html>
|
||||
88
tests/data/mac-desktop-expect.json
Normal file
88
tests/data/mac-desktop-expect.json
Normal file
@@ -0,0 +1,88 @@
|
||||
{
|
||||
"qt5": {
|
||||
"qt": [
|
||||
"5.9.0 5.9.1 5.9.2 5.9.3 5.9.4 5.9.5 5.9.6 5.9.7 5.9.8 5.9.9",
|
||||
"5.10.0 5.10.1",
|
||||
"5.11.0 5.11.1 5.11.2 5.11.3",
|
||||
"5.12.0 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.12.10",
|
||||
"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"
|
||||
],
|
||||
"preview": [
|
||||
"5.6-preview",
|
||||
"5.9-preview",
|
||||
"5.10-preview",
|
||||
"5.11-preview",
|
||||
"5.12-preview",
|
||||
"5.13-preview",
|
||||
"5.14-preview",
|
||||
"5.15-preview"
|
||||
],
|
||||
"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"
|
||||
],
|
||||
"wasm_preview": [
|
||||
"5.13-preview",
|
||||
"5.14-preview",
|
||||
"5.15-preview"
|
||||
],
|
||||
"src_doc_examples": [
|
||||
"5.9.0 5.9.1 5.9.2 5.9.3 5.9.4 5.9.5 5.9.6 5.9.7 5.9.8 5.9.9",
|
||||
"5.10.0 5.10.1",
|
||||
"5.11.0 5.11.1 5.11.2 5.11.3",
|
||||
"5.12.0 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.12.10",
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"qt6": {
|
||||
"qt": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
],
|
||||
"preview": [
|
||||
"6.0-preview",
|
||||
"6.1-preview"
|
||||
],
|
||||
"src_doc_examples": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
]
|
||||
},
|
||||
"tools": [
|
||||
"tools_telemetry_preview",
|
||||
"tools_telemetry",
|
||||
"tools_qtdesignstudio_preview",
|
||||
"tools_qtdesignstudio",
|
||||
"tools_qtcreator_preview",
|
||||
"tools_qtcreator",
|
||||
"tools_qt3dstudio_runtime_preview",
|
||||
"tools_qt3dstudio_runtime_240",
|
||||
"tools_qt3dstudio_runtime_230",
|
||||
"tools_qt3dstudio_runtime_220",
|
||||
"tools_qt3dstudio_runtime_210",
|
||||
"tools_qt3dstudio_runtime",
|
||||
"tools_qt3dstudio_preview",
|
||||
"tools_qt3dstudio_openglruntime_preview",
|
||||
"tools_qt3dstudio_openglruntime_280_5151",
|
||||
"tools_qt3dstudio_openglruntime_280",
|
||||
"tools_qt3dstudio_openglruntime_270_5150",
|
||||
"tools_qt3dstudio_openglruntime_270",
|
||||
"tools_qt3dstudio_openglruntime_260",
|
||||
"tools_qt3dstudio_openglruntime_250",
|
||||
"tools_qt3dstudio_openglruntime_240",
|
||||
"tools_qt3dstudio",
|
||||
"tools_ninja",
|
||||
"tools_maintenance_update_reminder",
|
||||
"tools_maintenance_early_access",
|
||||
"tools_maintenance",
|
||||
"tools_ifw",
|
||||
"tools_generic",
|
||||
"tools_conan",
|
||||
"tools_cmake"
|
||||
]
|
||||
}
|
||||
5
tests/data/mac-desktop-tools_cmake-expect.json
Normal file
5
tests/data/mac-desktop-tools_cmake-expect.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"modules": [
|
||||
"qt.tools.cmake"
|
||||
]
|
||||
}
|
||||
24
tests/data/mac-desktop-tools_cmake-update.xml
Normal file
24
tests/data/mac-desktop-tools_cmake-update.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<Updates>
|
||||
<ApplicationName>{AnyApplication}</ApplicationName>
|
||||
<ApplicationVersion>1.0.0</ApplicationVersion>
|
||||
<Checksum>true</Checksum>
|
||||
<PackageUpdate>
|
||||
<Name>qt.tools.cmake</Name>
|
||||
<DisplayName>CMake 3.19.2</DisplayName>
|
||||
<Description>CMake tools 3.19.2</Description>
|
||||
<Version>3.19.2-202101071155</Version>
|
||||
<ReleaseDate>2021-01-07</ReleaseDate>
|
||||
<Dependencies>qt.tools.qtcreator</Dependencies>
|
||||
<Script>installscript.qs</Script>
|
||||
<DownloadableArchives>macos64_x86_cmake_tools.7z</DownloadableArchives>
|
||||
<Default>true</Default>
|
||||
<UpdateFile CompressedSize="43264131" OS="Any" UncompressedSize="165156306"/>
|
||||
<UserInterfaces>licensedialog.ui</UserInterfaces>
|
||||
<Licenses>
|
||||
<License file="Copyright.txt" name="CMake license agreement"/>
|
||||
</Licenses>
|
||||
<SHA1>c514d8a496607eee80f7dae2f152b464f288319f</SHA1>
|
||||
</PackageUpdate>
|
||||
<SHA1>c514d8a496607eee80f7dae2f152b464f288319f</SHA1>
|
||||
<MetadataName>2021-01-07-1156_meta.7z</MetadataName>
|
||||
</Updates>
|
||||
5
tests/data/mac-desktop-tools_ifw-expect.json
Normal file
5
tests/data/mac-desktop-tools_ifw-expect.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"modules": [
|
||||
"qt.tools.ifw.41"
|
||||
]
|
||||
}
|
||||
19
tests/data/mac-desktop-tools_ifw-update.xml
Normal file
19
tests/data/mac-desktop-tools_ifw-update.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<Updates>
|
||||
<ApplicationName>{AnyApplication}</ApplicationName>
|
||||
<ApplicationVersion>1.0.0</ApplicationVersion>
|
||||
<Checksum>true</Checksum>
|
||||
<PackageUpdate>
|
||||
<Name>qt.tools.ifw.41</Name>
|
||||
<DisplayName>Qt Installer Framework 4.1</DisplayName>
|
||||
<Description>The Qt Installer Framework provides a set of tools and utilities to create installers for the supported desktop Qt platforms: Linux, Microsoft Windows, and macOS.</Description>
|
||||
<Version>4.1.1-202105261132</Version>
|
||||
<ReleaseDate>2021-05-26</ReleaseDate>
|
||||
<Default>false</Default>
|
||||
<SortingPriority>410</SortingPriority>
|
||||
<DownloadableArchives>ifw-mac-x64.7z</DownloadableArchives>
|
||||
<UpdateFile UncompressedSize="129741860" CompressedSize="39605245" OS="Any"/>
|
||||
<SHA1>ac812bbcade385c605bc1dc200be8a23ac839cbf</SHA1>
|
||||
</PackageUpdate>
|
||||
<SHA1>ac812bbcade385c605bc1dc200be8a23ac839cbf</SHA1>
|
||||
<MetadataName>2021-05-26-1132_meta.7z</MetadataName>
|
||||
</Updates>
|
||||
7
tests/data/mac-desktop-tools_qtcreator-expect.json
Normal file
7
tests/data/mac-desktop-tools_qtcreator-expect.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"modules": [
|
||||
"qt.tools.qtcreator",
|
||||
"qt.tools.qtcreatordbg",
|
||||
"qt.tools.qtcreatordev"
|
||||
]
|
||||
}
|
||||
44
tests/data/mac-desktop-tools_qtcreator-update.xml
Normal file
44
tests/data/mac-desktop-tools_qtcreator-update.xml
Normal file
@@ -0,0 +1,44 @@
|
||||
<Updates>
|
||||
<ApplicationName>{AnyApplication}</ApplicationName>
|
||||
<ApplicationVersion>1.0.0</ApplicationVersion>
|
||||
<Checksum>true</Checksum>
|
||||
<PackageUpdate>
|
||||
<Name>qt.tools.qtcreator</Name>
|
||||
<DisplayName>Qt Creator 4.15.1</DisplayName>
|
||||
<Description>IDE for Qt application development</Description>
|
||||
<Version>4.15.1-0-202106081242</Version>
|
||||
<ReleaseDate>2021-06-08</ReleaseDate>
|
||||
<Script>installscript.qs</Script>
|
||||
<Dependencies/>
|
||||
<SortingPriority>1000</SortingPriority>
|
||||
<ForcedInstallation>true</ForcedInstallation>
|
||||
<DownloadableArchives>qtcreator.7z, qtcreator_sdktool.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="136099945" UncompressedSize="533316311" OS="Any"/>
|
||||
<UserInterfaces>associatecommonfiletypesform.ui,launchqtcreatorcheckboxform.ui</UserInterfaces>
|
||||
<SHA1>684ee4525e6412623167a5442b7c262cac52c9bb</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.tools.qtcreatordbg</Name>
|
||||
<DisplayName>Qt Creator 4.15.1 Debug Symbols</DisplayName>
|
||||
<Description>Additional symbol files required to debug Qt Creator</Description>
|
||||
<Version>4.15.1-0-202106081242</Version>
|
||||
<ReleaseDate>2021-06-08</ReleaseDate>
|
||||
<SortingPriority>994</SortingPriority>
|
||||
<DownloadableArchives>qtcreator-debug.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="235240929" UncompressedSize="1570679561" OS="Any"/>
|
||||
<SHA1>c71f2e138df7232f7482e66a4cc2db5f94a3c7b4</SHA1>
|
||||
</PackageUpdate>
|
||||
<PackageUpdate>
|
||||
<Name>qt.tools.qtcreatordev</Name>
|
||||
<DisplayName>Qt Creator 4.15.1 Plugin Development</DisplayName>
|
||||
<Description>Headers and libs required to develop additional plugins</Description>
|
||||
<Version>4.15.1-0-202106081242</Version>
|
||||
<ReleaseDate>2021-06-08</ReleaseDate>
|
||||
<SortingPriority>990</SortingPriority>
|
||||
<DownloadableArchives>qtcreator_dev.7z</DownloadableArchives>
|
||||
<UpdateFile CompressedSize="12377799" UncompressedSize="104362249" OS="Any"/>
|
||||
<SHA1>0e2127ef128a87f6bc04e0c9eccab677aac21ec0</SHA1>
|
||||
</PackageUpdate>
|
||||
<SHA1>593112b370156d1ef2fe365fb2b9890b175ce084</SHA1>
|
||||
<MetadataName>2021-06-08-1242_meta.7z</MetadataName>
|
||||
</Updates>
|
||||
154
tests/data/mac-desktop.html
Normal file
154
tests/data/mac-desktop.html
Normal file
@@ -0,0 +1,154 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Index of /online/qtsdkrepository/mac_x64/desktop</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" type="text/css" href="/static/normalize.css"><link rel="stylesheet" type="text/css" href="/static/style.css"><link rel="stylesheet" href="/static/bootstrap.css" type="text/css"><link rel="stylesheet" href="/static/bootstrap-download-index.css" type="text/css"><script type="text/javascript" src="/static/jquery.js"></script> <script type="text/javascript" src="/static/javascript-index.js"></script> <script type="text/javascript" src="/static/javascript- mirrorlist.js"></script> </head>
|
||||
<body>
|
||||
<h1>Index of /online/qtsdkrepository/mac_x64/desktop</h1>
|
||||
<table><tr><th> </th><th><a href="?C=N;O=A">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th>Metadata</th></tr><tr><th colspan="5"><hr /></th></tr>
|
||||
<tr><td valign="top"> </td><td><a href="/online/qtsdkrepository/mac_x64/">Parent Directory</a></td><td> </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_telemetry_preview/">tools_telemetry_preview/</a></td><td align="right">14-Apr-2021 10:40 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_telemetry/">tools_telemetry/</a></td><td align="right">22-Mar-2021 10:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qtdesignstudio_preview/">tools_qtdesignstudio_preview/</a></td><td align="right">21-Apr-2021 10:27 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qtdesignstudio/">tools_qtdesignstudio/</a></td><td align="right">28-Apr-2021 10:14 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qtcreator_preview/">tools_qtcreator_preview/</a></td><td align="right">14-Apr-2021 10:38 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qtcreator/">tools_qtcreator/</a></td><td align="right">22-Mar-2021 10:21 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_preview/">tools_qt3dstudio_runtime_preview/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_240/">tools_qt3dstudio_runtime_240/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_230/">tools_qt3dstudio_runtime_230/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_220/">tools_qt3dstudio_runtime_220/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_210/">tools_qt3dstudio_runtime_210/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime/">tools_qt3dstudio_runtime/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_preview/">tools_qt3dstudio_preview/</a></td><td align="right">20-Oct-2020 08:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_preview/">tools_qt3dstudio_openglruntime_preview/</a></td><td align="right">20-Oct-2020 08:55 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_280_5151/">tools_qt3dstudio_openglruntime_280_5151/</a></td><td align="right">16-Nov-2020 10:16 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_280/">tools_qt3dstudio_openglruntime_280/</a></td><td align="right">28-Oct-2020 14:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_270_5150/">tools_qt3dstudio_openglruntime_270_5150/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_270/">tools_qt3dstudio_openglruntime_270/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_260/">tools_qt3dstudio_openglruntime_260/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_250/">tools_qt3dstudio_openglruntime_250/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_240/">tools_qt3dstudio_openglruntime_240/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio/">tools_qt3dstudio/</a></td><td align="right">28-Oct-2020 14:24 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_ninja/">tools_ninja/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_maintenance_update_reminder/">tools_maintenance_update_reminder/</a></td><td align="right">02-Feb-2018 10:00 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_maintenance_early_access/">tools_maintenance_early_access/</a></td><td align="right">30-Sep-2020 12:48 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_maintenance/">tools_maintenance/</a></td><td align="right">13-Apr-2021 14:41 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_ifw/">tools_ifw/</a></td><td align="right">13-Apr-2021 14:58 </td><td align="right"> - </td><td> </td></tr>
|
||||
<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="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>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603/">qt6_603/</a></td><td align="right">31-Mar-2021 07:34 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602_src_doc_examples/">qt6_602_src_doc_examples/</a></td><td align="right">03-Mar-2021 07:44 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602/">qt6_602/</a></td><td align="right">03-Mar-2021 07:44 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601_src_doc_examples/">qt6_601_src_doc_examples/</a></td><td align="right">05-Feb-2021 10:59 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601/">qt6_601/</a></td><td align="right">03-Feb-2021 07:44 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600_src_doc_examples/">qt6_600_src_doc_examples/</a></td><td align="right">07-Dec-2020 15:29 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600/">qt6_600/</a></td><td align="right">07-Dec-2020 15:28 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_61_preview/">qt6_61_preview/</a></td><td align="right">30-Apr-2021 08:16 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_60_preview/">qt6_60_preview/</a></td><td align="right">31-Mar-2021 07:36 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_51210_src_doc_examples/">qt5_51210_src_doc_examples/</a></td><td align="right">09-Nov-2020 09:44 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_51210/">qt5_51210/</a></td><td align="right">09-Nov-2020 09:43 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5152_wasm/">qt5_5152_wasm/</a></td><td align="right">19-Nov-2020 12:29 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5152_src_doc_examples/">qt5_5152_src_doc_examples/</a></td><td align="right">19-Nov-2020 12:29 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5152/">qt5_5152/</a></td><td align="right">19-Nov-2020 12:27 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5151_wasm/">qt5_5151_wasm/</a></td><td align="right">07-Sep-2020 15:06 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5151_src_doc_examples/">qt5_5151_src_doc_examples/</a></td><td align="right">07-Sep-2020 15:06 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5151/">qt5_5151/</a></td><td align="right">07-Sep-2020 15:05 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5150_wasm/">qt5_5150_wasm/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5150_src_doc_examples/">qt5_5150_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5150/">qt5_5150/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5142_wasm/">qt5_5142_wasm/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5142_src_doc_examples/">qt5_5142_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5142/">qt5_5142/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5141_wasm/">qt5_5141_wasm/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5141_src_doc_examples/">qt5_5141_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5141/">qt5_5141/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5140_wasm/">qt5_5140_wasm/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5140_src_doc_examples/">qt5_5140_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5140/">qt5_5140/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5132_wasm/">qt5_5132_wasm/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5132_src_doc_examples/">qt5_5132_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5132/">qt5_5132/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5131_wasm/">qt5_5131_wasm/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5131_src_doc_examples/">qt5_5131_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5131/">qt5_5131/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5130_src_doc_examples/">qt5_5130_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5130/">qt5_5130/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5129_src_doc_examples/">qt5_5129_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129_src_doc_examples-backup-2020-04-23--08:59:15/">qt5_5129_src_doc_examples-backup-2020-04-23--08:59:15/</a></td><td align="right">23-Apr-2020 09:47 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5129/">qt5_5129/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129-backup-2020-04-23--08:59:15/">qt5_5129-backup-2020-04-23--08:59:15/</a></td><td align="right">23-Apr-2020 09:44 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5128_src_doc_examples/">qt5_5128_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5128/">qt5_5128/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5127_src_doc_examples/">qt5_5127_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5127/">qt5_5127/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5126_src_doc_examples/">qt5_5126_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5126/">qt5_5126/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5125_src_doc_examples/">qt5_5125_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5125/">qt5_5125/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5124_src_doc_examples/">qt5_5124_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5124/">qt5_5124/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5123_src_doc_examples/">qt5_5123_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5123/">qt5_5123/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5122_src_doc_examples/">qt5_5122_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5122/">qt5_5122/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5121_src_doc_examples/">qt5_5121_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5121/">qt5_5121/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5120_src_doc_examples/">qt5_5120_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5120/">qt5_5120/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5113_src_doc_examples/">qt5_5113_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5113/">qt5_5113/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5112_src_doc_examples/">qt5_5112_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5112/">qt5_5112/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5111_src_doc_examples/">qt5_5111_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5111/">qt5_5111/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5110_src_doc_examples/">qt5_5110_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5110/">qt5_5110/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5101_src_doc_examples/">qt5_5101_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5101/">qt5_5101/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5100_src_doc_examples/">qt5_5100_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5100/">qt5_5100/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_599_src_doc_examples/">qt5_599_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_599/">qt5_599/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_598_src_doc_examples/">qt5_598_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_598/">qt5_598/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_597_src_doc_examples/">qt5_597_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_597/">qt5_597/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_596_src_doc_examples/">qt5_596_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_596/">qt5_596/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_595_src_doc_examples/">qt5_595_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_595/">qt5_595/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_594_src_doc_examples/">qt5_594_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_594/">qt5_594/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_593_src_doc_examples/">qt5_593_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_593/">qt5_593/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_592_src_doc_examples/">qt5_592_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_592/">qt5_592/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_591_src_doc_examples/">qt5_591_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_591/">qt5_591/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_515_wasm_preview/">qt5_515_wasm_preview/</a></td><td align="right">19-Nov-2020 12:38 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_515_preview/">qt5_515_preview/</a></td><td align="right">19-Nov-2020 12:38 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_514_wasm_preview/">qt5_514_wasm_preview/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_514_preview/">qt5_514_preview/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_513_wasm_preview/">qt5_513_wasm_preview/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_513_preview/">qt5_513_preview/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_512_preview/">qt5_512_preview/</a></td><td align="right">09-Nov-2020 09:52 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-23--08:59:15/">qt5_512_preview-backup-2020-04-23--08:59:15/</a></td><td align="right">23-Apr-2020 09:56 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-22--11:51:53/">qt5_512_preview-backup-2020-04-22--11:51:53/</a></td><td align="right">22-Apr-2020 16:03 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_511_preview/">qt5_511_preview/</a></td><td align="right">24-Aug-2020 15:36 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_510_preview/">qt5_510_preview/</a></td><td align="right">24-Aug-2020 15:36 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59_src_doc_examples/">qt5_59_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59_preview/">qt5_59_preview/</a></td><td align="right">24-Aug-2020 15:36 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59/">qt5_59/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_56_preview/">qt5_56_preview/</a></td><td align="right">24-Aug-2020 15:36 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="preview_main_node/">preview_main_node/</a></td><td align="right">12-Nov-2020 11:34 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="licenses/">licenses/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="extras_src/">extras_src/</a></td><td align="right">10-Mar-2021 11:10 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><th colspan="5"><hr /></th></tr>
|
||||
</table>
|
||||
<br/><address><a href="http://mirrorbrain.org/">MirrorBrain</a> powered by <a href="http://httpd.apache.org/">Apache</a></address>
|
||||
</body></html>
|
||||
42
tests/data/mac-ios-expect.json
Normal file
42
tests/data/mac-ios-expect.json
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"qt5": {
|
||||
"qt": [
|
||||
"5.9.0 5.9.1 5.9.2 5.9.3 5.9.4 5.9.5 5.9.6 5.9.7 5.9.8 5.9.9",
|
||||
"5.10.0 5.10.1",
|
||||
"5.11.0 5.11.1 5.11.2 5.11.3",
|
||||
"5.12.0 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.12.10",
|
||||
"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"
|
||||
],
|
||||
"preview": [
|
||||
"5.9-preview",
|
||||
"5.10-preview",
|
||||
"5.11-preview",
|
||||
"5.12-preview",
|
||||
"5.13-preview",
|
||||
"5.14-preview",
|
||||
"5.15-preview"
|
||||
],
|
||||
"wasm": [],
|
||||
"wasm_preview": [],
|
||||
"src_doc_examples": []
|
||||
},
|
||||
"qt6": {
|
||||
"qt": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
],
|
||||
"preview": [
|
||||
"6.0-preview",
|
||||
"6.1-preview"
|
||||
],
|
||||
"src_doc_examples": []
|
||||
},
|
||||
"tools": [
|
||||
"tools_qt3dstudio_runtime_preview",
|
||||
"tools_qt3dstudio_runtime_240",
|
||||
"tools_qt3dstudio_runtime_230",
|
||||
"tools_qt3dstudio_runtime_220"
|
||||
]
|
||||
}
|
||||
72
tests/data/mac-ios.html
Normal file
72
tests/data/mac-ios.html
Normal file
@@ -0,0 +1,72 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Index of /online/qtsdkrepository/mac_x64/ios</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" type="text/css" href="/static/normalize.css"><link rel="stylesheet" type="text/css" href="/static/style.css"><link rel="stylesheet" href="/static/bootstrap.css" type="text/css"><link rel="stylesheet" href="/static/bootstrap-download-index.css" type="text/css"><script type="text/javascript" src="/static/jquery.js"></script> <script type="text/javascript" src="/static/javascript-index.js"></script> <script type="text/javascript" src="/static/javascript- mirrorlist.js"></script> </head>
|
||||
<body>
|
||||
<h1>Index of /online/qtsdkrepository/mac_x64/ios</h1>
|
||||
<table><tr><th> </th><th><a href="?C=N;O=A">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th>Metadata</th></tr><tr><th colspan="5"><hr /></th></tr>
|
||||
<tr><td valign="top"> </td><td><a href="/online/qtsdkrepository/mac_x64/">Parent Directory</a></td><td> </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_preview/">tools_qt3dstudio_runtime_preview/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_240/">tools_qt3dstudio_runtime_240/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_230/">tools_qt3dstudio_runtime_230/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_220/">tools_qt3dstudio_runtime_220/</a></td><td align="right">24-Aug-2020 13:32 </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:14 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603/">qt6_603/</a></td><td align="right">31-Mar-2021 07:35 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602/">qt6_602/</a></td><td align="right">03-Mar-2021 07:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601/">qt6_601/</a></td><td align="right">03-Feb-2021 07:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600/">qt6_600/</a></td><td align="right">07-Dec-2020 15:30 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_61_preview/">qt6_61_preview/</a></td><td align="right">30-Apr-2021 08:16 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_60_preview/">qt6_60_preview/</a></td><td align="right">31-Mar-2021 07:36 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_51210/">qt5_51210/</a></td><td align="right">09-Nov-2020 09:50 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5152/">qt5_5152/</a></td><td align="right">19-Nov-2020 12:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5151/">qt5_5151/</a></td><td align="right">07-Sep-2020 15:07 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5150/">qt5_5150/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5142/">qt5_5142/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5141/">qt5_5141/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5140/">qt5_5140/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5132/">qt5_5132/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5131/">qt5_5131/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5130/">qt5_5130/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5129/">qt5_5129/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129-backup-2020-04-23--08:59:15/">qt5_5129-backup-2020-04-23--08:59:15/</a></td><td align="right">23-Apr-2020 09:54 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5128/">qt5_5128/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5127/">qt5_5127/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5126/">qt5_5126/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5125/">qt5_5125/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5124/">qt5_5124/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5123/">qt5_5123/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5122/">qt5_5122/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5121/">qt5_5121/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5120/">qt5_5120/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5113/">qt5_5113/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5112/">qt5_5112/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5111/">qt5_5111/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5110/">qt5_5110/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5101/">qt5_5101/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5100/">qt5_5100/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_599/">qt5_599/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_598/">qt5_598/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_597/">qt5_597/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_596/">qt5_596/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_595/">qt5_595/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_594/">qt5_594/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_593/">qt5_593/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_592/">qt5_592/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_591/">qt5_591/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_515_preview/">qt5_515_preview/</a></td><td align="right">19-Nov-2020 12:38 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_514_preview/">qt5_514_preview/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_513_preview/">qt5_513_preview/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_512_preview/">qt5_512_preview/</a></td><td align="right">09-Nov-2020 09:52 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-23--08:59:15/">qt5_512_preview-backup-2020-04-23--08:59:15/</a></td><td align="right">23-Apr-2020 09:56 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-22--11:51:53/">qt5_512_preview-backup-2020-04-22--11:51:53/</a></td><td align="right">22-Apr-2020 16:04 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_511_preview/">qt5_511_preview/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_510_preview/">qt5_510_preview/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59_preview/">qt5_59_preview/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59/">qt5_59/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5/">qt5/</a></td><td align="right">24-Aug-2020 13:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><th colspan="5"><hr /></th></tr>
|
||||
</table>
|
||||
<br/><address><a href="http://mirrorbrain.org/">MirrorBrain</a> powered by <a href="http://httpd.apache.org/">Apache</a></address>
|
||||
</body></html>
|
||||
23
tests/data/windows-5140-expect.json
Normal file
23
tests/data/windows-5140-expect.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"modules": [
|
||||
"debug_info",
|
||||
"qtcharts",
|
||||
"qtdatavis3d",
|
||||
"qtlottie",
|
||||
"qtnetworkauth",
|
||||
"qtpurchasing",
|
||||
"qtquick3d",
|
||||
"qtquicktimeline",
|
||||
"qtscript",
|
||||
"qtvirtualkeyboard",
|
||||
"qtwebengine",
|
||||
"qtwebglplugin"
|
||||
],
|
||||
"architectures": [
|
||||
"win32_mingw73",
|
||||
"win32_msvc2017",
|
||||
"win64_mingw73",
|
||||
"win64_msvc2015_64",
|
||||
"win64_msvc2017_64"
|
||||
]
|
||||
}
|
||||
23
tests/data/windows-5150-expect.json
Normal file
23
tests/data/windows-5150-expect.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"modules": [
|
||||
"debug_info",
|
||||
"qtcharts",
|
||||
"qtdatavis3d",
|
||||
"qtlottie",
|
||||
"qtnetworkauth",
|
||||
"qtpurchasing",
|
||||
"qtquick3d",
|
||||
"qtquicktimeline",
|
||||
"qtscript",
|
||||
"qtvirtualkeyboard",
|
||||
"qtwebengine",
|
||||
"qtwebglplugin"
|
||||
],
|
||||
"architectures": [
|
||||
"win32_mingw81",
|
||||
"win32_msvc2019",
|
||||
"win64_mingw81",
|
||||
"win64_msvc2015_64",
|
||||
"win64_msvc2019_64"
|
||||
]
|
||||
}
|
||||
28
tests/data/windows-5152-src-doc-example-expect.json
Normal file
28
tests/data/windows-5152-src-doc-example-expect.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"modules": [
|
||||
"doc",
|
||||
"doc.qtcharts",
|
||||
"doc.qtdatavis3d",
|
||||
"doc.qtlottie",
|
||||
"doc.qtnetworkauth",
|
||||
"doc.qtpurchasing",
|
||||
"doc.qtquick3d",
|
||||
"doc.qtquicktimeline",
|
||||
"doc.qtscript",
|
||||
"doc.qtvirtualkeyboard",
|
||||
"doc.qtwebengine",
|
||||
"examples",
|
||||
"examples.qtcharts",
|
||||
"examples.qtdatavis3d",
|
||||
"examples.qtlottie",
|
||||
"examples.qtnetworkauth",
|
||||
"examples.qtpurchasing",
|
||||
"examples.qtquick3d",
|
||||
"examples.qtquicktimeline",
|
||||
"examples.qtscript",
|
||||
"examples.qtvirtualkeyboard",
|
||||
"examples.qtwebengine",
|
||||
"src"
|
||||
],
|
||||
"architectures": []
|
||||
}
|
||||
66
tests/data/windows-android-expect.json
Normal file
66
tests/data/windows-android-expect.json
Normal file
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"qt5": {
|
||||
"qt": [
|
||||
"5.9.0 5.9.1 5.9.2 5.9.3 5.9.4 5.9.5 5.9.6 5.9.7 5.9.8 5.9.9",
|
||||
"5.10.0 5.10.1",
|
||||
"5.11.0 5.11.1 5.11.2 5.11.3",
|
||||
"5.12.0 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.12.10",
|
||||
"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"
|
||||
],
|
||||
"preview": [
|
||||
"5.9-preview",
|
||||
"5.10-preview",
|
||||
"5.11-preview",
|
||||
"5.12-preview",
|
||||
"5.13-preview",
|
||||
"5.14-preview",
|
||||
"5.15-preview"
|
||||
],
|
||||
"wasm": [],
|
||||
"wasm_preview": [],
|
||||
"src_doc_examples": []
|
||||
},
|
||||
"qt6": {
|
||||
"qt": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
],
|
||||
"preview": [
|
||||
"6.0-preview",
|
||||
"6.1-preview"
|
||||
],
|
||||
"src_doc_examples": [],
|
||||
"x86_64": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
],
|
||||
"x86": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
],
|
||||
"armv7": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
],
|
||||
"arm64_v8a": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
]
|
||||
},
|
||||
"tools": [
|
||||
"tools_qt3dstudio_runtime_preview",
|
||||
"tools_qt3dstudio_runtime_240",
|
||||
"tools_qt3dstudio_runtime_230",
|
||||
"tools_qt3dstudio_runtime_220",
|
||||
"tools_qt3dstudio_openglruntime_preview",
|
||||
"tools_qt3dstudio_openglruntime_280_5151",
|
||||
"tools_qt3dstudio_openglruntime_280",
|
||||
"tools_qt3dstudio_openglruntime_270_5150",
|
||||
"tools_qt3dstudio_openglruntime_270",
|
||||
"tools_qt3dstudio_openglruntime_260",
|
||||
"tools_qt3dstudio_openglruntime_250",
|
||||
"tools_qt3dstudio_openglruntime_240"
|
||||
]
|
||||
}
|
||||
99
tests/data/windows-android.html
Normal file
99
tests/data/windows-android.html
Normal file
@@ -0,0 +1,99 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Index of /online/qtsdkrepository/windows_x86/android</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" type="text/css" href="/static/normalize.css"><link rel="stylesheet" type="text/css" href="/static/style.css"><link rel="stylesheet" href="/static/bootstrap.css" type="text/css"><link rel="stylesheet" href="/static/bootstrap-download-index.css" type="text/css"><script type="text/javascript" src="/static/jquery.js"></script> <script type="text/javascript" src="/static/javascript-index.js"></script> <script type="text/javascript" src="/static/javascript- mirrorlist.js"></script> </head>
|
||||
<body>
|
||||
<h1>Index of /online/qtsdkrepository/windows_x86/android</h1>
|
||||
<table><tr><th> </th><th><a href="?C=N;O=A">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th>Metadata</th></tr><tr><th colspan="5"><hr /></th></tr>
|
||||
<tr><td valign="top"> </td><td><a href="/online/qtsdkrepository/windows_x86/">Parent Directory</a></td><td> </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_preview/">tools_qt3dstudio_runtime_preview/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_240/">tools_qt3dstudio_runtime_240/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_230/">tools_qt3dstudio_runtime_230/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_220/">tools_qt3dstudio_runtime_220/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_preview/">tools_qt3dstudio_openglruntime_preview/</a></td><td align="right">20-Oct-2020 08:55 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_280_5151/">tools_qt3dstudio_openglruntime_280_5151/</a></td><td align="right">16-Nov-2020 10:16 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_280/">tools_qt3dstudio_openglruntime_280/</a></td><td align="right">28-Oct-2020 14:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_270_5150/">tools_qt3dstudio_openglruntime_270_5150/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_270/">tools_qt3dstudio_openglruntime_270/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_260/">tools_qt3dstudio_openglruntime_260/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_250/">tools_qt3dstudio_openglruntime_250/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_240/">tools_qt3dstudio_openglruntime_240/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_610_x86_64/">qt6_610_x86_64/</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_x86/">qt6_610_x86/</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_armv7/">qt6_610_armv7/</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_arm64_v8a/">qt6_610_arm64_v8a/</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:12 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603_x86_64/">qt6_603_x86_64/</a></td><td align="right">31-Mar-2021 07:34 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603_x86/">qt6_603_x86/</a></td><td align="right">31-Mar-2021 07:34 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603_armv7/">qt6_603_armv7/</a></td><td align="right">31-Mar-2021 07:34 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603_arm64_v8a/">qt6_603_arm64_v8a/</a></td><td align="right">31-Mar-2021 07:34 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603/">qt6_603/</a></td><td align="right">31-Mar-2021 07:33 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602_x86_64/">qt6_602_x86_64/</a></td><td align="right">03-Mar-2021 07:44 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602_x86/">qt6_602_x86/</a></td><td align="right">03-Mar-2021 07:43 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602_armv7/">qt6_602_armv7/</a></td><td align="right">03-Mar-2021 07:43 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602_arm64_v8a/">qt6_602_arm64_v8a/</a></td><td align="right">03-Mar-2021 07:43 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602/">qt6_602/</a></td><td align="right">03-Mar-2021 07:43 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601_x86_64/">qt6_601_x86_64/</a></td><td align="right">03-Feb-2021 07:46 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601_x86/">qt6_601_x86/</a></td><td align="right">03-Feb-2021 07:46 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601_armv7/">qt6_601_armv7/</a></td><td align="right">03-Feb-2021 07:46 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601_arm64_v8a/">qt6_601_arm64_v8a/</a></td><td align="right">03-Feb-2021 07:46 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601/">qt6_601/</a></td><td align="right">03-Feb-2021 07:46 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600_x86_64/">qt6_600_x86_64/</a></td><td align="right">07-Dec-2020 15:30 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600_x86/">qt6_600_x86/</a></td><td align="right">07-Dec-2020 15:30 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600_armv7/">qt6_600_armv7/</a></td><td align="right">07-Dec-2020 15:30 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600_arm64_v8a/">qt6_600_arm64_v8a/</a></td><td align="right">07-Dec-2020 15:30 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600/">qt6_600/</a></td><td align="right">07-Dec-2020 15:30 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_61_preview/">qt6_61_preview/</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_60_preview/">qt6_60_preview/</a></td><td align="right">31-Mar-2021 07:34 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_51210/">qt5_51210/</a></td><td align="right">09-Nov-2020 09:34 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5152/">qt5_5152/</a></td><td align="right">19-Nov-2020 12:42 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5151/">qt5_5151/</a></td><td align="right">07-Sep-2020 16:38 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5150/">qt5_5150/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5142/">qt5_5142/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5141/">qt5_5141/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5140/">qt5_5140/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5132/">qt5_5132/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5131/">qt5_5131/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5130/">qt5_5130/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5129/">qt5_5129/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129-backup-2020-04-23--08:58:55/">qt5_5129-backup-2020-04-23--08:58:55/</a></td><td align="right">23-Apr-2020 11:06 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5128/">qt5_5128/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5127/">qt5_5127/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5126/">qt5_5126/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5125/">qt5_5125/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5124/">qt5_5124/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5123/">qt5_5123/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5122/">qt5_5122/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5121/">qt5_5121/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5120/">qt5_5120/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5113/">qt5_5113/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5112/">qt5_5112/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5111/">qt5_5111/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5110/">qt5_5110/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5101/">qt5_5101/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5100/">qt5_5100/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_599/">qt5_599/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_598/">qt5_598/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_597/">qt5_597/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_596/">qt5_596/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_595/">qt5_595/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_594/">qt5_594/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_593/">qt5_593/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_592/">qt5_592/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_591/">qt5_591/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_515_preview/">qt5_515_preview/</a></td><td align="right">19-Nov-2020 12:44 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_514_preview/">qt5_514_preview/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_513_preview/">qt5_513_preview/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_512_preview/">qt5_512_preview/</a></td><td align="right">09-Nov-2020 09:43 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-23--08:58:55/">qt5_512_preview-backup-2020-04-23--08:58:55/</a></td><td align="right">23-Apr-2020 11:17 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-22--11:51:53/">qt5_512_preview-backup-2020-04-22--11:51:53/</a></td><td align="right">22-Apr-2020 15:55 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_511_preview/">qt5_511_preview/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_510_preview/">qt5_510_preview/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59_preview/">qt5_59_preview/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59/">qt5_59/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><th colspan="5"><hr /></th></tr>
|
||||
</table>
|
||||
<br/><address><a href="http://mirrorbrain.org/">MirrorBrain</a> powered by <a href="http://httpd.apache.org/">Apache</a></address>
|
||||
</body></html>
|
||||
99
tests/data/windows-desktop-expect.json
Normal file
99
tests/data/windows-desktop-expect.json
Normal file
@@ -0,0 +1,99 @@
|
||||
{
|
||||
"qt5": {
|
||||
"qt": [
|
||||
"5.9.0 5.9.1 5.9.2 5.9.3 5.9.4 5.9.5 5.9.6 5.9.7 5.9.8 5.9.9",
|
||||
"5.10.0 5.10.1",
|
||||
"5.11.0 5.11.1 5.11.2 5.11.3",
|
||||
"5.12.0 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.12.10",
|
||||
"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"
|
||||
],
|
||||
"preview": [
|
||||
"5.6-preview",
|
||||
"5.9-preview",
|
||||
"5.10-preview",
|
||||
"5.11-preview",
|
||||
"5.12-preview",
|
||||
"5.13-preview",
|
||||
"5.14-preview",
|
||||
"5.15-preview"
|
||||
],
|
||||
"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"
|
||||
],
|
||||
"wasm_preview": [
|
||||
"5.13-preview",
|
||||
"5.14-preview",
|
||||
"5.15-preview"
|
||||
],
|
||||
"src_doc_examples": [
|
||||
"5.3.0",
|
||||
"5.4.0",
|
||||
"5.5.0",
|
||||
"5.6.0",
|
||||
"5.7.0",
|
||||
"5.8.0",
|
||||
"5.9.0 5.9.1 5.9.2 5.9.3 5.9.4 5.9.5 5.9.6 5.9.7 5.9.8 5.9.9",
|
||||
"5.10.0 5.10.1",
|
||||
"5.11.0 5.11.1 5.11.2 5.11.3",
|
||||
"5.12.0 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.12.10",
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"qt6": {
|
||||
"qt": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
],
|
||||
"preview": [
|
||||
"6.0-preview",
|
||||
"6.1-preview"
|
||||
],
|
||||
"src_doc_examples": [
|
||||
"6.0.0 6.0.1 6.0.2 6.0.3",
|
||||
"6.1.0"
|
||||
]
|
||||
},
|
||||
"tools": [
|
||||
"tools_vcredist",
|
||||
"tools_telemetry_preview",
|
||||
"tools_telemetry",
|
||||
"tools_qtdesignstudio_preview",
|
||||
"tools_qtdesignstudio",
|
||||
"tools_qtcreator_preview",
|
||||
"tools_qtcreator",
|
||||
"tools_qt3dstudio_runtime_preview",
|
||||
"tools_qt3dstudio_runtime_240",
|
||||
"tools_qt3dstudio_runtime_230",
|
||||
"tools_qt3dstudio_runtime_220",
|
||||
"tools_qt3dstudio_runtime_210",
|
||||
"tools_qt3dstudio_runtime",
|
||||
"tools_qt3dstudio_preview",
|
||||
"tools_qt3dstudio_openglruntime_preview",
|
||||
"tools_qt3dstudio_openglruntime_280_5151",
|
||||
"tools_qt3dstudio_openglruntime_280",
|
||||
"tools_qt3dstudio_openglruntime_270_5150",
|
||||
"tools_qt3dstudio_openglruntime_270",
|
||||
"tools_qt3dstudio_openglruntime_260",
|
||||
"tools_qt3dstudio_openglruntime_250",
|
||||
"tools_qt3dstudio_openglruntime_240",
|
||||
"tools_qt3dstudio",
|
||||
"tools_openssl_x86",
|
||||
"tools_openssl_x64",
|
||||
"tools_openssl_src",
|
||||
"tools_ninja",
|
||||
"tools_mingw",
|
||||
"tools_maintenance_update_reminder",
|
||||
"tools_maintenance_early_access",
|
||||
"tools_maintenance",
|
||||
"tools_ifw",
|
||||
"tools_generic",
|
||||
"tools_conan",
|
||||
"tools_cmake"
|
||||
]
|
||||
}
|
||||
165
tests/data/windows-desktop.html
Normal file
165
tests/data/windows-desktop.html
Normal file
@@ -0,0 +1,165 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Index of /online/qtsdkrepository/windows_x86/desktop</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" type="text/css" href="/static/normalize.css"><link rel="stylesheet" type="text/css" href="/static/style.css"><link rel="stylesheet" href="/static/bootstrap.css" type="text/css"><link rel="stylesheet" href="/static/bootstrap-download-index.css" type="text/css"><script type="text/javascript" src="/static/jquery.js"></script> <script type="text/javascript" src="/static/javascript-index.js"></script> <script type="text/javascript" src="/static/javascript- mirrorlist.js"></script> </head>
|
||||
<body>
|
||||
<h1>Index of /online/qtsdkrepository/windows_x86/desktop</h1>
|
||||
<table><tr><th> </th><th><a href="?C=N;O=A">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th>Metadata</th></tr><tr><th colspan="5"><hr /></th></tr>
|
||||
<tr><td valign="top"> </td><td><a href="/online/qtsdkrepository/windows_x86/">Parent Directory</a></td><td> </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_vcredist/">tools_vcredist/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_telemetry_preview/">tools_telemetry_preview/</a></td><td align="right">14-Apr-2021 10:39 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_telemetry/">tools_telemetry/</a></td><td align="right">22-Mar-2021 10:22 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qtdesignstudio_preview/">tools_qtdesignstudio_preview/</a></td><td align="right">21-Apr-2021 10:27 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qtdesignstudio/">tools_qtdesignstudio/</a></td><td align="right">28-Apr-2021 10:13 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qtcreator_preview/">tools_qtcreator_preview/</a></td><td align="right">14-Apr-2021 10:38 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qtcreator/">tools_qtcreator/</a></td><td align="right">22-Mar-2021 10:20 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_preview/">tools_qt3dstudio_runtime_preview/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_240/">tools_qt3dstudio_runtime_240/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_230/">tools_qt3dstudio_runtime_230/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_220/">tools_qt3dstudio_runtime_220/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_210/">tools_qt3dstudio_runtime_210/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime/">tools_qt3dstudio_runtime/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_preview/">tools_qt3dstudio_preview/</a></td><td align="right">20-Oct-2020 08:45 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_preview/">tools_qt3dstudio_openglruntime_preview/</a></td><td align="right">20-Oct-2020 08:55 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_280_5151/">tools_qt3dstudio_openglruntime_280_5151/</a></td><td align="right">16-Nov-2020 10:16 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_280/">tools_qt3dstudio_openglruntime_280/</a></td><td align="right">28-Oct-2020 14:22 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_270_5150/">tools_qt3dstudio_openglruntime_270_5150/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_270/">tools_qt3dstudio_openglruntime_270/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_260/">tools_qt3dstudio_openglruntime_260/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_250/">tools_qt3dstudio_openglruntime_250/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_openglruntime_240/">tools_qt3dstudio_openglruntime_240/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio/">tools_qt3dstudio/</a></td><td align="right">28-Oct-2020 14:23 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_openssl_x86/">tools_openssl_x86/</a></td><td align="right">26-Feb-2021 14:51 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_openssl_x64/">tools_openssl_x64/</a></td><td align="right">26-Feb-2021 14:51 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_openssl_src/">tools_openssl_src/</a></td><td align="right">26-Feb-2021 14:51 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_ninja/">tools_ninja/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_mingw/">tools_mingw/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_maintenance_update_reminder/">tools_maintenance_update_reminder/</a></td><td align="right">02-Feb-2018 10:00 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_maintenance_early_access/">tools_maintenance_early_access/</a></td><td align="right">30-Sep-2020 12:48 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_maintenance/">tools_maintenance/</a></td><td align="right">13-Apr-2021 14:41 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_ifw/">tools_ifw/</a></td><td align="right">13-Apr-2021 14:58 </td><td align="right"> - </td><td> </td></tr>
|
||||
<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="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>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_603/">qt6_603/</a></td><td align="right">31-Mar-2021 07:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602_src_doc_examples/">qt6_602_src_doc_examples/</a></td><td align="right">03-Mar-2021 07:43 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_602/">qt6_602/</a></td><td align="right">03-Mar-2021 07:41 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601_src_doc_examples/">qt6_601_src_doc_examples/</a></td><td align="right">05-Feb-2021 11:00 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_601/">qt6_601/</a></td><td align="right">03-Feb-2021 07:44 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600_src_doc_examples/">qt6_600_src_doc_examples/</a></td><td align="right">07-Dec-2020 15:29 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_600/">qt6_600/</a></td><td align="right">07-Dec-2020 15:27 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt6_61_preview/">qt6_61_preview/</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_60_preview/">qt6_60_preview/</a></td><td align="right">31-Mar-2021 07:34 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_51210_src_doc_examples/">qt5_51210_src_doc_examples/</a></td><td align="right">09-Nov-2020 09:33 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_51210/">qt5_51210/</a></td><td align="right">09-Nov-2020 09:28 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5152_wasm/">qt5_5152_wasm/</a></td><td align="right">19-Nov-2020 12:40 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5152_src_doc_examples/">qt5_5152_src_doc_examples/</a></td><td align="right">19-Nov-2020 12:40 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5152/">qt5_5152/</a></td><td align="right">19-Nov-2020 12:28 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5151_wasm/">qt5_5151_wasm/</a></td><td align="right">07-Sep-2020 16:37 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5151_src_doc_examples/">qt5_5151_src_doc_examples/</a></td><td align="right">07-Sep-2020 16:37 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5151/">qt5_5151/</a></td><td align="right">07-Sep-2020 16:32 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5150_wasm/">qt5_5150_wasm/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5150_src_doc_examples/">qt5_5150_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5150/">qt5_5150/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5142_wasm/">qt5_5142_wasm/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5142_src_doc_examples/">qt5_5142_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5142/">qt5_5142/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5141_wasm/">qt5_5141_wasm/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5141_src_doc_examples/">qt5_5141_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5141/">qt5_5141/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5140_wasm/">qt5_5140_wasm/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5140_src_doc_examples/">qt5_5140_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5140/">qt5_5140/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5132_wasm/">qt5_5132_wasm/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5132_src_doc_examples/">qt5_5132_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5132/">qt5_5132/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5131_wasm/">qt5_5131_wasm/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5131_src_doc_examples/">qt5_5131_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5131/">qt5_5131/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5130_src_doc_examples/">qt5_5130_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5130/">qt5_5130/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5129_src_doc_examples/">qt5_5129_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129_src_doc_examples-backup-2020-04-23--08:58:55/">qt5_5129_src_doc_examples-backup-2020-04-23--08:58:55/</a></td><td align="right">23-Apr-2020 11:03 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5129/">qt5_5129/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129-backup-2020-04-23--08:58:55/">qt5_5129-backup-2020-04-23--08:58:55/</a></td><td align="right">23-Apr-2020 10:50 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5128_src_doc_examples/">qt5_5128_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5128/">qt5_5128/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5127_src_doc_examples/">qt5_5127_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5127/">qt5_5127/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5126_src_doc_examples/">qt5_5126_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5126/">qt5_5126/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5125_src_doc_examples/">qt5_5125_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5125/">qt5_5125/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5124_src_doc_examples/">qt5_5124_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5124/">qt5_5124/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5123_src_doc_examples/">qt5_5123_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5123/">qt5_5123/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5122_src_doc_examples/">qt5_5122_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5122/">qt5_5122/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5121_src_doc_examples/">qt5_5121_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5121/">qt5_5121/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5120_src_doc_examples/">qt5_5120_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5120/">qt5_5120/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5113_src_doc_examples/">qt5_5113_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5113/">qt5_5113/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5112_src_doc_examples/">qt5_5112_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5112/">qt5_5112/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5111_src_doc_examples/">qt5_5111_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5111/">qt5_5111/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5110_src_doc_examples/">qt5_5110_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5110/">qt5_5110/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5101_src_doc_examples/">qt5_5101_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5101/">qt5_5101/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5100_src_doc_examples/">qt5_5100_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5100/">qt5_5100/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_599_src_doc_examples/">qt5_599_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_599/">qt5_599/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_598_src_doc_examples/">qt5_598_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_598/">qt5_598/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_597_src_doc_examples/">qt5_597_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_597/">qt5_597/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_596_src_doc_examples/">qt5_596_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_596/">qt5_596/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_595_src_doc_examples/">qt5_595_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_595/">qt5_595/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_594_src_doc_examples/">qt5_594_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_594/">qt5_594/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_593_src_doc_examples/">qt5_593_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_593/">qt5_593/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_592_src_doc_examples/">qt5_592_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_592/">qt5_592/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_591_src_doc_examples/">qt5_591_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_591/">qt5_591/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_515_wasm_preview/">qt5_515_wasm_preview/</a></td><td align="right">19-Nov-2020 12:44 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_515_preview/">qt5_515_preview/</a></td><td align="right">19-Nov-2020 12:44 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_514_wasm_preview/">qt5_514_wasm_preview/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_514_preview/">qt5_514_preview/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_513_wasm_preview/">qt5_513_wasm_preview/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_513_preview/">qt5_513_preview/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_512_preview/">qt5_512_preview/</a></td><td align="right">09-Nov-2020 09:43 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-23--08:58:55/">qt5_512_preview-backup-2020-04-23--08:58:55/</a></td><td align="right">23-Apr-2020 11:16 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-22--11:51:53/">qt5_512_preview-backup-2020-04-22--11:51:53/</a></td><td align="right">22-Apr-2020 15:55 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_511_preview/">qt5_511_preview/</a></td><td align="right">24-Aug-2020 15:36 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_510_preview/">qt5_510_preview/</a></td><td align="right">25-Jan-2018 13:07 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59_src_doc_examples/">qt5_59_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59_preview/">qt5_59_preview/</a></td><td align="right">24-Aug-2020 15:36 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59/">qt5_59/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_58_src_doc_examples/">qt5_58_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_57_src_doc_examples/">qt5_57_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_56_src_doc_examples/">qt5_56_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_56_preview/">qt5_56_preview/</a></td><td align="right">24-Aug-2020 15:36 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_55_src_doc_examples/">qt5_55_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_54_src_doc_examples/">qt5_54_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_53_src_doc_examples/">qt5_53_src_doc_examples/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="preview_main_node/">preview_main_node/</a></td><td align="right">12-Nov-2020 11:34 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="licenses/">licenses/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="extras_src/">extras_src/</a></td><td align="right">10-Mar-2021 11:01 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><th colspan="5"><hr /></th></tr>
|
||||
</table>
|
||||
<br/><address><a href="http://mirrorbrain.org/">MirrorBrain</a> powered by <a href="http://httpd.apache.org/">Apache</a></address>
|
||||
</body></html>
|
||||
38
tests/data/windows-winrt-expect.json
Normal file
38
tests/data/windows-winrt-expect.json
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"qt5": {
|
||||
"qt": [
|
||||
"5.9.0 5.9.1 5.9.2 5.9.3 5.9.4 5.9.5 5.9.6 5.9.7 5.9.8 5.9.9",
|
||||
"5.10.0 5.10.1",
|
||||
"5.11.0 5.11.1 5.11.2 5.11.3",
|
||||
"5.12.0 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.12.10",
|
||||
"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"
|
||||
],
|
||||
"preview": [
|
||||
"5.9-preview",
|
||||
"5.10-preview",
|
||||
"5.11-preview",
|
||||
"5.12-preview",
|
||||
"5.13-preview",
|
||||
"5.14-preview",
|
||||
"5.15-preview"
|
||||
],
|
||||
"wasm": [],
|
||||
"wasm_preview": [],
|
||||
"src_doc_examples": []
|
||||
},
|
||||
"qt6": {
|
||||
"qt": [],
|
||||
"preview": [],
|
||||
"src_doc_examples": []
|
||||
},
|
||||
"tools": [
|
||||
"tools_qt3dstudio_runtime_preview",
|
||||
"tools_qt3dstudio_runtime_240",
|
||||
"tools_qt3dstudio_runtime_230",
|
||||
"tools_qt3dstudio_runtime_220",
|
||||
"tools_qt3dstudio_runtime_210",
|
||||
"tools_qt3dstudio_runtime"
|
||||
]
|
||||
}
|
||||
66
tests/data/windows-winrt.html
Normal file
66
tests/data/windows-winrt.html
Normal file
@@ -0,0 +1,66 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Index of /online/qtsdkrepository/windows_x86/winrt</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" type="text/css" href="/static/normalize.css"><link rel="stylesheet" type="text/css" href="/static/style.css"><link rel="stylesheet" href="/static/bootstrap.css" type="text/css"><link rel="stylesheet" href="/static/bootstrap-download-index.css" type="text/css"><script type="text/javascript" src="/static/jquery.js"></script> <script type="text/javascript" src="/static/javascript-index.js"></script> <script type="text/javascript" src="/static/javascript- mirrorlist.js"></script> </head>
|
||||
<body>
|
||||
<h1>Index of /online/qtsdkrepository/windows_x86/winrt</h1>
|
||||
<table><tr><th> </th><th><a href="?C=N;O=A">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th>Metadata</th></tr><tr><th colspan="5"><hr /></th></tr>
|
||||
<tr><td valign="top"> </td><td><a href="/online/qtsdkrepository/windows_x86/">Parent Directory</a></td><td> </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_preview/">tools_qt3dstudio_runtime_preview/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_240/">tools_qt3dstudio_runtime_240/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_230/">tools_qt3dstudio_runtime_230/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_220/">tools_qt3dstudio_runtime_220/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime_210/">tools_qt3dstudio_runtime_210/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="tools_qt3dstudio_runtime/">tools_qt3dstudio_runtime/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_51210/">qt5_51210/</a></td><td align="right">09-Nov-2020 09:35 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5152/">qt5_5152/</a></td><td align="right">19-Nov-2020 12:42 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5151/">qt5_5151/</a></td><td align="right">07-Sep-2020 16:38 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5150/">qt5_5150/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5142/">qt5_5142/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5141/">qt5_5141/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5140/">qt5_5140/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5132/">qt5_5132/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5131/">qt5_5131/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5130/">qt5_5130/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5129/">qt5_5129/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_5129-backup-2020-04-23--08:58:55/">qt5_5129-backup-2020-04-23--08:58:55/</a></td><td align="right">23-Apr-2020 11:12 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5128/">qt5_5128/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5127/">qt5_5127/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5126/">qt5_5126/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5125/">qt5_5125/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5124/">qt5_5124/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5123/">qt5_5123/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5122/">qt5_5122/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5121/">qt5_5121/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5120/">qt5_5120/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5113/">qt5_5113/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5112/">qt5_5112/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5111/">qt5_5111/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5110/">qt5_5110/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5101/">qt5_5101/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_5100/">qt5_5100/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_599/">qt5_599/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_598/">qt5_598/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_597/">qt5_597/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_596/">qt5_596/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_595/">qt5_595/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_594/">qt5_594/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_593/">qt5_593/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_592/">qt5_592/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_591/">qt5_591/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_515_preview/">qt5_515_preview/</a></td><td align="right">19-Nov-2020 12:44 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_514_preview/">qt5_514_preview/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_513_preview/">qt5_513_preview/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_512_preview/">qt5_512_preview/</a></td><td align="right">09-Nov-2020 09:43 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-23--08:58:55/">qt5_512_preview-backup-2020-04-23--08:58:55/</a></td><td align="right">23-Apr-2020 11:17 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="./qt5_512_preview-backup-2020-04-22--11:51:53/">qt5_512_preview-backup-2020-04-22--11:51:53/</a></td><td align="right">22-Apr-2020 15:55 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_511_preview/">qt5_511_preview/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_510_preview/">qt5_510_preview/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59_preview/">qt5_59_preview/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><td valign="top"> </td><td><a href="qt5_59/">qt5_59/</a></td><td align="right">24-Aug-2020 13:31 </td><td align="right"> - </td><td> </td></tr>
|
||||
<tr><th colspan="5"><hr /></th></tr>
|
||||
</table>
|
||||
<br/><address><a href="http://mirrorbrain.org/">MirrorBrain</a> powered by <a href="http://httpd.apache.org/">Apache</a></address>
|
||||
</body></html>
|
||||
@@ -78,10 +78,14 @@ def test_cli_invalid_version(capsys, invalid_version):
|
||||
+ r"'! Please use the form '5\.X\.Y'\.\n.*"
|
||||
)
|
||||
|
||||
for cmd in "install", "doc", "list":
|
||||
for cmd in (
|
||||
("install", invalid_version, "mac", "desktop"),
|
||||
("doc", invalid_version, "mac", "desktop"),
|
||||
("list", "qt5", "mac", "desktop", "--modules", invalid_version),
|
||||
):
|
||||
with pytest.raises(SystemExit) as pytest_wrapped_e:
|
||||
cli = aqt.installer.Cli()
|
||||
cli.run([cmd, invalid_version, "mac", "desktop"])
|
||||
cli.run(cmd)
|
||||
assert pytest_wrapped_e.type == SystemExit
|
||||
assert pytest_wrapped_e.value.code == 1
|
||||
out, err = capsys.readouterr()
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import binascii
|
||||
import logging
|
||||
import os
|
||||
|
||||
import requests
|
||||
@@ -82,10 +81,7 @@ def test_helper_downloadBinary_md5(tmp_path, monkeypatch):
|
||||
|
||||
expected = binascii.unhexlify("1d41a93e4a585bb01e4518d4af431933")
|
||||
out = tmp_path.joinpath("text.xml")
|
||||
logger = logging.getLogger(__file__)
|
||||
helper.downloadBinaryFile(
|
||||
"http://example.com/test.xml", out, "md5", expected, 60, logger
|
||||
)
|
||||
helper.downloadBinaryFile("http://example.com/test.xml", out, "md5", expected, 60)
|
||||
|
||||
|
||||
def test_helper_downloadBinary_sha256(tmp_path, monkeypatch):
|
||||
@@ -96,7 +92,6 @@ def test_helper_downloadBinary_sha256(tmp_path, monkeypatch):
|
||||
"07b3ef4606b712923a14816b1cfe9649687e617d030fc50f948920d784c0b1cd"
|
||||
)
|
||||
out = tmp_path.joinpath("text.xml")
|
||||
logger = logging.getLogger(__file__)
|
||||
helper.downloadBinaryFile(
|
||||
"http://example.com/test.xml", out, "sha256", expected, 60, logger
|
||||
"http://example.com/test.xml", out, "sha256", expected, 60
|
||||
)
|
||||
|
||||
234
tests/test_list.py
Normal file
234
tests/test_list.py
Normal file
@@ -0,0 +1,234 @@
|
||||
import json
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
from semantic_version import Version
|
||||
|
||||
from aqt import archives, installer
|
||||
from aqt.archives import ListCommand
|
||||
from aqt.helper import ArchiveId
|
||||
|
||||
MINOR_REGEX = re.compile(r"^\d+\.(\d+)")
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"os_name,target,in_file,expect_out_file",
|
||||
[
|
||||
("windows", "android", "windows-android.html", "windows-android-expect.json"),
|
||||
("windows", "desktop", "windows-desktop.html", "windows-desktop-expect.json"),
|
||||
("windows", "winrt", "windows-winrt.html", "windows-winrt-expect.json"),
|
||||
("linux", "android", "linux-android.html", "linux-android-expect.json"),
|
||||
("linux", "desktop", "linux-desktop.html", "linux-desktop-expect.json"),
|
||||
("mac", "android", "mac-android.html", "mac-android-expect.json"),
|
||||
("mac", "desktop", "mac-desktop.html", "mac-desktop-expect.json"),
|
||||
("mac", "ios", "mac-ios.html", "mac-ios-expect.json"),
|
||||
],
|
||||
)
|
||||
def test_list_versions_tools(monkeypatch, os_name, target, in_file, expect_out_file):
|
||||
_html = (Path(__file__).parent / "data" / in_file).read_text("utf-8")
|
||||
monkeypatch.setattr(archives.ListCommand, "fetch_http", lambda self, _: _html)
|
||||
|
||||
expected = json.loads(
|
||||
(Path(__file__).parent / "data" / expect_out_file).read_text("utf-8")
|
||||
)
|
||||
|
||||
# Test 'aqt list tools'
|
||||
tools = ListCommand(ArchiveId("tools", os_name, target)).action()
|
||||
assert tools.pretty_print() == "\n".join(expected["tools"])
|
||||
|
||||
for qt in ("qt5", "qt6"):
|
||||
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 = ListCommand(archive_id).action()
|
||||
|
||||
if len(expected_output) == 0:
|
||||
assert not all_versions
|
||||
else:
|
||||
assert all_versions.pretty_print() == "\n".join(expected_output)
|
||||
|
||||
# Filter for the latest version only
|
||||
latest_ver = ListCommand(archive_id, is_latest_version=True).action()
|
||||
|
||||
if len(expected_output) == 0:
|
||||
assert not latest_ver
|
||||
else:
|
||||
assert latest_ver.pretty_print() == expected_output[-1].split(" ")[-1]
|
||||
|
||||
for row in expected_output:
|
||||
minor = int(MINOR_REGEX.search(row).group(1))
|
||||
|
||||
# Find the latest version for a particular minor version
|
||||
latest_ver_for_minor = ListCommand(
|
||||
archive_id,
|
||||
filter_minor=minor,
|
||||
is_latest_version=True,
|
||||
).action()
|
||||
assert latest_ver_for_minor.pretty_print() == row.split(" ")[-1]
|
||||
|
||||
# Find all versions for a particular minor version
|
||||
all_ver_for_minor = ListCommand(
|
||||
archive_id,
|
||||
filter_minor=minor,
|
||||
).action()
|
||||
assert all_ver_for_minor.pretty_print() == row
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"version,extension,in_file,expect_out_file",
|
||||
[
|
||||
("5.14.0", "", "windows-5140-update.xml", "windows-5140-expect.json"),
|
||||
("5.15.0", "", "windows-5150-update.xml", "windows-5150-expect.json"),
|
||||
(
|
||||
"5.15.2",
|
||||
"src_doc_examples",
|
||||
"windows-5152-src-doc-example-update.xml",
|
||||
"windows-5152-src-doc-example-expect.json",
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_list_architectures_and_modules(
|
||||
monkeypatch, version: str, extension: str, in_file: str, expect_out_file: str
|
||||
):
|
||||
archive_id = ArchiveId("qt" + version[0], "windows", "desktop", extension)
|
||||
_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")
|
||||
)
|
||||
|
||||
monkeypatch.setattr(archives.ListCommand, "fetch_http", lambda self, _: _xml)
|
||||
|
||||
modules = ListCommand(archive_id).fetch_modules(Version(version))
|
||||
assert modules.strings == expect["modules"]
|
||||
|
||||
arches = ListCommand(archive_id).fetch_arches(Version(version))
|
||||
assert arches.strings == expect["architectures"]
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"host, target, tool_name",
|
||||
[
|
||||
("mac", "desktop", "tools_cmake"),
|
||||
("mac", "desktop", "tools_ifw"),
|
||||
("mac", "desktop", "tools_qtcreator"),
|
||||
],
|
||||
)
|
||||
def test_tool_modules(monkeypatch, host: str, target: str, tool_name: str):
|
||||
archive_id = ArchiveId("tools", host, target)
|
||||
in_file = "{}-{}-{}-update.xml".format(host, target, tool_name)
|
||||
expect_out_file = "{}-{}-{}-expect.json".format(host, target, tool_name)
|
||||
_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")
|
||||
)
|
||||
|
||||
monkeypatch.setattr(archives.ListCommand, "fetch_http", lambda self, _: _xml)
|
||||
|
||||
modules = ListCommand(archive_id).fetch_tool_modules(tool_name)
|
||||
assert modules.strings == expect["modules"]
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"cat, host, target, minor_ver, ver, ext, xmlfile, xmlexpect, htmlfile, htmlexpect",
|
||||
[
|
||||
(
|
||||
"qt5",
|
||||
"windows",
|
||||
"desktop",
|
||||
"14",
|
||||
"5.14.0",
|
||||
"wasm",
|
||||
"windows-5140-update.xml",
|
||||
"windows-5140-expect.json",
|
||||
"windows-desktop.html",
|
||||
"windows-desktop-expect.json",
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_list_cli(
|
||||
capsys,
|
||||
monkeypatch,
|
||||
cat,
|
||||
host,
|
||||
target,
|
||||
minor_ver,
|
||||
ver,
|
||||
ext,
|
||||
xmlfile,
|
||||
xmlexpect,
|
||||
htmlfile,
|
||||
htmlexpect,
|
||||
):
|
||||
def _mock(_, rest_of_url: str) -> str:
|
||||
in_file = xmlfile if rest_of_url.endswith("Updates.xml") else htmlfile
|
||||
text = (Path(__file__).parent / "data" / in_file).read_text("utf-8")
|
||||
if not rest_of_url.endswith("Updates.xml"):
|
||||
return text
|
||||
|
||||
# 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)
|
||||
assert match
|
||||
desired_version = match.group(1)
|
||||
ver_to_replace = ver.replace(".", "")
|
||||
return text.replace(ver_to_replace, desired_version)
|
||||
|
||||
monkeypatch.setattr(archives.ListCommand, "fetch_http", _mock)
|
||||
|
||||
expected_modules_arches = json.loads(
|
||||
(Path(__file__).parent / "data" / xmlexpect).read_text("utf-8")
|
||||
)
|
||||
expect_modules = expected_modules_arches["modules"]
|
||||
expect_arches = expected_modules_arches["architectures"]
|
||||
|
||||
def check_extensions():
|
||||
out, err = capsys.readouterr()
|
||||
# We should probably generate expected from htmlexpect, but this will work for now
|
||||
assert out.strip() == "wasm src_doc_examples"
|
||||
|
||||
def check_modules():
|
||||
out, err = capsys.readouterr()
|
||||
assert set(out.strip().split()) == set(expect_modules)
|
||||
|
||||
def check_arches():
|
||||
out, err = capsys.readouterr()
|
||||
assert set(out.strip().split()) == set(expect_arches)
|
||||
|
||||
_minor = ["--filter-minor", minor_ver]
|
||||
_ext = ["--extension", ext]
|
||||
|
||||
cli = installer.Cli()
|
||||
# Query extensions by latest version, minor version, and specific version
|
||||
cli.run(["list", cat, host, target, "--extensions", "latest"])
|
||||
check_extensions()
|
||||
cli.run(["list", cat, host, target, *_minor, "--extensions", "latest"])
|
||||
check_extensions()
|
||||
cli.run(["list", cat, host, target, "--extensions", ver])
|
||||
check_extensions()
|
||||
# Query modules by latest version, minor version, and specific version
|
||||
cli.run(["list", cat, host, target, "--modules", "latest"])
|
||||
check_modules()
|
||||
cli.run(["list", cat, host, target, *_minor, "--modules", "latest"])
|
||||
check_modules()
|
||||
cli.run(["list", cat, host, target, "--modules", ver])
|
||||
check_modules()
|
||||
cli.run(["list", cat, host, target, *_ext, "--modules", "latest"])
|
||||
check_modules()
|
||||
cli.run(["list", cat, host, target, *_ext, *_minor, "--modules", "latest"])
|
||||
check_modules()
|
||||
cli.run(["list", cat, host, target, *_ext, "--modules", ver])
|
||||
check_modules()
|
||||
# Query architectures by latest version, minor version, and specific version
|
||||
cli.run(["list", cat, host, target, "--arch", "latest"])
|
||||
check_arches()
|
||||
cli.run(["list", cat, host, target, *_minor, "--arch", "latest"])
|
||||
check_arches()
|
||||
cli.run(["list", cat, host, target, "--arch", ver])
|
||||
check_arches()
|
||||
cli.run(["list", cat, host, target, *_ext, "--arch", "latest"])
|
||||
check_arches()
|
||||
cli.run(["list", cat, host, target, *_ext, *_minor, "--arch", "latest"])
|
||||
check_arches()
|
||||
cli.run(["list", cat, host, target, *_ext, "--arch", ver])
|
||||
check_arches()
|
||||
Reference in New Issue
Block a user