[arch-commits] Commit in gnome-shell/trunk (PKGBUILD git-fixes.patch)

Jan de Groot jgc at nymeria.archlinux.org
Wed Dec 4 20:10:51 UTC 2013


    Date: Wednesday, December 4, 2013 @ 21:10:48
  Author: jgc
Revision: 200768

upgpkg: gnome-shell 3.10.2.1-2

Add fixes from git, includes security bugfix for gdm
Make evolution-data-server optional
Closes: FS#37927, FS#37930

Added:
  gnome-shell/trunk/git-fixes.patch
Modified:
  gnome-shell/trunk/PKGBUILD

-----------------+
 PKGBUILD        |   19 +++--
 git-fixes.patch |  195 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 206 insertions(+), 8 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2013-12-04 19:40:54 UTC (rev 200767)
+++ PKGBUILD	2013-12-04 20:10:48 UTC (rev 200768)
@@ -4,24 +4,27 @@
 
 pkgname=gnome-shell
 pkgver=3.10.2.1
-pkgrel=1
+pkgrel=2
 pkgdesc="The next generation GNOME Shell"
 arch=(i686 x86_64)
 url="http://live.gnome.org/GnomeShell"
 license=(GPL2)
-depends=(accountsservice caribou evolution-data-server gcr gjs gnome-bluetooth gnome-menus
+depends=(accountsservice caribou gcr gjs gnome-bluetooth gnome-menus
          gnome-session gnome-settings-daemon gnome-themes-standard gsettings-desktop-schemas
          libcanberra-pulse libcroco libgdm libsecret mutter mutter-wayland network-manager-applet
          telepathy-logger telepathy-mission-control unzip)
-makedepends=(intltool gtk-doc gnome-control-center)
-optdepends=('gnome-control-center: System settings')
+makedepends=(intltool gtk-doc gnome-control-center evolution-data-server)
+optdepends=('gnome-control-center: System settings'
+            'evolution-data-server: Evolution calendar integration')
 options=('!emptydirs')
 install=gnome-shell.install
 groups=(gnome)
 source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver:0:4}/$pkgname-$pkgver.tar.xz
