summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Palimaka <kensington@gentoo.org>2015-08-25 02:09:01 +1000
committerMichael Palimaka <kensington@gentoo.org>2015-08-25 02:09:32 +1000
commit00bed7ea5a1386081ede9aef3d629e6757d2d668 (patch)
tree1e58452c99371dc7c86c93f8ee9503791cd27fb0 /kde-frameworks
parentsci-libs/ViSP: old (diff)
downloadgentoo-00bed7ea5a1386081ede9aef3d629e6757d2d668.tar.gz
gentoo-00bed7ea5a1386081ede9aef3d629e6757d2d668.tar.bz2
gentoo-00bed7ea5a1386081ede9aef3d629e6757d2d668.zip
kde-frameworks/kwallet: backport patch from upstream to avoid unwanted migration dialogues.
Package-Manager: portage-2.2.20.1
Diffstat (limited to 'kde-frameworks')
-rw-r--r--kde-frameworks/kwallet/files/kwallet-5.13.0-migration.patch152
-rw-r--r--kde-frameworks/kwallet/kwallet-5.13.0-r1.ebuild43
2 files changed, 195 insertions, 0 deletions
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 <kde@rusu.info>
+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<bool>(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
+}