Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ki18n for openSUSE:Factory checked in at 2022-06-17 21:19:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ki18n (Old) and /work/SRC/openSUSE:Factory/.ki18n.new.1548 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ki18n" Fri Jun 17 21:19:16 2022 rev:108 rq:982268 version:5.95.0 Changes: -------- --- /work/SRC/openSUSE:Factory/ki18n/ki18n.changes 2022-05-16 18:08:44.493286797 +0200 +++ /work/SRC/openSUSE:Factory/.ki18n.new.1548/ki18n.changes 2022-06-17 21:21:12.458730904 +0200 @@ -1,0 +2,11 @@ +Fri Jun 10 14:12:30 UTC 2022 - Christophe Giboudeaux <christo...@krop.fr> + +- Update to 5.95.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/5/5.95.0 +- Changes since 5.94.0: + * Directly load catalogs from Android assets + * Port to ECMQmlModule + +------------------------------------------------------------------- Old: ---- ki18n-5.94.0.tar.xz ki18n-5.94.0.tar.xz.sig New: ---- ki18n-5.95.0.tar.xz ki18n-5.95.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ki18n.spec ++++++ --- /var/tmp/diff_new_pack.i3FvWl/_old 2022-06-17 21:21:13.102731253 +0200 +++ /var/tmp/diff_new_pack.i3FvWl/_new 2022-06-17 21:21:13.106731255 +0200 @@ -17,14 +17,14 @@ %define lname libKF5I18n5 -%define _tar_path 5.94 +%define _tar_path 5.95 # Full KF5 version (e.g. 5.33.0) %{!?_kf5_version: %global _kf5_version %{version}} # Last major and minor KF5 version (e.g. 5.33) %{!?_kf5_bugfix_version: %define _kf5_bugfix_version %(echo %{_kf5_version} | awk -F. '{print $1"."$2}')} %bcond_without released Name: ki18n -Version: 5.94.0 +Version: 5.95.0 Release: 0 Summary: KDE Gettext-based UI text internationalization License: LGPL-2.1-or-later ++++++ ki18n-5.94.0.tar.xz -> ki18n-5.95.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.94.0/CMakeLists.txt new/ki18n-5.95.0/CMakeLists.txt --- old/ki18n-5.94.0/CMakeLists.txt 2022-05-07 23:22:09.000000000 +0200 +++ new/ki18n-5.95.0/CMakeLists.txt 2022-06-09 23:20:19.000000000 +0200 @@ -1,11 +1,11 @@ cmake_minimum_required(VERSION 3.16) -set(KF_VERSION "5.94.0") # handled by release scripts +set(KF_VERSION "5.95.0") # handled by release scripts project(KI18n VERSION ${KF_VERSION}) # ECM setup include(FeatureSummary) -find_package(ECM 5.93.0 NO_MODULE) +find_package(ECM 5.95.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) @@ -22,6 +22,7 @@ include(ECMGenerateHeaders) include(ECMAddQch) include(ECMQtDeclareLoggingCategory) +include(ECMQmlModule) ecm_setup_version( @@ -42,6 +43,9 @@ if (BUILD_WITH_QML) find_package(Qt${QT_MAJOR_VERSION}Qml ${REQUIRED_QT_VERSION} CONFIG REQUIRED) endif() +if (ANDROID AND QT_MAJOR_VERSION EQUAL "5") + find_package(Qt5AndroidExtras ${REQUIRED_QT_VERSION} CONFIG REQUIRED) +endif() find_package(LibIntl) set_package_properties(LibIntl PROPERTIES TYPE REQUIRED diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.94.0/po/ca@valencia/ki18n5.po new/ki18n-5.95.0/po/ca@valencia/ki18n5.po --- old/ki18n-5.94.0/po/ca@valencia/ki18n5.po 2022-05-07 23:22:09.000000000 +0200 +++ new/ki18n-5.95.0/po/ca@valencia/ki18n5.po 2022-06-09 23:20:19.000000000 +0200 @@ -95,7 +95,7 @@ #: kuitmarkup.cpp:340 msgctxt "keyboard-key-name" msgid "Delete" -msgstr "Suprimeix" +msgstr "Suprimix" #: kuitmarkup.cpp:341 msgctxt "keyboard-key-name" @@ -105,7 +105,7 @@ #: kuitmarkup.cpp:342 msgctxt "keyboard-key-name" msgid "End" -msgstr "Finalitza" +msgstr "Finalisa" #: kuitmarkup.cpp:343 msgctxt "keyboard-key-name" @@ -140,7 +140,7 @@ #: kuitmarkup.cpp:349 msgctxt "keyboard-key-name" msgid "Insert" -msgstr "Insereix" +msgstr "Inserix" #: kuitmarkup.cpp:350 msgctxt "keyboard-key-name" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.94.0/po/zh_CN/ki18n5.po new/ki18n-5.95.0/po/zh_CN/ki18n5.po --- old/ki18n-5.94.0/po/zh_CN/ki18n5.po 2022-05-07 23:22:09.000000000 +0200 +++ new/ki18n-5.95.0/po/zh_CN/ki18n5.po 2022-06-09 23:20:19.000000000 +0200 @@ -16,7 +16,7 @@ "Project-Id-Version: kdeorg\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-01-02 00:43+0000\n" -"PO-Revision-Date: 2022-04-26 15:18\n" +"PO-Revision-Date: 2022-06-05 04:17\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.94.0/src/i18n/CMakeLists.txt new/ki18n-5.95.0/src/i18n/CMakeLists.txt --- old/ki18n-5.94.0/src/i18n/CMakeLists.txt 2022-05-07 23:22:09.000000000 +0200 +++ new/ki18n-5.95.0/src/i18n/CMakeLists.txt 2022-06-09 23:20:19.000000000 +0200 @@ -46,6 +46,12 @@ target_link_libraries(KF5I18n PUBLIC Qt${QT_MAJOR_VERSION}::Core) # This is only required for platforms which don't use glibc (with glibc LibIntl_LIBRARIES will be empty) target_link_libraries(KF5I18n PRIVATE ${LibIntl_LIBRARIES}) +if (ANDROID) + if (QT_MAJOR_VERSION EQUAL "5") + target_link_libraries(KF5I18n PRIVATE Qt5::AndroidExtras) + endif() + target_link_libraries(KF5I18n PRIVATE android) +endif() target_compile_options(KF5I18n PRIVATE -DTRANSLATION_DOMAIN=\"ki18n5\") set_target_properties(KF5I18n PROPERTIES VERSION ${KI18N_VERSION} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.94.0/src/i18n/kcatalog.cpp new/ki18n-5.95.0/src/i18n/kcatalog.cpp --- old/ki18n-5.94.0/src/i18n/kcatalog.cpp 2022-05-07 23:22:09.000000000 +0200 +++ new/ki18n-5.95.0/src/i18n/kcatalog.cpp 2022-06-09 23:20:19.000000000 +0200 @@ -22,6 +22,26 @@ #include <QStandardPaths> #include <QStringList> +#ifdef Q_OS_ANDROID +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +#include <QAndroidJniEnvironment> +#include <QAndroidJniObject> +#include <QtAndroid> +#else +#include <QCoreApplication> +#include <QJniEnvironment> +#include <QJniObject> +using QAndroidJniObject = QJniObject; +#endif + +#include <android/asset_manager.h> +#include <android/asset_manager_jni.h> + +#if __ANDROID_API__ < 23 +#include <dlfcn.h> +#endif +#endif + #include <locale.h> #include <stdlib.h> @@ -47,10 +67,35 @@ public: KCatalogStaticData() { +#ifdef Q_OS_ANDROID +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + QAndroidJniEnvironment env; + QAndroidJniObject context = QtAndroid::androidContext(); + m_assets = context.callObjectMethod("getAssets", "()Landroid/content/res/AssetManager;"); + m_assetMgr = AAssetManager_fromJava(env, m_assets.object()); +#else + QJniEnvironment env; + QJniObject context = QNativeInterface::QAndroidApplication::context(); + m_assets = context.callObjectMethod("getAssets", "()Landroid/content/res/AssetManager;"); + m_assetMgr = AAssetManager_fromJava(env.jniEnv(), m_assets.object()); +#endif + +#if __ANDROID_API__ < 23 + fmemopenFunc = reinterpret_cast<decltype(fmemopenFunc)>(dlsym(RTLD_DEFAULT, "fmemopen")); +#endif +#endif } QHash<QByteArray /*domain*/, QString /*directory*/> customCatalogDirs; QMutex mutex; + +#ifdef Q_OS_ANDROID + QAndroidJniObject m_assets; + AAssetManager *m_assetMgr = nullptr; +#if __ANDROID_API__ < 23 + FILE *(*fmemopenFunc)(void *, size_t, const char *); +#endif +#endif }; Q_GLOBAL_STATIC(KCatalogStaticData, catalogStaticData) @@ -108,7 +153,7 @@ KCatalog::~KCatalog() = default; -#if defined(Q_OS_ANDROID) +#if defined(Q_OS_ANDROID) && __ANDROID_API__ < 23 static QString androidUnpackCatalog(const QString &relpath) { // the catalog files are no longer extracted to the local file system @@ -156,7 +201,19 @@ } #if defined(Q_OS_ANDROID) - return androidUnpackCatalog(relpath); +#if __ANDROID_API__ < 23 + // fall back to copying the catalog to the file system on old systems + // without fmemopen() + if (!catalogStaticData->fmemopenFunc) { + return androidUnpackCatalog(relpath); + } +#endif + const QString assetPath = QLatin1String("assets:/share/locale/") + relpath; + if (!QFileInfo::exists(assetPath)) { + return {}; + } + return assetPath; + #else QString file = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("locale/") + relpath); #ifdef Q_OS_WIN @@ -209,6 +266,28 @@ return availableLanguages; } +#ifdef Q_OS_ANDROID +static void androidAssetBindtextdomain(const QByteArray &domain, const QByteArray &localeDir) +{ + AAsset *asset = AAssetManager_open(catalogStaticData->m_assetMgr, localeDir.mid(8).constData(), AASSET_MODE_UNKNOWN); + if (!asset) { + qWarning() << "unable to load asset" << localeDir; + return; + } + + off64_t size = AAsset_getLength64(asset); + const void *buffer = AAsset_getBuffer(asset); +#if __ANDROID_API__ >= 23 + FILE *moFile = fmemopen(const_cast<void *>(buffer), size, "r"); +#else + FILE *moFile = catalogStaticData->fmemopenFunc(const_cast<void *>(buffer), size, "r"); +#endif + loadMessageCatalogFile(domain, moFile); + fclose(moFile); + AAsset_close(asset); +} +#endif + void KCatalogPrivate::setupGettextEnv() { // Point Gettext to current language, recording system value for recovery. @@ -234,7 +313,15 @@ bindDone = true; // qDebug() << "bindtextdomain" << domain << localeDir; +#ifdef Q_OS_ANDROID + if (localeDir.startsWith("assets:/")) { + androidAssetBindtextdomain(domain, localeDir); + } else { + bindtextdomain(domain, localeDir); + } +#else bindtextdomain(domain, localeDir); +#endif #if HAVE_NL_MSG_CAT_CNTR // Magic to make sure GNU Gettext doesn't use stale cached translation diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.94.0/src/localedata-qml/CMakeLists.txt new/ki18n-5.95.0/src/localedata-qml/CMakeLists.txt --- old/ki18n-5.94.0/src/localedata-qml/CMakeLists.txt 2022-05-07 23:22:09.000000000 +0200 +++ new/ki18n-5.95.0/src/localedata-qml/CMakeLists.txt 2022-06-09 23:20:19.000000000 +0200 @@ -1,15 +1,15 @@ # SPDX-FileCopyrightText: 2021 Volker Krause <vkra...@kde.org> +# SPDX-FileCopyrightText: 2022 Julius K??nzel <jk.kde...@smartlab.uber.space> # SPDX-License-Identifier: BSD-3-Clause -add_library(ki18nlocaledataqmlplugin ki18nlocaledataqmlplugin.cpp) +ecm_add_qml_module(ki18nlocaledataqmlplugin URI "org.kde.i18n.localeData" VERSION 1.0) + +target_sources(ki18nlocaledataqmlplugin PRIVATE + ki18nlocaledataqmlplugin.cpp +) target_link_libraries(ki18nlocaledataqmlplugin PRIVATE Qt${QT_MAJOR_VERSION}::Qml KF5::I18nLocaleData ) -# make examples work without installation -set_property(TARGET ki18nlocaledataqmlplugin PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/org/kde/i18n/localeData) -file(COPY qmldir DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/org/kde/i18n/localeData) - -install(TARGETS ki18nlocaledataqmlplugin DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/i18n/localeData) -install(FILES qmldir ${qml_SRC} DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/i18n/localeData) +ecm_finalize_qml_module(ki18nlocaledataqmlplugin DESTINATION ${KDE_INSTALL_QMLDIR}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.94.0/src/localedata-qml/qmldir new/ki18n-5.95.0/src/localedata-qml/qmldir --- old/ki18n-5.94.0/src/localedata-qml/qmldir 2022-05-07 23:22:09.000000000 +0200 +++ new/ki18n-5.95.0/src/localedata-qml/qmldir 1970-01-01 01:00:00.000000000 +0100 @@ -1,3 +0,0 @@ -module org.kde.i18n.localeData -plugin ki18nlocaledataqmlplugin -classname KI18nLocaleDataQmlPlugin diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ki18n-5.94.0/src/localedata-qml/qmldir.license new/ki18n-5.95.0/src/localedata-qml/qmldir.license --- old/ki18n-5.94.0/src/localedata-qml/qmldir.license 2022-05-07 23:22:09.000000000 +0200 +++ new/ki18n-5.95.0/src/localedata-qml/qmldir.license 1970-01-01 01:00:00.000000000 +0100 @@ -1,2 +0,0 @@ -SPDX-License-Identifier: CC0-1.0 -SPDX-FileCopyrightText: 2021 Volker Krause <vkra...@kde.org>