commit:     aa3dc65bd445253a820d7e65bd4c10e395eb4e71
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Jan  4 18:41:42 2025 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Jan  4 18:47:38 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=aa3dc65b

dev-db/qt5-sqlcipher: Update for Qt 5.15.16

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 .../files/qt5-sqlcipher-1.0.11-qt-5.15.16.patch    | 92 ++++++++++++++++++++++
 ...11-r1.ebuild => qt5-sqlcipher-1.0.11-r2.ebuild} | 13 ++-
 2 files changed, 98 insertions(+), 7 deletions(-)

diff --git a/dev-db/qt5-sqlcipher/files/qt5-sqlcipher-1.0.11-qt-5.15.16.patch 
b/dev-db/qt5-sqlcipher/files/qt5-sqlcipher-1.0.11-qt-5.15.16.patch
new file mode 100644
index 000000000000..24277405fdbb
--- /dev/null
+++ b/dev-db/qt5-sqlcipher/files/qt5-sqlcipher-1.0.11-qt-5.15.16.patch
@@ -0,0 +1,92 @@
+--- qt5-sqlcipher-1.0.11/qt-file-cache/5.15.16/qsql_sqlite.cpp
++++ qt5-sqlcipher-1.0.11/qt-file-cache/5.15.16/qsql_sqlite.cpp
+@@ -74,13 +74,18 @@
+ 
+ QT_BEGIN_NAMESPACE
+ 
+-static QString _q_escapeIdentifier(const QString &identifier)
++static QString _q_escapeIdentifier(const QString &identifier, 
QSqlDriver::IdentifierType type)
+ {
+     QString res = identifier;
++    // If it contains [ and ] then we assume it to be escaped properly 
already as this indicates
++    // the syntax is exactly how it should be
++    if (identifier.contains(QLatin1Char('[')) && 
identifier.contains(QLatin1Char(']')))
++        return res;
+     if (!identifier.isEmpty() && !identifier.startsWith(QLatin1Char('"')) && 
!identifier.endsWith(QLatin1Char('"'))) {
+         res.replace(QLatin1Char('"'), QLatin1String("\"\""));
+         res.prepend(QLatin1Char('"')).append(QLatin1Char('"'));
+-        res.replace(QLatin1Char('.'), QLatin1String("\".\""));
++        if (type == QSqlDriver::TableName)
++            res.replace(QLatin1Char('.'), QLatin1String("\".\""));
+     }
+     return res;
+ }
+@@ -478,7 +483,12 @@
+         for (int i = 0, currentIndex = 0; i < values.size(); ++i) {
+             if (handledIndexes.contains(i))
+                 continue;
+-            const auto placeHolder = 
QString::fromUtf8(sqlite3_bind_parameter_name(d->stmt, currentIndex + 1));
++            const char *parameterName = sqlite3_bind_parameter_name(d->stmt, 
currentIndex + 1);
++            if (!parameterName) {
++                paramCountIsValid = false;
++                continue;
++            }
++            const auto placeHolder = QString::fromUtf8(parameterName);
+             const auto &indexes = d->indexes.value(placeHolder);
+             handledIndexes << indexes;
+             prunedValues << values.at(indexes.first());
+@@ -491,7 +501,7 @@
+     if (paramCountIsValid) {
+         for (int i = 0; i < paramCount; ++i) {
+             res = SQLITE_OK;
+-            const QVariant value = values.at(i);
++            const QVariant &value = values.at(i);
+ 
+             if (value.isNull()) {
+                 res = sqlite3_bind_null(d->stmt, i + 1);
+@@ -900,13 +910,24 @@
+ {
+     QString schema;
+     QString table(tableName);
+-    int indexOfSeparator = tableName.indexOf(QLatin1Char('.'));
++    const int indexOfSeparator = tableName.indexOf(QLatin1Char('.'));
+     if (indexOfSeparator > -1) {
+-        schema = tableName.left(indexOfSeparator).append(QLatin1Char('.'));
+-        table = tableName.mid(indexOfSeparator + 1);
++        const int indexOfCloseBracket = tableName.indexOf(QLatin1Char(']'));
++        if (indexOfCloseBracket != tableName.size() - 1) {
++            // Handles a case like databaseName.tableName
++            schema = tableName.left(indexOfSeparator + 1);
++            table = tableName.mid(indexOfSeparator + 1);
++        } else {
++            const int indexOfOpenBracket = 
tableName.lastIndexOf(QLatin1Char('['), indexOfCloseBracket);
++            if (indexOfOpenBracket > 0) {
++                // Handles a case like databaseName.[tableName]
++                schema = tableName.left(indexOfOpenBracket);
++                table = tableName.mid(indexOfOpenBracket);
++            }
++        }
+     }
+-    q.exec(QLatin1String("PRAGMA ") + schema + QLatin1String("table_info (") 
+ _q_escapeIdentifier(table) + QLatin1Char(')'));
+-
++    q.exec(QLatin1String("PRAGMA ") + schema + QLatin1String("table_info (") +
++           _q_escapeIdentifier(table, QSqlDriver::TableName) + 
QLatin1Char(')'));
+     QSqlIndex ind;
+     while (q.next()) {
+         bool isPk = q.value(5).toInt();
+@@ -968,8 +989,7 @@
+ 
+ QString QSQLiteDriver::escapeIdentifier(const QString &identifier, 
IdentifierType type) const
+ {
+-    Q_UNUSED(type);
+-    return _q_escapeIdentifier(identifier);
++    return _q_escapeIdentifier(identifier, type);
+ }
+ 
+ static void handle_sqlite_callback(void *qobj,int aoperation, char const 
*adbname, char const *atablename,
+@@ -1046,3 +1066,5 @@
+ }
+ 
+ QT_END_NAMESPACE
++
++#include "moc_qsql_sqlite_p.cpp"

diff --git a/dev-db/qt5-sqlcipher/qt5-sqlcipher-1.0.11-r1.ebuild 
b/dev-db/qt5-sqlcipher/qt5-sqlcipher-1.0.11-r2.ebuild
similarity index 80%
rename from dev-db/qt5-sqlcipher/qt5-sqlcipher-1.0.11-r1.ebuild
rename to dev-db/qt5-sqlcipher/qt5-sqlcipher-1.0.11-r2.ebuild
index 57ef6aa14443..60da9b9a752b 100644
--- a/dev-db/qt5-sqlcipher/qt5-sqlcipher-1.0.11-r1.ebuild
+++ b/dev-db/qt5-sqlcipher/qt5-sqlcipher-1.0.11-r2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2022 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8
@@ -14,14 +14,16 @@ SLOT="0"
 KEYWORDS="~amd64"
 
 RDEPEND=">=dev-db/sqlcipher-3.4.1
-       >=dev-qt/qtcore-5.12.3:5=
-       >=dev-qt/qtsql-5.12.3:5=[sqlite] <dev-qt/qtsql-5.16:5=[sqlite]"
+       >=dev-qt/qtcore-5.15.16:5=
+       >=dev-qt/qtsql-5.15.16:5=[sqlite] <dev-qt/qtsql-5.16:5=[sqlite]"
 DEPEND="${RDEPEND}"
 
 DOCS=(README.md)
 
 src_prepare() {
        eapply "${FILESDIR}"/${PN}-1.0.10-install-path.patch
+       cp -a "${S}"/qt-file-cache/5.15.{0,16} || die
+       eapply "${FILESDIR}"/${P}-qt-5.15.16.patch
        sed -i -e "s/@LIBDIR@/$(get_libdir)/" CMakeLists.txt || die
 
        local v=$(best_version dev-qt/qtsql:5)
@@ -30,10 +32,7 @@ src_prepare() {
        if ! [[ -d qt-file-cache/${v} ]]; then
                local vc
                case $(ver_cut 1-2 ${v}) in
-                       5.12) vc=5.12.5 ;;
-                       5.13) vc=5.13.2 ;;
-                       5.14) vc=5.14.2 ;;
-                       5.15) vc=5.15.0 ;;
+                       5.15) vc=5.15.16 ;;
                        *) die "qtsql-${v} not supported" ;;
                esac
                elog "qtsql-${v} not in cache, using ${vc} instead"

Reply via email to