-        nm-libexecdir.patch)
+        nm-libexecdir.patch
+        git-fixes.patch)
 sha256sums=('d28cedc4f7dbcbd979ef2a0b80f722ff507989fce193fe59351b1d048d17c44c'
-            'e5bb10ad2e5c3e0fde3d05babd1bfdda701e553e02d493f7e54cb7832ce7e607')
+            'e5bb10ad2e5c3e0fde3d05babd1bfdda701e553e02d493f7e54cb7832ce7e607'
+            '192d95387dff5ac772968680cb77abef135b3ad7218676ad51c997d474642cc5')
 
 prepare() {
   cd $pkgname-$pkgver
@@ -29,8 +32,8 @@
   # FS#30747 FS#32730 Problems due to libexecdir different from NM
   patch -Np1 -i ../nm-libexecdir.patch
 
-  # Build against mutter-wayland 3.9.92
-  sed -ri 's/^(MUTTER_MIN_VERSION)=.*/\1=3.9.92/' configure
+  # Upstream fixes from 3-10 branch. Includes security bugfix for FS#37930
+  patch -Np1 -i ../git-fixes.patch
 }
 
 build() {

Added: git-fixes.patch
===================================================================
--- git-fixes.patch	                        (rev 0)
+++ git-fixes.patch	2013-12-04 20:10:48 UTC (rev 200768)
@@ -0,0 +1,195 @@
+diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
+index 1880e36..996b363 100644
+--- a/js/gdm/authPrompt.js
++++ b/js/gdm/authPrompt.js
+@@ -263,10 +263,8 @@ const AuthPrompt = new Lang.Class({
+     },
+ 
+     _onReset: function() {
+-        if (this.verificationStatus != AuthPromptStatus.VERIFICATION_SUCCEEDED) {
+-            this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
+-            this.reset();
+-        }
++        this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
++        this.reset();
+     },
+ 
+     addActorToDefaultButtonWell: function(actor) {
+diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
+index eb94554..fb3cf70 100644
+--- a/js/gdm/loginDialog.js
++++ b/js/gdm/loginDialog.js
+@@ -907,6 +907,10 @@ const LoginDialog = new Lang.Class({
+         Main.ctrlAltTabManager.removeGroup(this.dialogLayout);
+     },
+ 
++    cancel: function() {
++        this._authPrompt.cancel();
++    },
++
+     addCharacter: function(unichar) {
+         this._authPrompt.addCharacter(unichar);
+     },
+diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js
+index a929451..dde7b82 100644
+--- a/js/ui/extensionSystem.js
++++ b/js/ui/extensionSystem.js
+@@ -76,7 +76,11 @@ function disableExtension(uuid) {
+         theme.unload_stylesheet(extension.stylesheet.get_path());
+     }
+ 
+-    extension.stateObj.disable();
++    try {
++        extension.stateObj.disable();
++    } catch(e) {
++        logExtensionError(uuid, e);
++    }
+ 
+     for (let i = 0; i < order.length; i++) {
+         let uuid = order[i];
+@@ -89,8 +93,10 @@ function disableExtension(uuid) {
+ 
+     extensionOrder.splice(orderIdx, 1);
+ 
+-    extension.state = ExtensionState.DISABLED;
+-    _signals.emit('extension-state-changed', extension);
++    if ( extension.state != ExtensionState.ERROR ) {
++        extension.state = ExtensionState.DISABLED;
++        _signals.emit('extension-state-changed', extension);
++    }
+ }
+ 
+ function enableExtension(uuid) {
+@@ -117,10 +123,15 @@ function enableExtension(uuid) {
+         }
+     }
+ 
+-    extension.stateObj.enable();
+-
+-    extension.state = ExtensionState.ENABLED;
+-    _signals.emit('extension-state-changed', extension);
++    try {
++        extension.stateObj.enable();
++        extension.state = ExtensionState.ENABLED;
++        _signals.emit('extension-state-changed', extension);
++        return;
++    } catch(e) {
++        logExtensionError(uuid, e);
++        return;
++    }
+ }
+ 
+ function logExtensionError(uuid, error) {
+@@ -150,7 +161,8 @@ function loadExtension(extension) {
+     } else {
+         let enabled = enabledExtensions.indexOf(extension.uuid) != -1;
+         if (enabled) {
+-            initExtension(extension.uuid);
++            if (!initExtension(extension.uuid))
++                return;
+             if (extension.state == ExtensionState.DISABLED)
+                 enableExtension(extension.uuid);
+         } else {
+@@ -205,7 +217,12 @@ function initExtension(uuid) {
+     extensionModule = extension.imports.extension;
+ 
+     if (extensionModule.init) {
+-        extensionState = extensionModule.init(extension);
++        try {
++            extensionState = extensionModule.init(extension);
++        } catch(e) {
++            logExtensionError(uuid, e);
++            return false;
++        }
+     }
+ 
+     if (!extensionState)
+@@ -214,6 +231,7 @@ function initExtension(uuid) {
+ 
+     extension.state = ExtensionState.DISABLED;
+     _signals.emit('extension-loaded', uuid);
++    return true;
+ }
+ 
+ function getEnabledExtensions() {
+@@ -235,11 +253,7 @@ function onEnabledExtensionsChanged() {
+     newEnabledExtensions.filter(function(uuid) {
+         return enabledExtensions.indexOf(uuid) == -1;
+     }).forEach(function(uuid) {
+-        try {
+             enableExtension(uuid);
+-        } catch(e) {
+-            logExtensionError(uuid, e);
+-        }
+     });
+ 
+     // Find and disable all the newly disabled extensions: UUIDs found in the
+@@ -247,11 +261,7 @@ function onEnabledExtensionsChanged() {
+     enabledExtensions.filter(function(item) {
+         return newEnabledExtensions.indexOf(item) == -1;
+     }).forEach(function(uuid) {
+-        try {
+             disableExtension(uuid);
+-        } catch(e) {
+-            logExtensionError(uuid, e);
+-        }
+     });
+ 
+     enabledExtensions = newEnabledExtensions;
+@@ -263,11 +273,7 @@ function _loadExtensions() {
+ 
+     let finder = new ExtensionUtils.ExtensionFinder();
+     finder.connect('extension-found', function(signals, extension) {
+-        try {
+-            loadExtension(extension);
+-        } catch(e) {
+-            logExtensionError(extension.uuid, e);
+-        }
++        loadExtension(extension);
+     });
+     finder.scanExtensions();
+ }
+diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
+index c66c9f6..d290a3d 100644
+--- a/js/ui/messageTray.js
++++ b/js/ui/messageTray.js
+@@ -2392,6 +2392,13 @@ const MessageTray = new Lang.Class({
+     // _updateState() figures out what (if anything) needs to be done
+     // at the present time.
+     _updateState: function() {
++        // If our state changes caused _updateState to be called,
++        // just exit now to prevent reentrancy issues.
++        if (this._updatingState)
++            return;
++
++        this._updatingState = true;
++
+         // Filter out acknowledged notifications.
+         this._notificationQueue = this._notificationQueue.filter(function(n) {
+             return !n.acknowledged;
+@@ -2474,6 +2481,8 @@ const MessageTray = new Lang.Class({
+         } else if (desktopCloneIsVisible && !desktopCloneShouldBeVisible) {
+             this._hideDesktopClone();
+         }
++
++        this._updatingState = false;
+     },
+ 
+     _tween: function(actor, statevar, value, params) {
+@@ -2838,13 +2847,13 @@ const MessageTray = new Lang.Class({
+                                                                                   Lang.bind(this, this._onSourceDoneDisplayingContent));
+ 
+         this._summaryBoxPointer.bin.child = child;
+-        this._grabHelper.grab({ actor: this._summaryBoxPointer.bin.child,
+-                                onUngrab: Lang.bind(this, this._onSummaryBoxPointerUngrabbed) });
+-
+         this._summaryBoxPointer.actor.opacity = 0;
+         this._summaryBoxPointer.actor.show();
+         this._adjustSummaryBoxPointerPosition();
+ 
++        this._grabHelper.grab({ actor: this._summaryBoxPointer.bin.child,
++                                onUngrab: Lang.bind(this, this._onSummaryBoxPointerUngrabbed) });
++
+         this._summaryBoxPointerState = State.SHOWING;
+         this._summaryBoxPointer.show(BoxPointer.PopupAnimation.FULL, Lang.bind(this, function() {
+             this._summaryBoxPointerState = State.SHOWN;




More information about the arch-commits mailing list