Qmake: Use FilePath in QtVersion::reportIssues

Change-Id: Ia848248525238c316d6f6f120d915b9bdb28b8fe
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2023-01-11 15:46:28 +01:00
parent ccb6176a33
commit 44a9f5a63a
9 changed files with 24 additions and 26 deletions

View File

@@ -643,8 +643,8 @@ BuildConfigurationFactory::~BuildConfigurationFactory()
g_buildConfigurationFactories.removeOne(this); g_buildConfigurationFactories.removeOne(this);
} }
const Tasks BuildConfigurationFactory::reportIssues(ProjectExplorer::Kit *kit, const QString &projectPath, const Tasks BuildConfigurationFactory::reportIssues(Kit *kit, const FilePath &projectPath,
const QString &buildDir) const const FilePath &buildDir) const
{ {
if (m_issueReporter) if (m_issueReporter)
return m_issueReporter(kit, projectPath, buildDir); return m_issueReporter(kit, projectPath, buildDir);

View File

@@ -155,10 +155,12 @@ public:
static BuildConfigurationFactory *find(const Kit *k, const Utils::FilePath &projectPath); static BuildConfigurationFactory *find(const Kit *k, const Utils::FilePath &projectPath);
static BuildConfigurationFactory *find(Target *parent); static BuildConfigurationFactory *find(Target *parent);
using IssueReporter = std::function<Tasks(Kit *, const QString &, const QString &)>; using IssueReporter
= std::function<Tasks(Kit *, const Utils::FilePath &, const Utils::FilePath &)>;
void setIssueReporter(const IssueReporter &issueReporter); void setIssueReporter(const IssueReporter &issueReporter);
const Tasks reportIssues(ProjectExplorer::Kit *kit, const Tasks reportIssues(ProjectExplorer::Kit *kit,
const QString &projectPath, const QString &buildDir) const; const Utils::FilePath &projectPath,
const Utils::FilePath &buildDir) const;
protected: protected:
using BuildGenerator using BuildGenerator

View File

@@ -340,10 +340,9 @@ QPair<Task::TaskType, QString> TargetSetupWidget::findIssues(const BuildInfo &in
if (m_projectPath.isEmpty() || !info.factory) if (m_projectPath.isEmpty() || !info.factory)
return {Task::Unknown, {}}; return {Task::Unknown, {}};
QString buildDir = info.buildDirectory.toString();
Tasks issues; Tasks issues;
if (info.factory) if (info.factory)
issues = info.factory->reportIssues(m_kit, m_projectPath.toString(), buildDir); issues = info.factory->reportIssues(m_kit, m_projectPath, info.buildDirectory);
QString text; QString text;
Task::TaskType highestType = Task::Unknown; Task::TaskType highestType = Task::Unknown;

View File

@@ -324,10 +324,9 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory()
registerBuildConfiguration<QbsBuildConfiguration>(Constants::QBS_BC_ID); registerBuildConfiguration<QbsBuildConfiguration>(Constants::QBS_BC_ID);
setSupportedProjectType(Constants::PROJECT_ID); setSupportedProjectType(Constants::PROJECT_ID);
setSupportedProjectMimeTypeName(Constants::MIME_TYPE); setSupportedProjectMimeTypeName(Constants::MIME_TYPE);
setIssueReporter([](Kit *k, const QString &projectPath, const QString &buildDir) -> Tasks { setIssueReporter([](Kit *k, const FilePath &projectPath, const FilePath &buildDir) -> Tasks {
const QtSupport::QtVersion * const version = QtSupport::QtKitAspect::qtVersion(k); const QtSupport::QtVersion * const version = QtSupport::QtKitAspect::qtVersion(k);
return version ? version->reportIssues(projectPath, buildDir) return version ? version->reportIssues(projectPath, buildDir) : Tasks();
: Tasks();
}); });
setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) { setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) {

View File

@@ -226,7 +226,6 @@ void QmakeBuildConfiguration::kitChanged()
void QmakeBuildConfiguration::updateProblemLabel() void QmakeBuildConfiguration::updateProblemLabel()
{ {
ProjectExplorer::Kit * const k = kit(); ProjectExplorer::Kit * const k = kit();
const QString proFileName = project()->projectFilePath().toString();
// Check for Qt version: // Check for Qt version:
QtSupport::QtVersion *version = QtSupport::QtKitAspect::qtVersion(k); QtSupport::QtVersion *version = QtSupport::QtKitAspect::qtVersion(k);
@@ -274,7 +273,7 @@ void QmakeBuildConfiguration::updateProblemLabel()
if (allGood) { if (allGood) {
const Tasks issues = Utils::sorted( const Tasks issues = Utils::sorted(
version->reportIssues(proFileName, buildDirectory().toString())); version->reportIssues(project()->projectFilePath(), buildDirectory()));
if (!issues.isEmpty()) { if (!issues.isEmpty()) {
QString text = QLatin1String("<nobr>"); QString text = QLatin1String("<nobr>");
for (const ProjectExplorer::Task &task : issues) { for (const ProjectExplorer::Task &task : issues) {
@@ -376,16 +375,15 @@ QString QmakeBuildConfiguration::unalignedBuildDirWarning()
return Tr::tr("The build directory should be at the same level as the source directory."); return Tr::tr("The build directory should be at the same level as the source directory.");
} }
bool QmakeBuildConfiguration::isBuildDirAtSafeLocation(const QString &sourceDir, bool QmakeBuildConfiguration::isBuildDirAtSafeLocation(const FilePath &sourceDir,
const QString &buildDir) const FilePath &buildDir)
{ {
return buildDir.count('/') == sourceDir.count('/'); return buildDir.path().count('/') == sourceDir.path().count('/');
} }
bool QmakeBuildConfiguration::isBuildDirAtSafeLocation() const bool QmakeBuildConfiguration::isBuildDirAtSafeLocation() const
{ {
return isBuildDirAtSafeLocation(project()->projectDirectory().toString(), return isBuildDirAtSafeLocation(project()->projectDirectory(), buildDirectory());
buildDirectory().toString());
} }
TriState QmakeBuildConfiguration::separateDebugInfo() const TriState QmakeBuildConfiguration::separateDebugInfo() const
@@ -749,14 +747,14 @@ QmakeBuildConfigurationFactory::QmakeBuildConfigurationFactory()
registerBuildConfiguration<QmakeBuildConfiguration>(Constants::QMAKE_BC_ID); registerBuildConfiguration<QmakeBuildConfiguration>(Constants::QMAKE_BC_ID);
setSupportedProjectType(Constants::QMAKEPROJECT_ID); setSupportedProjectType(Constants::QMAKEPROJECT_ID);
setSupportedProjectMimeTypeName(Constants::PROFILE_MIMETYPE); setSupportedProjectMimeTypeName(Constants::PROFILE_MIMETYPE);
setIssueReporter([](Kit *k, const QString &projectPath, const QString &buildDir) { setIssueReporter([](Kit *k, const FilePath &projectPath, const FilePath &buildDir) {
QtSupport::QtVersion *version = QtSupport::QtKitAspect::qtVersion(k); QtSupport::QtVersion *version = QtSupport::QtKitAspect::qtVersion(k);
Tasks issues; Tasks issues;
if (version) if (version)
issues << version->reportIssues(projectPath, buildDir); issues << version->reportIssues(projectPath, buildDir);
if (QmakeSettings::warnAgainstUnalignedBuildDir() if (QmakeSettings::warnAgainstUnalignedBuildDir()
&& !QmakeBuildConfiguration::isBuildDirAtSafeLocation( && !QmakeBuildConfiguration::isBuildDirAtSafeLocation(
QFileInfo(projectPath).absoluteDir().path(), QDir(buildDir).absolutePath())) { projectPath.absolutePath(), buildDir.absoluteFilePath())) {
issues.append(BuildSystemTask(Task::Warning, issues.append(BuildSystemTask(Task::Warning,
QmakeBuildConfiguration::unalignedBuildDirWarning())); QmakeBuildConfiguration::unalignedBuildDirWarning()));
} }

View File

@@ -72,7 +72,8 @@ public:
void addToEnvironment(Utils::Environment &env) const override; void addToEnvironment(Utils::Environment &env) const override;
static QString unalignedBuildDirWarning(); static QString unalignedBuildDirWarning();
static bool isBuildDirAtSafeLocation(const QString &sourceDir, const QString &buildDir); static bool isBuildDirAtSafeLocation(const Utils::FilePath &sourceDir,
const Utils::FilePath &buildDir);
bool isBuildDirAtSafeLocation() const; bool isBuildDirAtSafeLocation() const;
Utils::TriState separateDebugInfo() const; Utils::TriState separateDebugInfo() const;

View File

@@ -240,10 +240,8 @@ bool QMakeStep::init()
if (qmakeBc->subNodeBuild()) if (qmakeBc->subNodeBuild())
node = qmakeBc->subNodeBuild(); node = qmakeBc->subNodeBuild();
QTC_ASSERT(node, return false); QTC_ASSERT(node, return false);
QString proFile = node->filePath().toString();
const Tasks tasks = Utils::sorted( const Tasks tasks = Utils::sorted(qtVersion->reportIssues(node->filePath(), workingDirectory));
qtVersion->reportIssues(proFile, workingDirectory.toString()));
if (!tasks.isEmpty()) { if (!tasks.isEmpty()) {
bool canContinue = true; bool canContinue = true;
for (const Task &t : tasks) { for (const Task &t : tasks) {

View File

@@ -1637,7 +1637,7 @@ bool QtVersion::hasQmlDumpWithRelocatableFlag() const
|| qtVersion() >= QVersionNumber(5, 1, 0)); || qtVersion() >= QVersionNumber(5, 1, 0));
} }
Tasks QtVersion::reportIssuesImpl(const QString &proFile, const QString &buildDir) const Tasks QtVersion::reportIssuesImpl(const FilePath &proFile, const FilePath &buildDir) const
{ {
Q_UNUSED(proFile) Q_UNUSED(proFile)
Q_UNUSED(buildDir) Q_UNUSED(buildDir)
@@ -1665,7 +1665,7 @@ bool QtVersion::supportsMultipleQtAbis() const
return false; return false;
} }
Tasks QtVersion::reportIssues(const QString &proFile, const QString &buildDir) const Tasks QtVersion::reportIssues(const FilePath &proFile, const FilePath &buildDir) const
{ {
return Utils::sorted(reportIssuesImpl(proFile, buildDir)); return Utils::sorted(reportIssuesImpl(proFile, buildDir));
} }

View File

@@ -131,7 +131,7 @@ public:
/// Check a .pro-file/Qt version combination on possible issues /// Check a .pro-file/Qt version combination on possible issues
/// @return a list of tasks, ordered on severity (errors first, then /// @return a list of tasks, ordered on severity (errors first, then
/// warnings and finally info items. /// warnings and finally info items.
ProjectExplorer::Tasks reportIssues(const QString &proFile, const QString &buildDir) const; ProjectExplorer::Tasks reportIssues(const Utils::FilePath &proFile, const Utils::FilePath &buildDir) const;
static bool isQmlDebuggingSupported(const ProjectExplorer::Kit *k, QString *reason = nullptr); static bool isQmlDebuggingSupported(const ProjectExplorer::Kit *k, QString *reason = nullptr);
bool isQmlDebuggingSupported(QString *reason = nullptr) const; bool isQmlDebuggingSupported(QString *reason = nullptr) const;
@@ -198,7 +198,8 @@ protected:
QtVersion(const QtVersion &other) = delete; QtVersion(const QtVersion &other) = delete;
virtual QSet<Utils::Id> availableFeatures() const; virtual QSet<Utils::Id> availableFeatures() const;
virtual ProjectExplorer::Tasks reportIssuesImpl(const QString &proFile, const QString &buildDir) const; virtual ProjectExplorer::Tasks reportIssuesImpl(const Utils::FilePath &proFile,
const Utils::FilePath &buildDir) const;
virtual ProjectExplorer::Abis detectQtAbis() const; virtual ProjectExplorer::Abis detectQtAbis() const;