Python: read installer settings for pyside wheel requirement

This should be more stable than relying on a specific folder structure
in the Qt Package.

Change-Id: I20dea176df43c9f6e768f4db69ac4eb70633f01a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2023-09-08 13:31:41 +02:00
parent 071416fde3
commit b9e327bb10

View File

@@ -86,17 +86,36 @@ void PySideInstaller::installPyside(const FilePath &python,
{ {
QMap<QVersionNumber, Utils::FilePath> availablePySides; QMap<QVersionNumber, Utils::FilePath> availablePySides;
const std::optional<FilePath> qtInstallDir const Utils::QtcSettings *settings = Core::ICore::settings(QSettings::SystemScope);
= QtSupport::LinkWithQtSupport::linkedQt().tailRemoved("Tools/sdktool/share/qtcreator");
if (qtInstallDir) { const FilePaths requirementsList
const FilePath qtForPythonDir = qtInstallDir->pathAppended("QtForPython"); = Utils::transform(settings->value("Python/PySideWheelsRequirements").toList(),
for (const FilePath &versionDir : qtForPythonDir.dirEntries(QDir::Dirs | QDir::NoDotAndDotDot)) { &FilePath::fromSettings);
FilePath requirements = versionDir.pathAppended("requirements.txt"); for (const FilePath &requirements : requirementsList) {
if (requirements.exists()) if (requirements.exists()) {
availablePySides[QVersionNumber::fromString(versionDir.fileName())] = requirements; auto version = QVersionNumber::fromString(requirements.parentDir().fileName());
availablePySides[version] = requirements;
} }
} }
if (requirementsList.isEmpty()) { // fallback remove in Qt Creator 13
const QString hostQtTail = HostOsInfo::isMacHost()
? QString("Tools/sdktool")
: QString("Tools/sdktool/share/qtcreator");
const std::optional<FilePath> qtInstallDir
= QtSupport::LinkWithQtSupport::linkedQt().tailRemoved(hostQtTail);
if (qtInstallDir) {
const FilePath qtForPythonDir = qtInstallDir->pathAppended("QtForPython");
for (const FilePath &versionDir :
qtForPythonDir.dirEntries(QDir::Dirs | QDir::NoDotAndDotDot)) {
FilePath requirements = versionDir.pathAppended("requirements.txt");
if (!requirementsList.contains(requirements) && requirements.exists())
availablePySides[QVersionNumber::fromString(versionDir.fileName())]
= requirements;
}
}
}
auto install = new PipInstallTask(python); auto install = new PipInstallTask(python);
connect(install, &PipInstallTask::finished, install, &QObject::deleteLater); connect(install, &PipInstallTask::finished, install, &QObject::deleteLater);