Skip to content

Commit

Permalink
CMake: Use FilePath in FileApi{Reader,Parser}
Browse files Browse the repository at this point in the history
Helps docker.

Change-Id: I2e1eba61be983340260211bbee6c1bab8a59f883
Reviewed-by: Cristian Adam <[email protected]>
  • Loading branch information
hjk authored and h4tr3d committed Jul 8, 2021
1 parent 3a60e63 commit b4c99a0
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 21 deletions.
20 changes: 8 additions & 12 deletions fileapiparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ static std::pair<QString, QString> nameValue(const QJsonObject &obj)
static QJsonDocument readJsonFile(const FilePath &filePath)
{
qCDebug(cmakeFileApi) << "readJsonFile:" << filePath;
QTC_ASSERT(!filePath.isEmpty(), return {});

QTC_CHECK(!filePath.needsDevice());

Expand Down Expand Up @@ -824,21 +825,17 @@ FilePath FileApiDetails::ReplyFileContents::jsonFile(const QString &kind, const

bool FileApiParser::setupCMakeFileApi(const FilePath &buildDirectory, Utils::FileSystemWatcher &watcher)
{
const QDir buildDir = QDir(buildDirectory.toString());
buildDir.mkpath(
QString::fromLatin1(CMAKE_RELATIVE_REPLY_PATH)); // So that we have a directory to watch!
// So that we have a directory to watch.
buildDirectory.pathAppended(CMAKE_RELATIVE_REPLY_PATH).ensureWritableDir();

const QString relativeQueryPath = QString::fromLatin1(CMAKE_RELATIVE_QUERY_PATH);
buildDir.mkpath(relativeQueryPath);

QDir queryDir = buildDir;
queryDir.cd(relativeQueryPath);
FilePath queryDir = buildDirectory.pathAppended(CMAKE_RELATIVE_QUERY_PATH);
queryDir.ensureWritableDir();

if (!queryDir.exists()) {
reportFileApiSetupFailure();
return false;
}
QTC_ASSERT(queryDir.exists(), );
QTC_ASSERT(queryDir.exists(), return false);

bool failedBefore = false;
for (const FilePath &filePath : cmakeQueryFilePaths(buildDirectory)) {
Expand Down Expand Up @@ -971,10 +968,9 @@ FilePath FileApiParser::scanForCMakeReplyFile(const FilePath &buildDirectory)

FilePaths FileApiParser::cmakeQueryFilePaths(const FilePath &buildDirectory)
{
QTC_CHECK(!buildDirectory.needsDevice());
QDir queryDir(QDir::cleanPath(buildDirectory.pathAppended(CMAKE_RELATIVE_QUERY_PATH).path()));
FilePath queryDir = buildDirectory / CMAKE_RELATIVE_QUERY_PATH;
return transform(CMAKE_QUERY_FILENAMES, [&queryDir](const QString &name) {
return FilePath::fromString(queryDir.absoluteFilePath(name));
return queryDir.absoluteFilePath(FilePath::fromString(name));
});
}

Expand Down
12 changes: 3 additions & 9 deletions fileapireader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
#include <utils/algorithm.h>
#include <utils/runextensions.h>

#include <QDateTime>
#include <QLoggingCategory>

using namespace ProjectExplorer;
Expand Down Expand Up @@ -332,11 +331,7 @@ void FileApiReader::makeBackupConfiguration(bool store)
void FileApiReader::writeConfigurationIntoBuildDirectory(const QStringList &configurationArguments)
{
const FilePath buildDir = m_parameters.buildDirectory;
QTC_ASSERT(buildDir.exists(), buildDir.ensureWritableDir());
if (!buildDir.exists())
buildDir.ensureWritableDir();

const FilePath settingsFile = buildDir.pathAppended("qtcsettings.cmake");
QTC_CHECK(buildDir.ensureWritableDir());

QByteArray contents;
contents.append("# This file is managed by Qt Creator, do not edit!\n\n");
Expand All @@ -348,9 +343,8 @@ void FileApiReader::writeConfigurationIntoBuildDirectory(const QStringList &conf
.join('\n')
.toUtf8());

QFile file(settingsFile.toString());
QTC_ASSERT(file.open(QFile::WriteOnly | QFile::Truncate), return );
file.write(contents);
const FilePath settingsFile = buildDir / "qtcsettings.cmake";
QTC_CHECK(settingsFile.writeFileContents(contents));
}

void FileApiReader::startCMakeState(const QStringList &configurationArguments)
Expand Down

0 comments on commit b4c99a0

Please sign in to comment.