[arch-commits] Commit in kwallet/trunk (PKGBUILD no-migration-wizard.patch)

Antonio Rojas arojas at archlinux.org
Mon Aug 24 17:48:51 UTC 2015


    Date: Monday, August 24, 2015 @ 19:48:51
  Author: arojas
Revision: 244767

Add upstream suggested patch to prevent kwallet-pam from opening a migration dialog at login

Added:
  kwallet/trunk/no-migration-wizard.patch
Modified:
  kwallet/trunk/PKGBUILD

---------------------------+
 PKGBUILD                  |   11 ++-
 no-migration-wizard.patch |  144 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 152 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2015-08-24 14:36:10 UTC (rev 244766)
+++ PKGBUILD	2015-08-24 17:48:51 UTC (rev 244767)
@@ -4,7 +4,7 @@
 
 pkgname=kwallet
 pkgver=5.13.0
-pkgrel=3
+pkgrel=4
 pkgdesc='Secure and unified container for user passwords'
 arch=('i686' 'x86_64')
 url='https://projects.kde.org/projects/frameworks/kwallet'
@@ -12,11 +12,16 @@
 depends=('knotifications' 'kiconthemes' 'kservice' 'gpgmepp')
 makedepends=('extra-cmake-modules' 'python' 'kdoctools' 'boost')
 groups=('kf5')
-source=("http://download.kde.org/stable/frameworks/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz")
-md5sums=('df67412fef04c891c98facf870ec370f')
+source=("http://download.kde.org/stable/frameworks/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz" 'no-migration-wizard.patch')
+md5sums=('df67412fef04c891c98facf870ec370f'
+         '8d5ad74a46e345d2bd5c537353d48298')
 
 prepare() {
   mkdir -p build
+
+  cd $pkgname-$pkgver
+# Don't show migration wizard
+  patch -p1 -i ../no-migration-wizard.patch
 }
 
 build() {

Added: no-migration-wizard.patch
===================================================================
--- no-migration-wizard.patch	                        (rev 0)
+++ no-migration-wizard.patch	2015-08-24 17:48:51 UTC (rev 244767)
@@ -0,0 +1,144 @@
+From: Valentin Rusu <kde at rusu.info>
+Date: Fri, 07 Aug 2015 16:59:04 +0000
+Subject: Stop showing the migration wizard by default
+X-Git-Url: http://quickgit.kde.org/?p=kwallet.git&a=commitdiff&h=127efedd1668b546d0ac8c83655a2056d0439f29
+---
+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.
+---
+
+
+--- a/src/runtime/kwalletd/main.cpp
++++ b/src/runtime/kwalletd/main.cpp
+@@ -186,7 +186,7 @@
+     aboutdata.addAuthor(i18n("Thiago Maceira"), i18n("D-Bus Interface"), "thiago at 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
+
+--- 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"
+-
+-MigrationAgent::MigrationAgent(KWalletD* kd) :
++#define ENTRY_SHOW_MIGRATION_WIZARD "showMigrationWizard"
++
++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 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 @@
+     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 @@
+             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;
+
+--- a/src/runtime/kwalletd/migrationagent.h
++++ b/src/runtime/kwalletd/migrationagent.h
+@@ -32,10 +32,10 @@
+ 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 @@
+ private:
+     KWalletD		*_kf5_daemon;
+     org::kde::KWallet 	*_kde4_daemon;
++    const char  *_pam_hash;
+ };
+ 
+ #endif // _MIGRATIONAGENT_H_
+
+--- a/src/runtime/kwalletd/migrationwizard.cpp
++++ b/src/runtime/kwalletd/migrationwizard.cpp
+@@ -58,7 +58,7 @@
+ 
+     virtual void initializePage() {
+         connect(_agent, SIGNAL(progressMessage(QString)), _ui._report, SLOT(append(QString)));
+-        _migrationCompleted = _agent->performMigration(winId());
++        _migrationCompleted = _agent->performMigration(winId(), false);
+         emit completeChanged();
+     }
+ 
+



More information about the arch-commits mailing list