From 00bed7ea5a1386081ede9aef3d629e6757d2d668 Mon Sep 17 00:00:00 2001 From: Michael Palimaka Date: Tue, 25 Aug 2015 02:09:01 +1000 Subject: kde-frameworks/kwallet: backport patch from upstream to avoid unwanted migration dialogues. Package-Manager: portage-2.2.20.1 --- .../kwallet/files/kwallet-5.13.0-migration.patch | 152 +++++++++++++++++++++ kde-frameworks/kwallet/kwallet-5.13.0-r1.ebuild | 43 ++++++ 2 files changed, 195 insertions(+) create mode 100644 kde-frameworks/kwallet/files/kwallet-5.13.0-migration.patch create mode 100644 kde-frameworks/kwallet/kwallet-5.13.0-r1.ebuild diff --git a/kde-frameworks/kwallet/files/kwallet-5.13.0-migration.patch b/kde-frameworks/kwallet/files/kwallet-5.13.0-migration.patch new file mode 100644 index 000000000000..760a1674015f --- /dev/null +++ b/kde-frameworks/kwallet/files/kwallet-5.13.0-migration.patch @@ -0,0 +1,152 @@ +From 127efedd1668b546d0ac8c83655a2056d0439f29 Mon Sep 17 00:00:00 2001 +From: Valentin Rusu +Date: Fri, 7 Aug 2015 18:59:04 +0200 +Subject: [PATCH] Stop showing the migration wizard by default + +BUG:351056 + +If the migration wizard is needed, then add this to kwalletrc +[Migration] +showMigrationWizard=true + +On systems having kwallet-pam the migration agent would also merge all the old +wallets into the default LocalWallet, as a side effect. This would avoid +wallet creation prompts, though. +--- + src/runtime/kwalletd/main.cpp | 2 +- + src/runtime/kwalletd/migrationagent.cpp | 42 ++++++++++++++++++++++++++------ + src/runtime/kwalletd/migrationagent.h | 5 ++-- + src/runtime/kwalletd/migrationwizard.cpp | 2 +- + 4 files changed, 39 insertions(+), 12 deletions(-) + +diff --git a/src/runtime/kwalletd/main.cpp b/src/runtime/kwalletd/main.cpp +index c0fecaa..62fcd3a 100644 +--- a/src/runtime/kwalletd/main.cpp ++++ b/src/runtime/kwalletd/main.cpp +@@ -186,7 +186,7 @@ int main(int argc, char **argv) + aboutdata.addAuthor(i18n("Thiago Maceira"), i18n("D-Bus Interface"), "thiago@kde.org"); + + KWalletD walletd; +- MigrationAgent migrationAgent(&walletd); ++ MigrationAgent migrationAgent(&walletd, hash); + KDBusService dbusUniqueInstance(KDBusService::Unique | KDBusService::NoExitOnFailure); + + // NOTE: the command should be parsed only after KDBusService instantiation +diff --git a/src/runtime/kwalletd/migrationagent.cpp b/src/runtime/kwalletd/migrationagent.cpp +index 6eaeb12..192a871 100644 +--- a/src/runtime/kwalletd/migrationagent.cpp ++++ b/src/runtime/kwalletd/migrationagent.cpp +@@ -34,10 +34,12 @@ + + #define SERVICE_KWALLETD4 "org.kde.kwalletd" + #define ENTRY_ALREADY_MIGRATED "alreadyMigrated" ++#define ENTRY_SHOW_MIGRATION_WIZARD "showMigrationWizard" + +-MigrationAgent::MigrationAgent(KWalletD* kd) : ++MigrationAgent::MigrationAgent(KWalletD* kd, const char *hash) : + _kf5_daemon(kd) + , _kde4_daemon(0) ++ , _pam_hash(hash) + { + QTimer::singleShot(100, this, SLOT(migrateWallets())); + } +@@ -118,11 +120,27 @@ bool MigrationAgent::isMigrationWizardOk() + { + bool ok = false; + +- MigrationWizard *wizard = new MigrationWizard(this); +- int result = wizard->exec(); +- if (QDialog::Accepted == result) { +- // the user either migrated the wallets, or choose not to be prompted again +- ok = true; ++ // The migration wizard would no longer been shown by default. ++ // see BUG 351056 ++ // NOTE if user wants to show the migration wizard, then he should add the ++ // following setting to the kwalletrc: ++ // [Migration] ++ // showMigrationWizard=true ++ KConfig kwalletrc("kwalletrc"); ++ KConfigGroup cfg(&kwalletrc, "Migration"); ++ bool showMigrationWizard = cfg.readEntry(ENTRY_SHOW_MIGRATION_WIZARD, false); ++ ++ if (showMigrationWizard) { ++ MigrationWizard *wizard = new MigrationWizard(this); ++ int result = wizard->exec(); ++ if (QDialog::Accepted == result) { ++ // the user either migrated the wallets, or choose not to be prompted again ++ ok = true; ++ } ++ } else { ++ if (performMigration(0, true)) { ++ qDebug() << "Migration failed."; ++ } + } + + return ok; +@@ -162,7 +180,7 @@ bool MigrationAgent::isEmptyOldWallet() const { + return wallets.length() == 0; + } + +-bool MigrationAgent::performMigration(WId wid) ++bool MigrationAgent::performMigration(WId wid, bool withoutWizard) + { + auto appId = i18n("KDE Wallet Migration Agent"); + try { +@@ -174,7 +192,15 @@ bool MigrationAgent::performMigration(WId wid) + emit progressMessage(i18n("Migrating wallet: %1", wallet)); + emit progressMessage(i18n("* Creating KF5 wallet: %1", wallet)); + +- int handle5 = _kf5_daemon->internalOpen(appId, wallet, false, 0, true, QString()); ++ int handle5 = -1; ++ if (withoutWizard && (_pam_hash != nullptr)) { ++ // see BUG 351056 for why this hacky code ++ // If the user has several wallets, all the values will be ++ // merged into the single LocalWallet ++ handle5 = _kf5_daemon->pamOpen(KWallet::Wallet::LocalWallet(), _pam_hash, 0); ++ } else { ++ handle5 = _kf5_daemon->internalOpen(appId, wallet, false, 0, true, QString()); ++ } + if (handle5 <0) { + emit progressMessage(i18n("ERROR when attempting new wallet creation. Aborting.")); + return false; +diff --git a/src/runtime/kwalletd/migrationagent.h b/src/runtime/kwalletd/migrationagent.h +index 55a251d..c52509e 100644 +--- a/src/runtime/kwalletd/migrationagent.h ++++ b/src/runtime/kwalletd/migrationagent.h +@@ -32,10 +32,10 @@ class KWalletD; + class MigrationAgent : public QObject { + Q_OBJECT + public: +- MigrationAgent(KWalletD* kd); ++ MigrationAgent(KWalletD* kd, const char* hash); + + bool isEmptyOldWallet() const; +- bool performMigration(WId wid); ++ bool performMigration(WId wid, bool withoutWizard); + + private Q_SLOTS: + void migrateWallets(); +@@ -52,6 +52,7 @@ Q_SIGNALS: + private: + KWalletD *_kf5_daemon; + org::kde::KWallet *_kde4_daemon; ++ const char *_pam_hash; + }; + + #endif // _MIGRATIONAGENT_H_ +diff --git a/src/runtime/kwalletd/migrationwizard.cpp b/src/runtime/kwalletd/migrationwizard.cpp +index b7d3f70..cdd2a92 100644 +--- a/src/runtime/kwalletd/migrationwizard.cpp ++++ b/src/runtime/kwalletd/migrationwizard.cpp +@@ -58,7 +58,7 @@ public: + + virtual void initializePage() { + connect(_agent, SIGNAL(progressMessage(QString)), _ui._report, SLOT(append(QString))); +- _migrationCompleted = _agent->performMigration(winId()); ++ _migrationCompleted = _agent->performMigration(winId(), false); + emit completeChanged(); + } + +-- +2.4.6 + diff --git a/kde-frameworks/kwallet/kwallet-5.13.0-r1.ebuild b/kde-frameworks/kwallet/kwallet-5.13.0-r1.ebuild new file mode 100644 index 000000000000..6d03bf7304f3 --- /dev/null +++ b/kde-frameworks/kwallet/kwallet-5.13.0-r1.ebuild @@ -0,0 +1,43 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +inherit kde5 + +DESCRIPTION="Framework providing desktop-wide storage for passwords" +LICENSE="LGPL-2+" +KEYWORDS="~amd64 ~x86" +IUSE="gpg" + +RDEPEND=" + $(add_frameworks_dep kconfig) + $(add_frameworks_dep kcoreaddons) + $(add_frameworks_dep kdbusaddons) + $(add_frameworks_dep ki18n) + $(add_frameworks_dep kiconthemes) + $(add_frameworks_dep knotifications) + $(add_frameworks_dep kservice) + $(add_frameworks_dep kwidgetsaddons) + $(add_frameworks_dep kwindowsystem) + dev-libs/libgcrypt:0= + dev-qt/qtdbus:5 + dev-qt/qtgui:5 + dev-qt/qtwidgets:5 + gpg? ( + $(add_kdeapps_dep gpgmepp) + app-crypt/gpgme + ) +" +DEPEND="${RDEPEND}" + +PATCHES=( "${FILESDIR}/${P}-migration.patch" ) + +src_configure() { + local mycmakeargs=( + $(cmake-utils_use_find_package gpg Gpgme) + $(cmake-utils_use_find_package gpg KF5Gpgmepp) + ) + kde5_src_configure +} -- cgit v1.2.3-65-gdbad