ref #652 fix case sensitivity of checked libraries

This commit is contained in:
Andrei Yankovich 2021-08-31 11:42:45 +03:00
parent 65a765fed3
commit f7576405e6
10 changed files with 79 additions and 60 deletions

View File

@ -221,7 +221,7 @@ bool iDistribution::collectInfo(const DistroModule& pkg,
bashShortCutsArray += "\"" + targetInfo.getRunScriptFile() + "\"";
}
if (fileinfo.suffix().compare("exe", ONLY_WIN_CASE_INSENSIATIVE) == 0 || fileinfo.suffix().isEmpty()) {
if (fileinfo.suffix().compare("exe", Qt::CaseInsensitive) == 0 || fileinfo.suffix().isEmpty()) {
if (cmdArray.size() > initSize) {
cmdArray += ",";
bashArray += " ";

View File

@ -149,7 +149,7 @@ void DependenciesScanner::recursiveDep(LibInfo &lib, QSet<LibInfo> &res, QSet<QS
if (!scanedLib.isValid()) {
QSet<LibInfo> listDep = {};
if (!lib._name.compare(dep.value()._name, ONLY_WIN_CASE_INSENSIATIVE))
if (!lib._name.compare(dep.value()._name, DeployCore::getCaseSensitivity(lib._name)))
continue;
recursiveDep(*dep, listDep, libStack);

View File

@ -14,12 +14,6 @@
#define DISTRO_DIR QString("DistributionKit")
#ifdef Q_OS_WIN
#define ONLY_WIN_CASE_INSENSIATIVE Qt::CaseInsensitive
#else
#define ONLY_WIN_CASE_INSENSIATIVE Qt::CaseSensitive
#endif
#if defined(DEPLOY_LIBRARY)
# define DEPLOYSHARED_EXPORT Q_DECL_EXPORT
#else

View File

@ -589,7 +589,7 @@ QString DeployCore::findProcess(const QString &env, const QString& proc) {
auto files = QDir(path).entryInfoList(QDir::NoDotAndDotDot | QDir::Files);
for (const auto& bin : files) {
if (bin.baseName().compare(proc, ONLY_WIN_CASE_INSENSIATIVE) == 0) {
if (bin.baseName().compare(proc, DeployCore::getCaseSensitivity()) == 0) {
return bin.absoluteFilePath();
}
}
@ -605,7 +605,7 @@ QStringList DeployCore::debugExtensions() {
bool DeployCore::isDebugFile(const QString &file) {
auto debug = debugExtensions();
for (const auto& debugEx: debug) {
if (file.contains(debugEx, ONLY_WIN_CASE_INSENSIATIVE)) {
if (file.contains(debugEx, Qt::CaseInsensitive)) {
return true;
}
}
@ -752,11 +752,11 @@ QtMajorVersion DeployCore::isQtLibName(const QString &lib) {
}
QString fileName = info.fileName();
if (fileName.contains("Qt4", ONLY_WIN_CASE_INSENSIATIVE)) {
if (fileName.contains("Qt4", getCaseSensitivity(fileName))) {
isQt = QtMajorVersion::Qt4;
} else if (fileName.contains("Qt5", ONLY_WIN_CASE_INSENSIATIVE)) {
} else if (fileName.contains("Qt5", getCaseSensitivity(fileName))) {
isQt = QtMajorVersion::Qt5;
} else if (fileName.contains("Qt6", ONLY_WIN_CASE_INSENSIATIVE)) {
} else if (fileName.contains("Qt6", getCaseSensitivity(fileName))) {
isQt = QtMajorVersion::Qt6;
}
@ -774,8 +774,8 @@ bool DeployCore::isExtraLib(const QString &lib) {
}
bool DeployCore::isAlienLib(const QString &lib) {
return lib.contains("/opt/", ONLY_WIN_CASE_INSENSIATIVE) ||
lib.contains("/PROGRAM FILES", ONLY_WIN_CASE_INSENSIATIVE);
return lib.contains("/opt/", Qt::CaseSensitive) ||
lib.contains("/PROGRAM FILES", Qt::CaseInsensitive);
}
bool DeployCore::isAllowedLib(const QString &lib) {
@ -920,6 +920,25 @@ QFileInfo DeployCore::findItem(const QString &bin) {
}
return QFileInfo(bin);
}
Qt::CaseSensitivity DeployCore::getCaseSensitivity(const QString &checkedFile) {
if (checkedFile.isEmpty()) {
#ifdef Q_OS_WIN
return Qt::CaseInsensitive;
#else
return Qt::CaseSensitive;
#endif
}
QString sufix = QFileInfo(checkedFile).completeSuffix();
if (sufix.compare("dll", Qt::CaseInsensitive) == 0 ||
sufix.compare("exe", Qt::CaseInsensitive)) {
return Qt::CaseInsensitive;
}
return Qt::CaseSensitive;
};
QString DeployCore::systemLibsFolderName() {

View File

@ -303,6 +303,12 @@ public:
*/
static QFileInfo findItem(const QString &file);
/**
* @brief getCaseSensitivity This method return case sensitivity for a @a checkedFile. Usualy return Qt::CaseSensiativy exept windows binaryes files like a dll and exe.
* @param checkedFile This is checked file. By default empty value.
* @return Qt CaseSensitivity value
*/
static Qt::CaseSensitivity getCaseSensitivity(const QString& checkedFile = "");
};
#define internalError() DeployCore::printInternalError(__FUNCTION__, __FILE__, __LINE__)

View File

@ -390,7 +390,7 @@ void Extracter::extractLib(const QString &file,
for (const auto &line : data.getAllDep()) {
if (mask.size() && !line.getName().contains(mask, ONLY_WIN_CASE_INSENSIATIVE)) {
if (mask.size() && !line.getName().contains(mask, DeployCore::getCaseSensitivity())) {
continue;
}

View File

@ -178,7 +178,7 @@ bool FileManager::fileActionPrivate(const QString &file, const QString &target,
bool copy = !masks;
if (masks) {
for (const auto &mask : qAsConst(*masks)) {
if (info.absoluteFilePath().contains(mask, ONLY_WIN_CASE_INSENSIATIVE)) {
if (info.absoluteFilePath().contains(mask, DeployCore::getCaseSensitivity())) {
copy = true;
break;
}
@ -263,7 +263,7 @@ bool FileManager::smartCopyFile(const QString &file,
bool ifFileTarget) {
auto config = DeployCore::_config;
if (file.contains(config->getTargetDir(), ONLY_WIN_CASE_INSENSIATIVE)) {
if (file.contains(config->getTargetDir(), DeployCore::getCaseSensitivity())) {
if (!moveFile(file, target, mask)) {
QuasarAppUtils::Params::log("Failed to move the file. Trying to copy it");
@ -309,7 +309,7 @@ bool FileManager::copyFolder(const QString &from,
if (!force) {
QString skipFilter = "";
for (const auto &i: filter) {
if (item.fileName().contains(i, ONLY_WIN_CASE_INSENSIATIVE)) {
if (item.fileName().contains(i, DeployCore::getCaseSensitivity())) {
skipFilter = i;
break;
}
@ -496,7 +496,7 @@ bool FileManager::copyFiles(const QStringList &source,
QString skipFilter = "";
for (const auto &i: filter) {
if (info.fileName().contains(i, ONLY_WIN_CASE_INSENSIATIVE)) {
if (info.fileName().contains(i, DeployCore::getCaseSensitivity())) {
skipFilter = i;
break;
}

View File

@ -27,7 +27,7 @@ void IgnoreRule::addRule(const IgnoreData &rule) {
}
bool IgnoreRule::check(const LibInfo &info, const QString& ignoreLabel) const {
if (info.fullPath().contains(ignoreLabel, ONLY_WIN_CASE_INSENSIATIVE)) {
if (info.fullPath().contains(ignoreLabel, DeployCore::getCaseSensitivity())) {
QuasarAppUtils::Params::log(info.fullPath() + " ignored by filter" + ignoreLabel);
return true;
}

View File

@ -86,11 +86,11 @@ bool QtDir::isQt(QString path) const {
path = PathUtils::fixPath(path);
return
(!libs.isEmpty() && path.contains(libs, ONLY_WIN_CASE_INSENSIATIVE)) ||
(!bins.isEmpty() && path.contains(bins, ONLY_WIN_CASE_INSENSIATIVE)) ||
(!libexecs.isEmpty() && path.contains(libexecs, ONLY_WIN_CASE_INSENSIATIVE)) ||
(!plugins.isEmpty() && path.contains(plugins, ONLY_WIN_CASE_INSENSIATIVE)) ||
(!qmls.isEmpty() && path.contains(qmls, ONLY_WIN_CASE_INSENSIATIVE)) ||
(!translations.isEmpty() && path.contains(translations, ONLY_WIN_CASE_INSENSIATIVE)) ||
(!resources.isEmpty() && path.contains(resources, ONLY_WIN_CASE_INSENSIATIVE));
(!libs.isEmpty() && path.contains(libs, DeployCore::getCaseSensitivity())) ||
(!bins.isEmpty() && path.contains(bins, DeployCore::getCaseSensitivity())) ||
(!libexecs.isEmpty() && path.contains(libexecs, DeployCore::getCaseSensitivity())) ||
(!plugins.isEmpty() && path.contains(plugins, DeployCore::getCaseSensitivity())) ||
(!qmls.isEmpty() && path.contains(qmls, DeployCore::getCaseSensitivity())) ||
(!translations.isEmpty() && path.contains(translations, DeployCore::getCaseSensitivity())) ||
(!resources.isEmpty() && path.contains(resources, DeployCore::getCaseSensitivity()));
}

View File

@ -20,7 +20,7 @@ ModulesQt513::~ModulesQt513() {
QSet<QString> ModulesQt513::ignoreFilter(const QSet<QString> &input, const QString &filter) const {
QSet<QString> res;
for (auto& val : input) {
if (!val.contains(filter, ONLY_WIN_CASE_INSENSIATIVE)) {
if (!val.contains(filter, DeployCore::getCaseSensitivity())) {
res.insert(val);
}
}