From f06ce71a6adea3396a3dfbb15a575ea86e460040 Mon Sep 17 00:00:00 2001 From: Bernhard M. Wiedemann Date: Dec 13 2019 11:01:52 +0000 Subject: Update accounts-qml-module to rev 1 via SR 755949 https://build.opensuse.org/request/show/755949 by user dimstar_suse Needed by KDE Applications 19.12 --- diff --git a/Build-add-qmltypes-file-to-repository.patch b/Build-add-qmltypes-file-to-repository.patch new file mode 100644 index 0000000..d9f3784 --- /dev/null +++ b/Build-add-qmltypes-file-to-repository.patch @@ -0,0 +1,241 @@ +From 678c493a083a92d1fda2375f5d2e37c00c7b9a7e Mon Sep 17 00:00:00 2001 +From: Alberto Mardegan +Date: Tue, 9 Jan 2018 18:23:57 +0300 +Subject: [PATCH] Build: add qmltypes file to repository + +Generating the file at build time is troublesome when cross-compiling. +It's better to add the generated file to the repository and add a make +target to rebuild it. +--- + src/plugin.qmltypes | 187 ++++++++++++++++++++++++++++++++++++++++++++ + src/src.pro | 19 +---- + 2 files changed, 191 insertions(+), 15 deletions(-) + create mode 100644 src/plugin.qmltypes + +diff --git a/src/plugin.qmltypes b/src/plugin.qmltypes +new file mode 100644 +index 0000000..8481efe +--- /dev/null ++++ b/src/plugin.qmltypes +@@ -0,0 +1,187 @@ ++import QtQuick.tooling 1.2 ++ ++// This file describes the plugin-supplied types contained in the library. ++// It is used for QML tooling purposes only. ++// ++// This file was auto-generated by: ++// 'qmlplugindump -notrelocatable Ubuntu.OnlineAccounts 0.1 .' ++ ++Module { ++ dependencies: ["QtQuick 2.8"] ++ Component { ++ name: "OnlineAccounts::Account" ++ prototype: "QObject" ++ exports: ["Ubuntu.OnlineAccounts/Account 0.1"] ++ exportMetaObjectRevisions: [0] ++ Enum { ++ name: "RemovalOption" ++ values: { ++ "RemoveAccountOnly": 0, ++ "RemoveCredentials": 1 ++ } ++ } ++ Enum { ++ name: "RemovalOptions" ++ values: { ++ "RemoveAccountOnly": 0, ++ "RemoveCredentials": 1 ++ } ++ } ++ Property { name: "objectHandle"; type: "QObject"; isPointer: true } ++ Property { name: "enabled"; type: "bool"; isReadonly: true } ++ Property { name: "provider"; type: "QVariantMap"; isReadonly: true } ++ Property { name: "displayName"; type: "string"; isReadonly: true } ++ Property { name: "accountId"; type: "uint"; isReadonly: true } ++ Property { name: "accountServiceHandle"; type: "QObject"; isReadonly: true; isPointer: true } ++ Signal { name: "synced" } ++ Signal { name: "removed" } ++ Method { ++ name: "updateDisplayName" ++ Parameter { name: "displayName"; type: "string" } ++ } ++ Method { ++ name: "updateEnabled" ++ Parameter { name: "enabled"; type: "bool" } ++ } ++ Method { name: "sync" } ++ Method { ++ name: "remove" ++ Parameter { name: "options"; type: "RemovalOptions" } ++ } ++ Method { name: "remove" } ++ } ++ Component { ++ name: "OnlineAccounts::AccountService" ++ prototype: "QObject" ++ exports: ["Ubuntu.OnlineAccounts/AccountService 0.1"] ++ exportMetaObjectRevisions: [0] ++ Enum { ++ name: "ErrorCode" ++ values: { ++ "NoError": 0, ++ "NoAccountError": 1, ++ "UserCanceledError": 2, ++ "PermissionDeniedError": 3, ++ "NetworkError": 4, ++ "SslError": 5, ++ "InteractionRequiredError": 6 ++ } ++ } ++ Property { name: "objectHandle"; type: "QObject"; isPointer: true } ++ Property { name: "enabled"; type: "bool"; isReadonly: true } ++ Property { name: "serviceEnabled"; type: "bool"; isReadonly: true } ++ Property { name: "provider"; type: "QVariantMap"; isReadonly: true } ++ Property { name: "service"; type: "QVariantMap"; isReadonly: true } ++ Property { name: "displayName"; type: "string"; isReadonly: true } ++ Property { name: "accountId"; type: "uint"; isReadonly: true } ++ Property { name: "settings"; type: "QVariantMap"; isReadonly: true } ++ Property { name: "authData"; type: "QVariantMap"; isReadonly: true } ++ Property { name: "autoSync"; type: "bool" } ++ Property { name: "credentials"; type: "QObject"; isPointer: true } ++ Signal { ++ name: "authenticated" ++ Parameter { name: "reply"; type: "QVariantMap" } ++ } ++ Signal { ++ name: "authenticationError" ++ Parameter { name: "error"; type: "QVariantMap" } ++ } ++ Method { ++ name: "authenticate" ++ Parameter { name: "sessionData"; type: "QVariantMap" } ++ } ++ Method { name: "authenticate" } ++ Method { name: "cancelAuthentication" } ++ Method { ++ name: "updateServiceEnabled" ++ Parameter { name: "enabled"; type: "bool" } ++ } ++ Method { ++ name: "updateSettings" ++ Parameter { name: "settings"; type: "QVariantMap" } ++ } ++ } ++ Component { ++ name: "OnlineAccounts::AccountServiceModel" ++ prototype: "QAbstractListModel" ++ exports: ["Ubuntu.OnlineAccounts/AccountServiceModel 0.1"] ++ exportMetaObjectRevisions: [0] ++ Property { name: "count"; type: "int"; isReadonly: true } ++ Property { name: "includeDisabled"; type: "bool" } ++ Property { name: "accountId"; type: "uint" } ++ Property { name: "account"; type: "QObject"; isPointer: true } ++ Property { name: "applicationId"; type: "string" } ++ Property { name: "provider"; type: "string" } ++ Property { name: "serviceType"; type: "string" } ++ Property { name: "service"; type: "string" } ++ Method { ++ name: "get" ++ type: "QVariant" ++ Parameter { name: "row"; type: "int" } ++ Parameter { name: "roleName"; type: "string" } ++ } ++ } ++ Component { ++ name: "OnlineAccounts::ApplicationModel" ++ prototype: "QAbstractListModel" ++ exports: ["Ubuntu.OnlineAccounts/ApplicationModel 0.1"] ++ exportMetaObjectRevisions: [0] ++ Property { name: "count"; type: "int"; isReadonly: true } ++ Property { name: "service"; type: "string" } ++ Method { ++ name: "get" ++ type: "QVariant" ++ Parameter { name: "row"; type: "int" } ++ Parameter { name: "roleName"; type: "string" } ++ } ++ } ++ Component { ++ name: "OnlineAccounts::Credentials" ++ prototype: "QObject" ++ exports: ["Ubuntu.OnlineAccounts/Credentials 0.1"] ++ exportMetaObjectRevisions: [0] ++ Property { name: "credentialsId"; type: "uint" } ++ Property { name: "caption"; type: "string" } ++ Property { name: "userName"; type: "string" } ++ Property { name: "secret"; type: "string" } ++ Property { name: "storeSecret"; type: "bool" } ++ Property { name: "acl"; type: "QStringList" } ++ Property { name: "methods"; type: "QVariantMap" } ++ Signal { name: "synced" } ++ Signal { name: "removed" } ++ Method { name: "sync" } ++ Method { name: "remove" } ++ } ++ Component { ++ name: "OnlineAccounts::Manager" ++ prototype: "QObject" ++ exports: ["Ubuntu.OnlineAccounts/Manager 0.1"] ++ isCreatable: false ++ isSingleton: true ++ exportMetaObjectRevisions: [0] ++ Method { ++ name: "loadAccount" ++ type: "QObject*" ++ Parameter { name: "accountId"; type: "uint" } ++ } ++ Method { ++ name: "createAccount" ++ type: "QObject*" ++ Parameter { name: "providerName"; type: "string" } ++ } ++ } ++ Component { ++ name: "OnlineAccounts::ProviderModel" ++ prototype: "QAbstractListModel" ++ exports: ["Ubuntu.OnlineAccounts/ProviderModel 0.1"] ++ exportMetaObjectRevisions: [0] ++ Property { name: "applicationId"; type: "string" } ++ Property { name: "count"; type: "int"; isReadonly: true } ++ Method { ++ name: "get" ++ type: "QVariant" ++ Parameter { name: "row"; type: "int" } ++ Parameter { name: "roleName"; type: "string" } ++ } ++ } ++} +diff --git a/src/src.pro b/src/src.pro +index 8b26639..abfc851 100644 +--- a/src/src.pro ++++ b/src/src.pro +@@ -61,22 +61,11 @@ PLUGIN_INSTALL_BASE = $$[QT_INSTALL_QML]/$$replace(API_URI, \\., /) + target.path = $${PLUGIN_INSTALL_BASE} + INSTALLS += target + +-qmldir.files = $${DESTDIR}/qmldir ++qmldir.files = $${DESTDIR}/qmldir plugin.qmltypes + qmldir.path = $${PLUGIN_INSTALL_BASE} + INSTALLS += qmldir + +-generateQmlTypes.output = $${DESTDIR}/plugin.qmltypes +-generateQmlTypes.input = QML_PLUGINS +-generateQmlTypes.commands = export LD_PRELOAD=${QMAKE_FILE_IN}; $$[QT_INSTALL_BINS]/qmlplugindump -notrelocatable $${API_URI} 0.1 . > ${QMAKE_FILE_OUT} +-generateQmlTypes.name = Generate ${QMAKE_FILE_OUT} +-generateQmlTypes.CONFIG += no_link +-generateQmlTypes.variable_out = QML_TYPES +-QMAKE_EXTRA_COMPILERS += generateQmlTypes +- + QML_PLUGINS += $${DESTDIR}/lib$${TARGET}.so +- +-qmltypes.path = $${PLUGIN_INSTALL_BASE} +-qmltypes.files = $${DESTDIR}/plugin.qmltypes +-qmltypes.depends = $${DESTDIR}/plugin.qmltypes +-qmltypes.CONFIG += no_check_exist +-INSTALLS += qmltypes ++qmltypes.commands = export LD_PRELOAD=$${QML_PLUGINS}; $$[QT_INSTALL_BINS]/qmlplugindump -notrelocatable $${API_URI} 0.1 . > $$PWD/plugin.qmltypes ++qmltypes.depends = $${QML_PLUGINS} ++QMAKE_EXTRA_TARGETS += qmltypes +-- +2.22.2 + diff --git a/Fix-compilation-with-Qt-5.13.patch b/Fix-compilation-with-Qt-5.13.patch new file mode 100644 index 0000000..0adae29 --- /dev/null +++ b/Fix-compilation-with-Qt-5.13.patch @@ -0,0 +1,72 @@ +From 69e17dec5add40655cd9334ec7ad4eef13fed8a4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonah=20Br=C3=BCchert?= +Date: Wed, 5 Jun 2019 13:28:44 +0200 +Subject: [PATCH] Fix compilation with Qt 5.13 + +--- + src/account-service-model.cpp | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/src/account-service-model.cpp b/src/account-service-model.cpp +index 45795c5..deb157e 100644 +--- a/src/account-service-model.cpp ++++ b/src/account-service-model.cpp +@@ -183,7 +183,7 @@ AccountServiceModelPrivate::addServicesFromAccount(Accounts::Account *account) + newModelItems.append(accountService); + } + +- qSort(newModelItems.begin(), newModelItems.end(), sortFunction); ++ std::sort(newModelItems.begin(), newModelItems.end(), sortFunction); + addItems(newModelItems); + } + +@@ -211,7 +211,7 @@ void AccountServiceModelPrivate::addItems(const AccountServices &added) + foreach (Accounts::AccountService *accountService, added) { + // Find where the item should be inserted + AccountServices::iterator i = +- qLowerBound(modelItems.begin(), modelItems.end(), ++ std::lower_bound(modelItems.begin(), modelItems.end(), + accountService, sortFunction); + int index = i - modelItems.begin(); + addedIndexes[index]++; +@@ -253,7 +253,7 @@ AccountServiceModelPrivate::removeItems(const AccountServices &removed) + removedIndexes.append(index); + } + // sort the indexes from highest to lower, and start updating the list +- qSort(removedIndexes.begin(), removedIndexes.end(), qGreater()); ++ std::sort(removedIndexes.begin(), removedIndexes.end(), std::greater()); + int first = -1; + int last = -1; + foreach (int index, removedIndexes) { +@@ -281,7 +281,7 @@ AccountServiceModelPrivate::removeItems(const AccountServices &removed) + + void AccountServiceModelPrivate::sortItems() + { +- qSort(modelItems.begin(), modelItems.end(), sortFunction); ++ std::sort(modelItems.begin(), modelItems.end(), sortFunction); + } + + void AccountServiceModelPrivate::update() +@@ -809,7 +809,8 @@ QVariant AccountServiceModel::data(const QModelIndex &index, int role) const + ret = accountService->enabled(); + break; + case AccountServiceRole: +- qWarning("accountService role is deprecated, use accountServiceHandle"); ++ qWarning() << "accountService role is deprecated, use accountServiceHandle"; ++ /* FALLTHRU */ + case AccountServiceHandleRole: + object = accountService; + break; +@@ -817,7 +818,8 @@ QVariant AccountServiceModel::data(const QModelIndex &index, int role) const + ret = accountService->account()->id(); + break; + case AccountRole: +- qWarning("account role is deprecated, use accountHandle"); ++ qWarning() << "account role is deprecated, use accountHandle"; ++ /* FALLTHRU */ + case AccountHandleRole: + object = accountService->account(); + break; +-- +2.22.2 + diff --git a/accounts-qml-module-VERSION_0.7.tar.bz2 b/accounts-qml-module-VERSION_0.7.tar.bz2 new file mode 120000 index 0000000..93ea2b2 --- /dev/null +++ b/accounts-qml-module-VERSION_0.7.tar.bz2 @@ -0,0 +1 @@ +/ipfs/bafkreibpbpv6la5bkv3j3ue6zgdrvkniijk7wnmnhr5ishgf54rq37pzd4 \ No newline at end of file diff --git a/accounts-qml-module.changes b/accounts-qml-module.changes new file mode 100644 index 0000000..d4c6c7d --- /dev/null +++ b/accounts-qml-module.changes @@ -0,0 +1,9 @@ +------------------------------------------------------------------- +Tue Dec 10 14:34:25 UTC 2019 - Wolfgang Bauer + +- Initial package +- Add Fix-compilation-with-Qt-5.13.patch to make it build with Qt + 5.13 +- Add Build-add-qmltypes-file-to-repository.patch to fix a problem + with generating plugin.qmltypes on OBS + diff --git a/accounts-qml-module.spec b/accounts-qml-module.spec new file mode 100644 index 0000000..3312901 --- /dev/null +++ b/accounts-qml-module.spec @@ -0,0 +1,81 @@ +# +# spec file for package accounts-qml-module +# +# Copyright (c) 2019 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +Name: accounts-qml-module +Version: 0.7 +Release: 0 +Summary: QML bindings for libaccounts-qt + libsignon-qt +License: LGPL-2.1-only +Group: System/Libraries +URL: https://gitlab.com/accounts-sso/accounts-qml-module +Source: https://gitlab.com/accounts-sso/%{name}/-/archive/VERSION_%{version}/%{name}-VERSION_%{version}.tar.bz2 +# PATCH-FIX-UPSTREAM +Patch0: Fix-compilation-with-Qt-5.13.patch +# PATCH-FIX-UPSTREAM +Patch1: Build-add-qmltypes-file-to-repository.patch +BuildRequires: libqt5-qttools-doc +BuildRequires: cmake(AccountsQt5) +BuildRequires: cmake(Qt5Qml) +BuildRequires: cmake(SignOnQt5) + +%description +This QML module provides an API to manage the user's online accounts and get +their authentication data. It's a tiny wrapper around the Qt-based APIs of +libaccounts-qt and libsignon-qt. + +%package doc +Summary: Documentation for accounts-qml-module +Group: Documentation/HTML +BuildArch: noarch + +%description doc +This package contains the developer documentation for accounts-qml-module. + +%prep +%setup -q -n %{name}-VERSION_%{version} +%autopatch -p1 + +%build +mkdir build +pushd build +%qmake5 \ + PREFIX=%{_prefix} \ + LIBDIR=%{_libdir} \ + .. +%make_jobs +popd + +%install +pushd build +%qmake5_install +popd + +# remove tests +rm %{buildroot}%{_bindir}/tst_plugin +# avoid rpmlint warning +rm -f %{buildroot}/%{_datadir}/%{name}/doc/html/.gitignore + +%files +%license COPYING +%doc README.md +%{_libqt5_archdatadir}/qml/Ubuntu + +%files doc +%doc %{_datadir}/%{name}/ + +%changelog