Date: Saturday, June 29, 2019 @ 14:20:19 Author: arojas Revision: 357060
Use system mimetype database Added: qtcreator/trunk/qtcreator-mime-database.patch Modified: qtcreator/trunk/PKGBUILD -------------------------------+ PKGBUILD | 9 +++- qtcreator-mime-database.patch | 77 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 3 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2019-06-29 14:18:59 UTC (rev 357059) +++ PKGBUILD 2019-06-29 14:20:19 UTC (rev 357060) @@ -9,7 +9,7 @@ pkgname=qtcreator pkgver=4.9.2 _clangver=8.0.0 -pkgrel=1 +pkgrel=2 pkgdesc='Lightweight, cross-platform integrated development environment' arch=(x86_64) url='https://www.qt.io' @@ -30,10 +30,12 @@ 'perf: performer analyzer') source=("https://download.qt.io/official_releases/qtcreator/${pkgver%.*}/$pkgver/qt-creator-opensource-src-$pkgver.tar.xz" qtcreator-clazy-1.5.patch - qtcreator-preload-plugins.patch) + qtcreator-preload-plugins.patch + qtcreator-mime-database.patch) sha256sums=('b7e0c797e7704c6c22eb35351946c0a758502fd082f6beaee043166e1739d3d7' '1f6998fea92b9a157f42cca783839ce95f70ccc667027078b7881cbb253838f0' - '150c444e76ec969fc8765774b648984037829623300d0ce9d41a915b2afa792d') + '150c444e76ec969fc8765774b648984037829623300d0ce9d41a915b2afa792d' + '8d64b5c28535dcaab910f32e82b04b425253015ca70f379cbe5e9693526a852a') prepare() { mkdir -p build @@ -50,6 +52,7 @@ # see http://code.qt.io/cgit/clang/clang.git/commit/?id=7f349701d3ea0c47be3a43e265699dddd3fd55cf # and https://bugs.archlinux.org/task/59492 patch -p1 -i ../qtcreator-preload-plugins.patch + patch -p1 -i ../qtcreator-mime-database.patch # Use system shared-mime-info } build() { Added: qtcreator-mime-database.patch =================================================================== --- qtcreator-mime-database.patch (rev 0) +++ qtcreator-mime-database.patch 2019-06-29 14:20:19 UTC (rev 357060) @@ -0,0 +1,77 @@ +From e7ef1ad0ba526dd2fc47602e4d45d62adbdbe5db Mon Sep 17 00:00:00 2001 +From: Thiago Macieira <[email protected]> +Date: Fri, 28 Jun 2019 22:46:20 -0700 +Subject: [PATCH] Re-fix QtCore resource path changing and prepare for Qt 5.13 + +Commit 9cf8ab3b3d44ac50a1f8d4893d8f70b8aedb18b0 added the #ifdef, but +that of course only works if you don't upgrade Qt compared to what Qt +Creator was compiled with. Instead, attempt both paths and only do that +if the system copy is not found. + +Searching the system copy is required to address Qt 5.13's configure +option -no-mimetype-database (used by Linux distributions because the +system copy is always present). + +This code will still need work to deal with Qt 5.14 changes. + +Task-number: QTCREATORBUG-19600 +Task-number: QTCREATORBUG-22636 +Change-Id: I6aed4df6a12e43c3ac8efffd15ac952a6e9d4770 +--- + +diff --git a/src/libs/utils/mimetypes/mimeprovider.cpp b/src/libs/utils/mimetypes/mimeprovider.cpp +index d444aa8..ce94215 100644 +--- a/src/libs/utils/mimetypes/mimeprovider.cpp ++++ b/src/libs/utils/mimetypes/mimeprovider.cpp +@@ -784,32 +784,25 @@ + { + if (!m_loaded /*|| shouldCheck()*/) { + m_loaded = true; +-// bool fdoXmlFound = false; +- QStringList allFiles; ++ QStringList allFiles = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, ++ QStringLiteral("mime/packages/freedesktop.org.xml"), ++ QStandardPaths::LocateFile); + +-// const QStringList packageDirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QLatin1String("mime/packages"), QStandardPaths::LocateDirectory); +-// //qDebug() << "packageDirs=" << packageDirs; +-// for (const QString &packageDir : packageDirs) { +-// QDir dir(packageDir); +-// const QStringList files = dir.entryList(QDir::Files | QDir::NoDotAndDotDot); +-// //qDebug() << static_cast<const void *>(this) << packageDir << files; +-// if (!fdoXmlFound) +-// fdoXmlFound = files.contains(QLatin1String("freedesktop.org.xml")); +-// QStringList::const_iterator endIt(files.constEnd()); +-// for (QStringList::const_iterator it(files.constBegin()); it != endIt; ++it) { +-// allFiles.append(packageDir + QLatin1Char('/') + *it); +-// } +-// } +- +-// if (!fdoXmlFound) { +-// // We could instead install the file as part of installing Qt? +-#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)) +- const char freedesktopOrgXml[] = ":/qt-project.org/qmime/packages/freedesktop.org.xml"; +-#else +- const char freedesktopOrgXml[] = ":/qt-project.org/qmime/freedesktop.org.xml"; +-#endif +- allFiles.prepend(QLatin1String(freedesktopOrgXml)); +-// } ++ if (allFiles.isEmpty()) { ++ // System freedsktop.org.xml file not found, try to use the one in QtCore. ++ // This is private API and has changed in the past: ++ // - Qt 5.11 added "package" subdir in 7a5644d6481a3c1a7416772998ca4e60c977bfbd ++ // - Qt 5.13 added an option to not bundle it at all ++ const QString fdoXml5_11 = QStringLiteral(":/qt-project.org/qmime/packages/freedesktop.org.xml"); ++ const QString fdoXmlPre5_11 = QStringLiteral(":/qt-project.org/qmime/freedesktop.org.xml"); ++ if (QFile::exists(fdoXml5_11)) ++ allFiles << fdoXml5_11; ++ else if (QFile::exists(fdoXmlPre5_11)) ++ allFiles << fdoXmlPre5_11; ++ else ++ qFatal("Utils::MimeXMLProvider: could not find the system freedesktop.org.xml file " ++ "and QtCore does not have an accessible copy."); ++ } + + m_nameMimeTypeMap.clear(); + m_aliases.clear(); +
