summaryrefslogtreecommitdiff
path: root/community
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2012-10-31 01:35:35 -0700
committerroot <root@rshg054.dnsready.net>2012-10-31 01:35:35 -0700
commit5827948456201df72a1bd73e87977c569129fb27 (patch)
tree4842639ddc958690e68f74c496ea60844200450b /community
parent455295fdb5009a8cd7b033a93e01f7450fd3087b (diff)
Wed Oct 31 01:34:59 PDT 2012
Diffstat (limited to 'community')
-rw-r--r--community/activity-log-manager/PKGBUILD42
-rw-r--r--community/activity-log-manager/activity-log-manager.install11
-rw-r--r--community/almanah/PKGBUILD8
-rw-r--r--community/arm-elf-binutils/PKGBUILD6
-rw-r--r--community/avr-binutils/PKGBUILD19
-rw-r--r--community/connman/PKGBUILD13
-rw-r--r--community/cuda/PKGBUILD17
-rw-r--r--community/cuda/cuda.conf4
-rw-r--r--community/gedit-plugins/PKGBUILD8
-rw-r--r--community/glabels/PKGBUILD13
-rw-r--r--community/glabels/glabels-3.0.0-new-eds.patch71
-rw-r--r--community/gnome-packagekit/PKGBUILD12
-rw-r--r--community/gnome-settings-daemon-updates/0001-power-and-media-keys-Use-logind-for-suspending-and-r.patch1473
-rw-r--r--community/gnome-settings-daemon-updates/PKGBUILD29
-rw-r--r--community/gnome-settings-daemon-updates/arch.patch274
-rw-r--r--community/gnome-settings-daemon-updates/gnome-settings-daemon.install3
-rw-r--r--community/gnome-settings-daemon-updates/screensaver.patch145
-rw-r--r--community/gnote/PKGBUILD16
-rw-r--r--community/gtk-engine-unico/PKGBUILD17
-rw-r--r--community/lxdm/PKGBUILD33
-rw-r--r--community/lxdm/industrial-greeterui.patch13
-rw-r--r--community/lxdm/lxdm-pam3
-rw-r--r--community/midori/PKGBUILD17
-rw-r--r--community/midori/fix-copying.patch63
-rw-r--r--community/miredo/PKGBUILD6
-rw-r--r--community/miredo/miredo.service1
-rw-r--r--community/onboard/PKGBUILD20
-rw-r--r--community/percona-server/PKGBUILD43
-rw-r--r--community/percona-server/my.cnf10
-rw-r--r--community/percona-server/mysqld-post.sh6
-rw-r--r--community/percona-server/mysqld-tmpfile.conf1
-rw-r--r--community/percona-server/mysqld.rc77
-rw-r--r--community/percona-server/percona.install6
-rw-r--r--community/psqlodbc/PKGBUILD5
-rw-r--r--community/shotwell/PKGBUILD12
-rw-r--r--community/simavr/PKGBUILD31
-rw-r--r--community/xbmc/PKGBUILD6
-rw-r--r--community/xbmc/xbmc.install2
-rw-r--r--community/zeitgeist-datahub/PKGBUILD29
39 files changed, 2275 insertions, 290 deletions
diff --git a/community/activity-log-manager/PKGBUILD b/community/activity-log-manager/PKGBUILD
new file mode 100644
index 000000000..fe049f0fe
--- /dev/null
+++ b/community/activity-log-manager/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 79127 2012-10-30 23:07:25Z heftig $
+# Maintainer: Balló György <ballogyor+arch at gmail dot com>
+# Contributor: Ner0
+
+pkgname=activity-log-manager
+pkgver=0.9.4
+pkgrel=2
+pkgdesc="A graphical user interface which lets you easily control what gets logged by Zeitgeist"
+arch=('i686' 'x86_64')
+url="https://launchpad.net/activity-log-manager"
+license=('GPL2')
+depends=('gtk3' 'libgee' 'libzeitgeist' 'zeitgeist' 'hicolor-icon-theme' 'xdg-utils')
+makedepends=('vala' 'intltool')
+install=$pkgname.install
+source=(https://launchpad.net/$pkgname/${pkgver%.*}/$pkgver/+download/$pkgname-$pkgver.tar.gz
+ http://pkgbuild.com/~bgyorgy/sources/$pkgname-translations-20121021.tar.gz)
+md5sums=('cf85aecdaa6c0188a53d659709e1f8cd'
+ '6167df74ce44659aa94a89f31ff4d351')
+
+build() {
+ cd $pkgname-$pkgver
+
+ # Fix docdir location
+ sed -i 's/almdocdir =.*/almdocdir = ${docdir}/' Makefile.{am,in}
+
+ # Update language files
+ echo 'af ar ast be bg bn bs ca ca@valencia cs da de el eo es et eu fi fr gd gl he hi hr hu id it ja km ko ku lt lv mi ms my nb nl oc pl pt ro ru se si sk sl sr sv ta te ug uk uz vi zh_CN zh_HK zh_TW' >po/LINGUAS
+ rename $pkgname- '' ../po/$pkgname-*.po
+ mv -f -t po ../po/*
+
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir" install
+
+ # We don't have Whoopsie on Arch Linux
+ rm -r "$pkgdir/etc" "$pkgdir"/usr/share/{applications/activity-log-manager-ccpanel.desktop,dbus-1,gnome-control-center,polkit-1}
+}
diff --git a/community/activity-log-manager/activity-log-manager.install b/community/activity-log-manager/activity-log-manager.install
new file mode 100644
index 000000000..2c455e952
--- /dev/null
+++ b/community/activity-log-manager/activity-log-manager.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/community/almanah/PKGBUILD b/community/almanah/PKGBUILD
index d42dafb35..36e6b4f35 100644
--- a/community/almanah/PKGBUILD
+++ b/community/almanah/PKGBUILD
@@ -1,18 +1,18 @@
-# $Id: PKGBUILD 69798 2012-04-23 09:46:12Z ibiru $
+# $Id: PKGBUILD 79128 2012-10-30 23:07:30Z heftig $
# Maintainer: Balló György <ballogyor+arch at gmail dot com>
pkgname=almanah
-pkgver=0.9.0
+pkgver=0.10.0
pkgrel=1
pkgdesc="Small GTK+ application to allow you to keep a diary of your life"
arch=('i686' 'x86_64')
url="http://live.gnome.org/Almanah_Diary"
license=('GPL')
-depends=('evolution-data-server>=3.4.0' 'gtkspell3' 'libcryptui' 'xdg-utils')
+depends=('evolution-data-server>=3.6.0' 'gtkspell3' 'libcryptui' 'xdg-utils')
makedepends=('intltool')
install=$pkgname.install
source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz)
-sha256sums=('c8928c5beda9e7a54040ba5a87873ad8fad5feb5585546b0ab5e57d08c3aa7c6')
+sha256sums=('fd213b53ca2a9832df868ee44ed7c446cd6b320651e2f2d10e0a0c98aa3bfced')
build() {
cd "$srcdir/$pkgname-$pkgver"
diff --git a/community/arm-elf-binutils/PKGBUILD b/community/arm-elf-binutils/PKGBUILD
index ac242c134..15768e09e 100644
--- a/community/arm-elf-binutils/PKGBUILD
+++ b/community/arm-elf-binutils/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 60835 2011-12-18 22:14:40Z spupykin $
+# $Id: PKGBUILD 79080 2012-10-30 09:53:07Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
pkgname=arm-elf-binutils
-pkgver=2.22
+pkgver=2.23
pkgrel=1
_xprefix=/usr
pkgdesc="A set of programs to assemble and manipulate binary and object files"
@@ -12,7 +12,7 @@ options=(!libtool)
url="http://sources.redhat.com/binutils"
depends=('glibc' 'zlib')
source=(ftp://ftp.gnu.org/gnu/binutils/binutils-${pkgver}.tar.gz)
-md5sums=('8b3ad7090e3989810943aa19103fdb83')
+md5sums=('ed58f50d8920c3f1d9cb110d5c972c27')
build() {
cd $srcdir/binutils-${pkgver}
diff --git a/community/avr-binutils/PKGBUILD b/community/avr-binutils/PKGBUILD
index 18ef8f9e6..b0485b49a 100644
--- a/community/avr-binutils/PKGBUILD
+++ b/community/avr-binutils/PKGBUILD
@@ -1,36 +1,37 @@
-# $Id: PKGBUILD 69306 2012-04-13 08:25:33Z schuay $
+# $Id: PKGBUILD 79108 2012-10-30 17:34:10Z schuay $
# Maintainer: schuay <jakob.gruber@gmail.com>
# Contributor: Brad Fanella <bradfanella@archlinux.us>
# Contributor: Corrado Primier <bardo@aur.archlinux.org>
# Contributor: danst0 <danst0@west.de>
+# Build order: avr-binutils -> avr-gcc -> avr-libc
+
pkgname=avr-binutils
-pkgver=2.22
-pkgrel=3
+pkgver=2.23
+pkgrel=1
_pkgname=binutils
-_date=20120323
pkgdesc="A set of programs to assemble and manipulate binary and object files for the avr architecture"
arch=('i686' 'x86_64')
url="http://www.gnu.org/software/binutils/"
license=('GPL')
-depends=('glibc>=2.15' 'zlib')
+depends=('glibc>=2.16' 'zlib')
provides=("binutils-avr=$pkgver")
replaces=('binutils-avr')
options=('!libtool' '!distcc' '!ccache')
-source=(ftp://ftp.archlinux.org/other/${_pkgname}/${_pkgname}-${pkgver}_${_date}.tar.bz2)
+source=(ftp://ftp.gnu.org/gnu/binutils/binutils-${pkgver}.tar.gz)
_builddir=binutils-build
build() {
cd ${srcdir}
- config_guess=$(${_pkgname}/config.guess)
+ config_guess=$(${_pkgname}-${pkgver}/config.guess)
rm -rf ${_builddir}
mkdir ${_builddir} && cd ${_builddir}
[[ $CARCH == "x86_64" ]] && CONFIGFLAG="--enable-64-bit-bfd --disable-multilib"
- ${srcdir}/${_pkgname}/configure \
+ ${srcdir}/${_pkgname}-${pkgver}/configure \
--prefix=/usr \
--build=${config_guess} \
--disable-nls \
@@ -64,4 +65,4 @@ package() {
done
}
-md5sums=('de2ac4298732827f8af706fc24020330')
+md5sums=('ed58f50d8920c3f1d9cb110d5c972c27')
diff --git a/community/connman/PKGBUILD b/community/connman/PKGBUILD
index b6ca46685..a9d85ff85 100644
--- a/community/connman/PKGBUILD
+++ b/community/connman/PKGBUILD
@@ -1,10 +1,10 @@
-#$Id: PKGBUILD 77533 2012-10-11 21:23:35Z dwallace $
+#$Id: PKGBUILD 79133 2012-10-31 00:23:46Z dwallace $
# Maintainer: Daniel Wallace <danielwallace at gtmanfred dot com>
# Contributor: Lucas De Marchi <lucas.de.marchi@gmail.com>
pkgname=connman
-pkgver=1.8
-pkgrel=1
+pkgver=1.9
+pkgrel=2
pkgdesc="Wireless LAN network manager"
url="http://connman.net/"
arch=('i686' 'x86_64')
@@ -19,9 +19,6 @@ source=('connmand-daemon'
"http://www.kernel.org/pub/linux/network/${pkgname}/${pkgname}-${pkgver}.tar.bz2"
'allow_group_network.diff')
-md5sums=('88ece7cbf1d0d289545ce4f8553fdab8'
- '689468f92a1dcb2c0e30d7d00410ad87'
- 'a8d22ee089fb0ed725130d16ad393047')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
@@ -43,4 +40,8 @@ package(){
make DESTDIR="${pkgdir}" install
install -Dm755 "$srcdir"/connmand-daemon "$pkgdir"/etc/rc.d/connmand
+ install -Dm755 "$srcdir/$pkgname-$pkgver/client/${pkgname}ctl" "$pkgdir/usr/sbin/${pkgname}ctl"
}
+md5sums=('88ece7cbf1d0d289545ce4f8553fdab8'
+ '8196824f400719dd172222a355ad9592'
+ 'a8d22ee089fb0ed725130d16ad393047')
diff --git a/community/cuda/PKGBUILD b/community/cuda/PKGBUILD
index e2e58fb3a..5ff98a12d 100644
--- a/community/cuda/PKGBUILD
+++ b/community/cuda/PKGBUILD
@@ -2,7 +2,7 @@
# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com>
pkgname=cuda
pkgver=5.0.35
-pkgrel=2
+pkgrel=3
pkgdesc="NVIDIA's GPU programming toolkit"
arch=('i686' 'x86_64')
url="http://www.nvidia.com/object/cuda_home.html"
@@ -16,12 +16,12 @@ if [ "$CARCH" = "i686" ]; then
_arch=32
md5sums=('40c514acb750902c54656b97a6deded6'
'7e5990e03eea90075f5a500e91a0c3d3'
- 'c0781c63e726eaf03e10135b42b85729')
+ 'ffe1e6fb7f97b23da28fd94a5fd7356d')
else
_arch=64
md5sums=('df796fb9ab66075b5c346b3fd0bf596b'
'7e5990e03eea90075f5a500e91a0c3d3'
- 'c0781c63e726eaf03e10135b42b85729')
+ 'ffe1e6fb7f97b23da28fd94a5fd7356d')
fi
install=cuda.install
source=(http://developer.download.nvidia.com/compute/cuda/5_0/rel-update-1/installers/cuda_${pkgver}_linux_${_arch}_fedora16-1.run
@@ -42,13 +42,18 @@ package() {
# fix nvidia path fuckup
sed -i "s|/build/pkg||g" $pkgdir/opt/cuda/bin/nvvp
+ sed -i "s|/build/pkg||g" $pkgdir/opt/cuda/bin/nsight
- install -Dm755 cuda.sh $pkgdir/etc/profile.d/cuda.sh
- install -Dm644 cuda.conf $pkgdir/etc/ld.so.conf.d/cuda.conf
-
+ install -Dm755 $srcdir/cuda.sh $pkgdir/etc/profile.d/cuda.sh
+ install -Dm644 $srcdir/cuda.conf $pkgdir/etc/ld.so.conf.d/cuda.conf
install -Dm644 $pkgdir/opt/cuda/doc/EULA.txt $pkgdir/usr/share/licenses/$pkgname/LICENSE
# correct cuda path in samples
cd $pkgdir/opt/cuda/samples
find . -type f | egrep -v '(ppm|pgm)' | xargs grep -lI "$pkgdir/opt/cuda" | xargs sed -i "s|$pkgdir/opt/cuda|/opt/cuda|g"
+
+ # make cuda-gdk work
+ mkdir -p $pkgdir/usr/lib
+ cd $pkgdir/usr/lib
+ ln -s /usr/lib/libncurses.so.5 libtinfo.so.5
}
diff --git a/community/cuda/cuda.conf b/community/cuda/cuda.conf
index 0f55b39a7..6161bb0da 100644
--- a/community/cuda/cuda.conf
+++ b/community/cuda/cuda.conf
@@ -1,2 +1,2 @@
-/opt/cuda-toolkit/lib64
-/opt/cuda-toolkit/lib
+/opt/cuda/lib64
+/opt/cuda/lib
diff --git a/community/gedit-plugins/PKGBUILD b/community/gedit-plugins/PKGBUILD
index 7555de181..9db934a71 100644
--- a/community/gedit-plugins/PKGBUILD
+++ b/community/gedit-plugins/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 70017 2012-04-28 09:24:10Z allan $
+# $Id: PKGBUILD 79119 2012-10-30 23:06:21Z heftig $
# Maintainer: Ionut Biru <ibiru@archlinux.org>
# Contributor: Alexander Rødseth <rodseth@gmail.com>
# Contributor: Hugo Doria <hugo@archlinux.org>
@@ -6,8 +6,8 @@
# Contributor: zhuqin <zhuqin83@gmail.com>
pkgname=gedit-plugins
-pkgver=3.4.0
-pkgrel=2
+pkgver=3.6.1
+pkgrel=1
pkgdesc="Plugins for gedit"
arch=('x86_64' 'i686')
license=('GPL')
@@ -19,7 +19,7 @@ makedepends=('intltool' 'gnome-doc-utils' 'vte3')
options=('!libtool' '!emptydirs')
install=gedit-plugins.install
source=("http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver:0:3}/$pkgname-$pkgver.tar.xz")
-sha256sums=('a66138b43e1a77f39258f04936be35163b4c6bfd49643791ca445cb3c3d60e0a')
+sha256sums=('c5e92830e6029110bf1117bd9f31b23a9ad907210b8cb37039772f5bfcf6d174')
build() {
cd $pkgname-$pkgver
diff --git a/community/glabels/PKGBUILD b/community/glabels/PKGBUILD
index baad6680c..5276b2464 100644
--- a/community/glabels/PKGBUILD
+++ b/community/glabels/PKGBUILD
@@ -1,24 +1,27 @@
-# $Id: PKGBUILD 77545 2012-10-12 03:02:27Z bgyorgy $
+# $Id: PKGBUILD 79126 2012-10-30 23:07:20Z heftig $
# Maintainer: Balló György <ballogyor+arch at gmail dot com>
# Contributor: yugrotavele <yugrotavele at archlinux dot us>
# Contributor: Damir Perisa <damir@archlinux.org>
pkgname=glabels
pkgver=3.0.1
-pkgrel=1
+pkgrel=2
pkgdesc="Creating labels and business cards the very easy way"
arch=('i686' 'x86_64')
url="http://glabels.org/"
license=('GPL' 'LGPL')
-depends=('librsvg' 'evolution-data-server>=3.4.0' 'qrencode' 'iec16022' 'dconf' 'desktop-file-utils' 'xdg-utils')
+depends=('librsvg' 'evolution-data-server>=3.6.0' 'qrencode' 'iec16022' 'dconf' 'desktop-file-utils' 'xdg-utils')
makedepends=('barcode' 'intltool' 'gnome-doc-utils')
options=('!libtool')
install=$pkgname.install
-source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz)
-sha256sums=('99810705b9fcb234f085ed4ac6dbea50cc5b232c6d8ca05ab2c0634673fb9bd2')
+source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz
+ glabels-3.0.0-new-eds.patch)
+sha256sums=('99810705b9fcb234f085ed4ac6dbea50cc5b232c6d8ca05ab2c0634673fb9bd2'
+ 'f02ecf12e10b1d406607bad65f81e53ebd5d56fabe46035a47bd6fe1ec8bf70b')
build() {
cd "$srcdir/$pkgname-$pkgver"
+ patch -Np1 -i "$srcdir/glabels-3.0.0-new-eds.patch"
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
--disable-static --disable-schemas-compile
diff --git a/community/glabels/glabels-3.0.0-new-eds.patch b/community/glabels/glabels-3.0.0-new-eds.patch
new file mode 100644
index 000000000..9cae4c076
--- /dev/null
+++ b/community/glabels/glabels-3.0.0-new-eds.patch
@@ -0,0 +1,71 @@
+diff -up glabels-3.0.0/src/merge-evolution.c.new-eds glabels-3.0.0/src/merge-evolution.c
+--- glabels-3.0.0/src/merge-evolution.c.new-eds 2011-04-04 01:02:48.000000000 +0200
++++ glabels-3.0.0/src/merge-evolution.c 2012-08-29 11:54:20.240577838 +0200
+@@ -29,7 +29,7 @@
+
+ #include "merge-evolution.h"
+
+-#include <libebook/e-book.h>
++#include <libebook/libebook.h>
+ #include <glib/gi18n.h>
+ #include <stdio.h>
+ #include <string.h>
+@@ -297,6 +297,31 @@ static gint sort_contact_by_file_as(gcon
+ /*--------------------------------------------------------------------------*/
+ /* Open merge source. */
+ /*--------------------------------------------------------------------------*/
++static EBook *
++gl_open_system_addressbook (GError **error)
++{
++ ESourceRegistry *registry;
++ EBook *book = NULL;
++ ESource *source;
++
++ registry = e_source_registry_new_sync (NULL, error);
++ if (!registry)
++ return NULL;
++
++ source = e_source_registry_ref_builtin_address_book (registry);
++ if (!source) {
++ g_object_unref (registry);
++ return NULL;
++ }
++
++ book = e_book_new (source, error);
++
++ g_object_unref (source);
++ g_object_unref (registry);
++
++ return book;
++}
++
+ static void
+ gl_merge_evolution_open (glMerge *merge)
+ {
+@@ -317,12 +342,12 @@ gl_merge_evolution_open (glMerge *merge)
+ return;
+ }
+
+- merge_evolution->priv->book = e_book_new_system_addressbook(&error);
++ merge_evolution->priv->book = gl_open_system_addressbook(&error);
+ if (!merge_evolution->priv->book) {
+ g_warning ("Couldn't open addressbook.");
+ if (error)
+ {
+- g_warning ("e_book_new_system_addressbook: %s", error->message);
++ g_warning ("gl_open_system_addressbook: %s", error->message);
+ g_error_free (error);
+ }
+ e_book_query_unref(query);
+diff -up glabels-3.0.0/src/merge-vcard.c.new-eds glabels-3.0.0/src/merge-vcard.c
+--- glabels-3.0.0/src/merge-vcard.c.new-eds 2011-04-04 01:02:48.000000000 +0200
++++ glabels-3.0.0/src/merge-vcard.c 2012-08-29 11:54:20.241577849 +0200
+@@ -27,7 +27,7 @@
+
+ #include "merge-vcard.h"
+
+-#include <libebook/e-contact.h>
++#include <libebook/libebook.h>
+ #include <stdio.h>
+ #include <string.h>
+ #include <errno.h>
diff --git a/community/gnome-packagekit/PKGBUILD b/community/gnome-packagekit/PKGBUILD
index c8b1a8f34..2d101a133 100644
--- a/community/gnome-packagekit/PKGBUILD
+++ b/community/gnome-packagekit/PKGBUILD
@@ -1,22 +1,22 @@
-# $Id: PKGBUILD 75404 2012-08-22 06:01:57Z jconder $
+# $Id: PKGBUILD 79120 2012-10-30 23:06:26Z heftig $
# Maintainer: Jonathan Conder <jonno.conder@gmail.com>
pkgname=gnome-packagekit
-pkgver=3.4.2
-pkgrel=2
+pkgver=3.6.0
+pkgrel=1
pkgdesc='Collection of graphical tools for PackageKit to be used in the GNOME desktop'
arch=('i686' 'x86_64')
url='http://www.packagekit.org/'
license=('GPL')
-depends=('dconf' 'desktop-file-utils' 'gtk3' 'hicolor-icon-theme' 'libnotify'
+depends=('desktop-file-utils' 'gtk3' 'hicolor-icon-theme' 'libnotify'
'packagekit')
-makedepends=('gconf' 'gtk-doc' 'intltool' 'libcanberra' 'upower')
+makedepends=('gconf' 'gtk-doc' 'intltool' 'itstool' 'libcanberra' 'upower')
optdepends=('polkit-gnome: required for privileged actions'
'gnome-settings-daemon-updates: update and message notifications')
options=('!emptydirs' '!libtool')
install="$pkgname.install"
source=("http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz")
-sha256sums=('b7d87db07cf979409b0e997af32b81c02f5324681978f1d687973e7570c5bdca')
+sha256sums=('9f096ec72fb81a78c426d9747145405a8b99e1d8418978828796768c8532d676')
build() {
cd "$srcdir/$pkgname-$pkgver"
diff --git a/community/gnome-settings-daemon-updates/0001-power-and-media-keys-Use-logind-for-suspending-and-r.patch b/community/gnome-settings-daemon-updates/0001-power-and-media-keys-Use-logind-for-suspending-and-r.patch
new file mode 100644
index 000000000..293a419df
--- /dev/null
+++ b/community/gnome-settings-daemon-updates/0001-power-and-media-keys-Use-logind-for-suspending-and-r.patch
@@ -0,0 +1,1473 @@
+From 79ead5309fe21e77cfe58adc6a9340953c2d52f4 Mon Sep 17 00:00:00 2001
+From: Richard Hughes <richard@hughsie.com>
+Date: Fri, 21 Sep 2012 11:56:53 +0100
+Subject: [PATCH] power and media-keys: Use logind for suspending and
+ rebooting the system
+
+Use the new logind features to suspend and resume but making sure we opt out
+of logind handling the sleep and power keys, and also inhibiting for lid close
+auto-suspend if there is an external monitor connected.
+
+Also use a delay inihibit for logind so that we can do actions on suspend like
+blanking the screen using the screensaver and also poking the screensaver on
+resume.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=680689
+---
+ plugins/common/Makefile.am | 4 +-
+ plugins/common/gsd-power-helper.c | 203 --------
+ plugins/common/gsd-power-helper.h | 35 --
+ plugins/media-keys/gsd-media-keys-manager.c | 156 +++++--
+ plugins/power/gsd-power-manager.c | 699 +++++++++++++++++++---------
+ 5 files changed, 595 insertions(+), 502 deletions(-)
+ delete mode 100644 plugins/common/gsd-power-helper.c
+ delete mode 100644 plugins/common/gsd-power-helper.h
+
+diff --git a/plugins/common/Makefile.am b/plugins/common/Makefile.am
+index 7e50db4..b0e907c 100644
+--- a/plugins/common/Makefile.am
++++ b/plugins/common/Makefile.am
+@@ -6,9 +6,7 @@ libcommon_la_SOURCES = \
+ gsd-keygrab.c \
+ gsd-keygrab.h \
+ gsd-input-helper.c \
+- gsd-input-helper.h \
+- gsd-power-helper.c \
+- gsd-power-helper.h
++ gsd-input-helper.h
+
+ libcommon_la_CPPFLAGS = \
+ $(AM_CPPFLAGS)
+diff --git a/plugins/common/gsd-power-helper.c b/plugins/common/gsd-power-helper.c
+deleted file mode 100644
+index 27d0eda..0000000
+--- a/plugins/common/gsd-power-helper.c
++++ /dev/null
+@@ -1,203 +0,0 @@
+-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+- *
+- * Copyright (C) 2012 Bastien Nocera <hadess@hadess.net>
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+- *
+- */
+-
+-#include "config.h"
+-
+-#include "gsd-power-helper.h"
+-
+-#define SYSTEMD_DBUS_NAME "org.freedesktop.login1"
+-#define SYSTEMD_DBUS_PATH "/org/freedesktop/login1"
+-#define SYSTEMD_DBUS_INTERFACE "org.freedesktop.login1.Manager"
+-
+-#define CONSOLEKIT_DBUS_NAME "org.freedesktop.ConsoleKit"
+-#define CONSOLEKIT_DBUS_PATH_MANAGER "/org/freedesktop/ConsoleKit/Manager"
+-#define CONSOLEKIT_DBUS_INTERFACE_MANAGER "org.freedesktop.ConsoleKit.Manager"
+-
+-#ifdef HAVE_SYSTEMD
+-static void
+-systemd_stop (void)
+-{
+- GDBusConnection *bus;
+-
+- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
+- g_dbus_connection_call (bus,
+- SYSTEMD_DBUS_NAME,
+- SYSTEMD_DBUS_PATH,
+- SYSTEMD_DBUS_INTERFACE,
+- "PowerOff",
+- g_variant_new ("(b)", FALSE),
+- NULL, 0, G_MAXINT, NULL, NULL, NULL);
+- g_object_unref (bus);
+-}
+-
+-static void
+-systemd_suspend (void)
+-{
+- GDBusConnection *bus;
+-
+- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
+- g_dbus_connection_call (bus,
+- SYSTEMD_DBUS_NAME,
+- SYSTEMD_DBUS_PATH,
+- SYSTEMD_DBUS_INTERFACE,
+- "Suspend",
+- g_variant_new ("(b)", TRUE),
+- NULL, 0, G_MAXINT, NULL, NULL, NULL);
+- g_object_unref (bus);
+-}
+-
+-static void
+-systemd_hibernate (void)
+-{
+- GDBusConnection *bus;
+-
+- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
+- g_dbus_connection_call (bus,
+- SYSTEMD_DBUS_NAME,
+- SYSTEMD_DBUS_PATH,
+- SYSTEMD_DBUS_INTERFACE,
+- "Hibernate",
+- g_variant_new ("(b)", TRUE),
+- NULL, 0, G_MAXINT, NULL, NULL, NULL);
+- g_object_unref (bus);
+-}
+-
+-#else /* HAVE_SYSTEMD */
+-
+-static void
+-consolekit_stop_cb (GObject *source_object,
+- GAsyncResult *res,
+- gpointer user_data)
+-{
+- GVariant *result;
+- GError *error = NULL;
+-
+- result = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object),
+- res,
+- &error);
+- if (result == NULL) {
+- g_warning ("couldn't stop using ConsoleKit: %s",
+- error->message);
+- g_error_free (error);
+- } else {
+- g_variant_unref (result);
+- }
+-}
+-
+-static void
+-consolekit_stop (void)
+-{
+- GError *error = NULL;
+- GDBusProxy *proxy;
+-
+- /* power down the machine in a safe way */
+- proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
+- G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
+- NULL,
+- CONSOLEKIT_DBUS_NAME,
+- CONSOLEKIT_DBUS_PATH_MANAGER,
+- CONSOLEKIT_DBUS_INTERFACE_MANAGER,
+- NULL, &error);
+- if (proxy == NULL) {
+- g_warning ("cannot connect to ConsoleKit: %s",
+- error->message);
+- g_error_free (error);
+- return;
+- }
+- g_dbus_proxy_call (proxy,
+- "Stop",
+- NULL,
+- G_DBUS_CALL_FLAGS_NONE,
+- -1, NULL,
+- consolekit_stop_cb, NULL);
+- g_object_unref (proxy);
+-}
+-static void
+-upower_sleep_cb (GObject *source_object,
+- GAsyncResult *res,
+- gpointer user_data)
+-{
+- GVariant *result;
+- GError *error = NULL;
+-
+- result = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object),
+- res,
+- &error);
+- if (result == NULL) {
+- g_warning ("couldn't sleep using UPower: %s",
+- error->message);
+- g_error_free (error);
+- } else {
+- g_variant_unref (result);
+- }
+-}
+-
+-static void
+-upower_suspend (GDBusProxy *upower_proxy)
+-{
+- g_dbus_proxy_call (upower_proxy,
+- "Suspend",
+- NULL,
+- G_DBUS_CALL_FLAGS_NONE,
+- -1, NULL,
+- upower_sleep_cb, NULL);
+-}
+-
+-static void
+-upower_hibernate (GDBusProxy *upower_proxy)
+-{
+- g_dbus_proxy_call (upower_proxy,
+- "Hibernate",
+- NULL,
+- G_DBUS_CALL_FLAGS_NONE,
+- -1, NULL,
+- upower_sleep_cb, NULL);
+-}
+-#endif /* HAVE_SYSTEMD */
+-
+-void
+-gsd_power_suspend (GDBusProxy *upower_proxy)
+-{
+-#ifdef HAVE_SYSTEMD
+- systemd_suspend ();
+-#else
+- upower_suspend (upower_proxy);
+-#endif
+-}
+-
+-void
+-gsd_power_poweroff (void)
+-{
+-#ifdef HAVE_SYSTEMD
+- systemd_stop ();
+-#else
+- consolekit_stop ();
+-#endif
+-}
+-
+-void
+-gsd_power_hibernate (GDBusProxy *upower_proxy)
+-{
+-#ifdef HAVE_SYSTEMD
+- systemd_hibernate ();
+-#else
+- upower_hibernate (upower_proxy);
+-#endif
+-}
+diff --git a/plugins/common/gsd-power-helper.h b/plugins/common/gsd-power-helper.h
+deleted file mode 100644
+index e3be14f..0000000
+--- a/plugins/common/gsd-power-helper.h
++++ /dev/null
+@@ -1,35 +0,0 @@
+-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+- *
+- * Copyright (C) 2012 Bastien Nocera <hadess@hadess.net>
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+- */
+-
+-#ifndef __GSD_POWER_HELPER_H
+-#define __GSD_POWER_HELPER_H
+-
+-#include <glib.h>
+-
+-G_BEGIN_DECLS
+-
+-#include <gio/gio.h>
+-
+-void gsd_power_suspend (GDBusProxy *upower_proxy);
+-void gsd_power_hibernate (GDBusProxy *upower_proxy);
+-void gsd_power_poweroff (void);
+-
+-G_END_DECLS
+-
+-#endif /* __GSD_POWER_HELPER_H */
+diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
+index 9c84d7f..a2f277e 100644
+--- a/plugins/media-keys/gsd-media-keys-manager.c
++++ b/plugins/media-keys/gsd-media-keys-manager.c
+@@ -39,6 +39,7 @@
+ #include <gdk/gdkx.h>
+ #include <gtk/gtk.h>
+ #include <gio/gdesktopappinfo.h>
++#include <gio/gunixfdlist.h>
+
+ #ifdef HAVE_GUDEV
+ #include <gudev/gudev.h>
+@@ -51,7 +52,6 @@
+ #include "shortcuts-list.h"
+ #include "gsd-osd-window.h"
+ #include "gsd-input-helper.h"
+-#include "gsd-power-helper.h"
+ #include "gsd-enums.h"
+
+ #include <canberra.h>
+@@ -105,6 +105,10 @@ static const gchar introspection_xml[] =
+ #define KEY_CURRENT_INPUT_SOURCE "current"
+ #define KEY_INPUT_SOURCES "sources"
+
++#define SYSTEMD_DBUS_NAME "org.freedesktop.login1"
++#define SYSTEMD_DBUS_PATH "/org/freedesktop/login1"
++#define SYSTEMD_DBUS_INTERFACE "org.freedesktop.login1.Manager"
++
+ #define GSD_MEDIA_KEYS_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_MEDIA_KEYS_MANAGER, GsdMediaKeysManagerPrivate))
+
+ typedef struct {
+@@ -148,10 +152,13 @@ struct GsdMediaKeysManagerPrivate
+
+ /* Power stuff */
+ GSettings *power_settings;
+- GDBusProxy *upower_proxy;
+ GDBusProxy *power_screen_proxy;
+ GDBusProxy *power_keyboard_proxy;
+
++ /* systemd stuff */
++ GDBusProxy *logind_proxy;
++ gint inhibit_keys_fd;
++
+ /* Multihead stuff */
+ GdkScreen *current_screen;
+ GSList *screens;
+@@ -1618,6 +1625,38 @@ do_toggle_contrast_action (GsdMediaKeysManager *manager)
+ }
+
+ static void
++power_action_suspend (GsdMediaKeysManager *manager)
++{
++#ifndef HAVE_SYSTEMD
++ g_warning ("no systemd support");
++ return;
++#endif
++ g_dbus_proxy_call (manager->priv->logind_proxy,
++ "Suspend",
++ g_variant_new ("(b)", TRUE),
++ G_DBUS_CALL_FLAGS_NONE,
++ G_MAXINT,
++ manager->priv->bus_cancellable,
++ NULL, NULL);
++}
++
++static void
++power_action_hibernate (GsdMediaKeysManager *manager)
++{
++#ifndef HAVE_SYSTEMD
++ g_warning ("no systemd support");
++ return;
++#endif
++ g_dbus_proxy_call (manager->priv->logind_proxy,
++ "Hibernate",
++ g_variant_new ("(b)", TRUE),
++ G_DBUS_CALL_FLAGS_NONE,
++ G_MAXINT,
++ manager->priv->bus_cancellable,
++ NULL, NULL);
++}
++
++static void
+ do_config_power_action (GsdMediaKeysManager *manager,
+ const gchar *config_key)
+ {
+@@ -1627,14 +1666,14 @@ do_config_power_action (GsdMediaKeysManager *manager,
+ config_key);
+ switch (action_type) {
+ case GSD_POWER_ACTION_SUSPEND:
+- gsd_power_suspend (manager->priv->upower_proxy);
++ power_action_suspend (manager);
+ break;
+ case GSD_POWER_ACTION_INTERACTIVE:
+ case GSD_POWER_ACTION_SHUTDOWN:
+ gnome_session_shutdown (manager);
+ break;
+ case GSD_POWER_ACTION_HIBERNATE:
+- gsd_power_hibernate (manager->priv->upower_proxy);
++ power_action_hibernate (manager);
+ break;
+ case GSD_POWER_ACTION_BLANK:
+ case GSD_POWER_ACTION_NOTHING:
+@@ -2248,6 +2287,7 @@ gsd_media_keys_manager_stop (GsdMediaKeysManager *manager)
+ }
+ #endif /* HAVE_GUDEV */
+
++ g_clear_object (&priv->logind_proxy);
+ if (priv->settings) {
+ g_object_unref (priv->settings);
+ priv->settings = NULL;
+@@ -2268,11 +2308,6 @@ gsd_media_keys_manager_stop (GsdMediaKeysManager *manager)
+ priv->power_keyboard_proxy = NULL;
+ }
+
+- if (priv->upower_proxy) {
+- g_object_unref (priv->upower_proxy);
+- priv->upower_proxy = NULL;
+- }
+-
+ if (priv->cancellable != NULL) {
+ g_cancellable_cancel (priv->cancellable);
+ g_object_unref (priv->cancellable);
+@@ -2363,9 +2398,85 @@ gsd_media_keys_manager_class_init (GsdMediaKeysManagerClass *klass)
+ }
+
+ static void
++inhibit_done (GObject *source,
++ GAsyncResult *result,
++ gpointer user_data)
++{
++ GDBusProxy *proxy = G_DBUS_PROXY (source);
++ GsdMediaKeysManager *manager = GSD_MEDIA_KEYS_MANAGER (user_data);
++ GError *error = NULL;
++ GVariant *res;
++ GUnixFDList *fd_list = NULL;
++ gint idx;
++
++ res = g_dbus_proxy_call_with_unix_fd_list_finish (proxy, &fd_list, result, &error);
++ if (res == NULL) {
++ g_warning ("Unable to inhibit keypresses: %s", error->message);
++ g_error_free (error);
++ } else {
++ g_variant_get (res, "(h)", &idx);
++ manager->priv->inhibit_keys_fd = g_unix_fd_list_get (fd_list, idx, &error);
++ if (manager->priv->inhibit_keys_fd == -1) {
++ g_warning ("Failed to receive system inhibitor fd: %s", error->message);
++ g_error_free (error);
++ }
++ g_debug ("System inhibitor fd is %d", manager->priv->inhibit_keys_fd);
++ g_object_unref (fd_list);
++ g_variant_unref (res);
++ }
++}
++
++static void
+ gsd_media_keys_manager_init (GsdMediaKeysManager *manager)
+ {
++ GError *error;
++ GDBusConnection *bus;
++
++ error = NULL;
+ manager->priv = GSD_MEDIA_KEYS_MANAGER_GET_PRIVATE (manager);
++
++ bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
++ if (bus == NULL) {
++ g_warning ("Failed to connect to system bus: %s",
++ error->message);
++ g_error_free (error);
++ return;
++ }
++
++ manager->priv->logind_proxy =
++ g_dbus_proxy_new_sync (bus,
++ 0,
++ NULL,
++ SYSTEMD_DBUS_NAME,
++ SYSTEMD_DBUS_PATH,
++ SYSTEMD_DBUS_INTERFACE,
++ NULL,
++ &error);
++
++ if (manager->priv->logind_proxy == NULL) {
++ g_warning ("Failed to connect to systemd: %s",
++ error->message);
++ g_error_free (error);
++ }
++
++ g_object_unref (bus);
++
++ g_debug ("Adding system inhibitors for power keys");
++ manager->priv->inhibit_keys_fd = -1;
++ g_dbus_proxy_call_with_unix_fd_list (manager->priv->logind_proxy,
++ "Inhibit",
++ g_variant_new ("(ssss)",
++ "handle-power-key:handle-suspend-key:handle-hibernate-key",
++ g_get_user_name (),
++ "GNOME handling keypresses",
++ "block"),
++ 0,
++ G_MAXINT,
++ NULL,
++ NULL,
++ inhibit_done,
++ manager);
++
+ }
+
+ static void
+@@ -2382,6 +2493,8 @@ gsd_media_keys_manager_finalize (GObject *object)
+
+ if (media_keys_manager->priv->start_idle_id != 0)
+ g_source_remove (media_keys_manager->priv->start_idle_id);
++ if (media_keys_manager->priv->inhibit_keys_fd != -1)
++ close (media_keys_manager->priv->inhibit_keys_fd);
+
+ G_OBJECT_CLASS (gsd_media_keys_manager_parent_class)->finalize (object);
+ }
+@@ -2401,21 +2514,6 @@ xrandr_ready_cb (GObject *source_object,
+ }
+
+ static void
+-upower_ready_cb (GObject *source_object,
+- GAsyncResult *res,
+- GsdMediaKeysManager *manager)
+-{
+- GError *error = NULL;
+-
+- manager->priv->upower_proxy = g_dbus_proxy_new_finish (res, &error);
+- if (manager->priv->upower_proxy == NULL) {
+- g_warning ("Failed to get proxy for upower: %s",
+- error->message);
+- g_error_free (error);
+- }
+-}
+-
+-static void
+ power_screen_ready_cb (GObject *source_object,
+ GAsyncResult *res,
+ GsdMediaKeysManager *manager)
+@@ -2517,16 +2615,6 @@ register_manager (GsdMediaKeysManager *manager)
+ manager->priv->bus_cancellable,
+ (GAsyncReadyCallback) on_bus_gotten,
+ manager);
+-
+- g_dbus_proxy_new_for_bus (G_BUS_TYPE_SYSTEM,
+- G_DBUS_PROXY_FLAGS_NONE,
+- NULL,
+- "org.freedesktop.UPower",
+- "/org/freedesktop/UPower",
+- "org.freedesktop.UPower",
+- NULL,
+- (GAsyncReadyCallback) upower_ready_cb,
+- manager);
+ }
+
+ GsdMediaKeysManager *
+diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
+index 070cf32..18fcedf 100644
+--- a/plugins/power/gsd-power-manager.c
++++ b/plugins/power/gsd-power-manager.c
+@@ -1,7 +1,7 @@
+ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2007 William Jon McCann <mccann@jhu.edu>
+- * Copyright (C) 2011 Richard Hughes <richard@hughsie.com>
++ * Copyright (C) 2011-2012 Richard Hughes <richard@hughsie.com>
+ * Copyright (C) 2011 Ritesh Khadgaray <khadgaray@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+@@ -32,6 +32,7 @@
+ #include <libupower-glib/upower.h>
+ #include <libnotify/notify.h>
+ #include <canberra-gtk.h>
++#include <gio/gunixfdlist.h>
+
+ #define GNOME_DESKTOP_USE_UNSTABLE_API
+ #include <libgnome-desktop/gnome-rr.h>
+@@ -43,7 +44,6 @@
+ #include "gnome-settings-session.h"
+ #include "gsd-enums.h"
+ #include "gsd-power-manager.h"
+-#include "gsd-power-helper.h"
+
+ #define GNOME_SESSION_DBUS_NAME "org.gnome.SessionManager"
+ #define GNOME_SESSION_DBUS_PATH "/org/gnome/SessionManager"
+@@ -78,6 +78,10 @@
+ #define GSD_POWER_MANAGER_RECALL_DELAY 30 /* seconds */
+ #define GSD_POWER_MANAGER_LID_CLOSE_SAFETY_TIMEOUT 30 /* seconds */
+
++#define SYSTEMD_DBUS_NAME "org.freedesktop.login1"
++#define SYSTEMD_DBUS_PATH "/org/freedesktop/login1"
++#define SYSTEMD_DBUS_INTERFACE "org.freedesktop.login1.Manager"
++
+ /* Keep this in sync with gnome-shell */
+ #define SCREENSAVER_FADE_TIME 10 /* seconds */
+
+@@ -193,14 +197,20 @@ struct GsdPowerManagerPrivate
+ ca_context *canberra_context;
+ ca_proplist *critical_alert_loop_props;
+ guint32 critical_alert_timeout_id;
+- GDBusProxy *screensaver_proxy;
+ GDBusProxy *session_proxy;
+ GDBusProxy *session_presence_proxy;
+ GpmIdletime *idletime;
+ GsdPowerIdleMode current_idle_mode;
+- guint lid_close_safety_timer_id;
+ GtkStatusIcon *status_icon;
+ guint xscreensaver_watchdog_timer_id;
++
++ /* systemd stuff */
++ GDBusProxy *logind_proxy;
++ gint inhibit_lid_switch_fd;
++ gboolean inhibit_lid_switch_taken;
++ gint inhibit_suspend_fd;
++ gboolean inhibit_suspend_taken;
++ guint inhibit_lid_switch_timer_id;
+ };
+
+ enum {
+@@ -217,8 +227,8 @@ static GIcon *engine_get_icon (GsdPowerManager *manager);
+ static gchar *engine_get_summary (GsdPowerManager *manager);
+ static void do_power_action_type (GsdPowerManager *manager, GsdPowerActionType action_type);
+ static void do_lid_closed_action (GsdPowerManager *manager);
+-static void lock_screensaver (GsdPowerManager *manager);
+-static void kill_lid_close_safety_timer (GsdPowerManager *manager);
++static void uninhibit_lid_switch (GsdPowerManager *manager);
++static gboolean external_monitor_is_connected (GnomeRRScreen *screen);
+
+ G_DEFINE_TYPE (GsdPowerManager, gsd_power_manager, G_TYPE_OBJECT)
+
+@@ -2048,6 +2058,57 @@ gnome_session_shutdown (void)
+ }
+
+ static void
++action_poweroff (GsdPowerManager *manager)
++{
++ if (manager->priv->logind_proxy == NULL) {
++ g_warning ("no systemd support");
++ return;
++ }
++ g_dbus_proxy_call (manager->priv->logind_proxy,
++ "PowerOff",
++ g_variant_new ("(b)", FALSE),
++ G_DBUS_CALL_FLAGS_NONE,
++ G_MAXINT,
++ NULL,
++ NULL,
++ NULL);
++}
++
++static void
++action_suspend (GsdPowerManager *manager)
++{
++ if (manager->priv->logind_proxy == NULL) {
++ g_warning ("no systemd support");
++ return;
++ }
++ g_dbus_proxy_call (manager->priv->logind_proxy,
++ "Suspend",
++ g_variant_new ("(b)", FALSE),
++ G_DBUS_CALL_FLAGS_NONE,
++ G_MAXINT,
++ NULL,
++ NULL,
++ NULL);
++}
++
++static void
++action_hibernate (GsdPowerManager *manager)
++{
++ if (manager->priv->logind_proxy == NULL) {
++ g_warning ("no systemd support");
++ return;
++ }
++ g_dbus_proxy_call (manager->priv->logind_proxy,
++ "Hibernate",
++ g_variant_new ("(b)", FALSE),
++ G_DBUS_CALL_FLAGS_NONE,
++ G_MAXINT,
++ NULL,
++ NULL,
++ NULL);
++}
++
++static void
+ do_power_action_type (GsdPowerManager *manager,
+ GsdPowerActionType action_type)
+ {
+@@ -2056,19 +2117,19 @@ do_power_action_type (GsdPowerManager *manager,
+
+ switch (action_type) {
+ case GSD_POWER_ACTION_SUSPEND:
+- gsd_power_suspend (manager->priv->upower_proxy);
++ action_suspend (manager);
+ break;
+ case GSD_POWER_ACTION_INTERACTIVE:
+ gnome_session_shutdown ();
+ break;
+ case GSD_POWER_ACTION_HIBERNATE:
+- gsd_power_hibernate (manager->priv->upower_proxy);
++ action_hibernate (manager);
+ break;
+ case GSD_POWER_ACTION_SHUTDOWN:
+ /* this is only used on critically low battery where
+ * hibernate is not available and is marginally better
+ * than just powering down the computer mid-write */
+- gsd_power_poweroff ();
++ action_poweroff (manager);
+ break;
+ case GSD_POWER_ACTION_BLANK:
+ ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen,
+@@ -2140,85 +2201,20 @@ upower_kbd_toggle (GsdPowerManager *manager,
+ return ret;
+ }
+
+-static void
+-do_lid_open_action (GsdPowerManager *manager)
+-{
+- gboolean ret;
+- GError *error = NULL;
+-
+- /* play a sound, using sounds from the naming spec */
+- ca_context_play (manager->priv->canberra_context, 0,
+- CA_PROP_EVENT_ID, "lid-open",
+- /* TRANSLATORS: this is the sound description */
+- CA_PROP_EVENT_DESCRIPTION, _("Lid has been opened"),
+- NULL);
+-
+- /* ensure we turn the panel back on after lid open */
+- ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen,
+- GNOME_RR_DPMS_ON,
+- &error);
+- if (!ret) {
+- g_warning ("failed to turn the panel on after lid open: %s",
+- error->message);
+- g_clear_error (&error);
+- }
+-
+- /* only toggle keyboard if present and already toggled off */
+- if (manager->priv->upower_kdb_proxy != NULL &&
+- manager->priv->kbd_brightness_old != -1) {
+- ret = upower_kbd_toggle (manager, &error);
+- if (!ret) {
+- g_warning ("failed to turn the kbd backlight on: %s",
+- error->message);
+- g_error_free (error);
+- }
+- }
+-
+- kill_lid_close_safety_timer (manager);
+-}
+-
+ static gboolean
+-is_on (GnomeRROutput *output)
++inhibit_lid_switch_timer_cb (GsdPowerManager *manager)
+ {
+- GnomeRRCrtc *crtc;
+-
+- crtc = gnome_rr_output_get_crtc (output);
+- if (!crtc)
+- return FALSE;
+- return gnome_rr_crtc_get_current_mode (crtc) != NULL;
+-}
+-
+-static gboolean
+-non_laptop_outputs_are_all_off (GnomeRRScreen *screen)
+-{
+- GnomeRROutput **outputs;
+- int i;
+-
+- outputs = gnome_rr_screen_list_outputs (screen);
+- for (i = 0; outputs[i] != NULL; i++) {
+- if (gnome_rr_output_is_laptop (outputs[i]))
+- continue;
+-
+- if (is_on (outputs[i]))
+- return FALSE;
++ if (!external_monitor_is_connected (manager->priv->x11_screen) ||
++ g_settings_get_boolean (manager->priv->settings,
++ "lid-close-suspend-with-external-monitor")) {
++ g_debug ("no external monitors for a while; uninhibiting lid close");
++ uninhibit_lid_switch (manager);
++ manager->priv->inhibit_lid_switch_timer_id = 0;
++ return G_SOURCE_REMOVE;
+ }
+
+- return TRUE;
+-}
+-
+-/* Timeout callback used to check conditions when the laptop's lid is closed but
+- * the machine is not suspended yet. We try to suspend again, so that the laptop
+- * won't overheat if placed in a backpack.
+- */
+-static gboolean
+-lid_close_safety_timer_cb (GsdPowerManager *manager)
+-{
+- manager->priv->lid_close_safety_timer_id = 0;
+-
+- g_debug ("lid has been closed for a while; trying to suspend again");
+- do_lid_closed_action (manager);
+-
+- return FALSE;
++ g_debug ("external monitor still there; trying again later");
++ return G_SOURCE_CONTINUE;
+ }
+
+ /* Sets up a timer to be triggered some seconds after closing the laptop lid
+@@ -2226,82 +2222,73 @@ lid_close_safety_timer_cb (GsdPowerManager *manager)
+ * again in the timeout handler to see if we can suspend then.
+ */
+ static void
+-setup_lid_close_safety_timer (GsdPowerManager *manager)
++setup_inhibit_lid_switch_timer (GsdPowerManager *manager)
+ {
+- if (manager->priv->lid_close_safety_timer_id != 0)
++ if (manager->priv->inhibit_lid_switch_timer_id != 0) {
++ g_debug ("lid close safety timer already set up");
+ return;
++ }
++
++ g_debug ("setting up lid close safety timer");
+
+- manager->priv->lid_close_safety_timer_id = g_timeout_add_seconds (GSD_POWER_MANAGER_LID_CLOSE_SAFETY_TIMEOUT,
+- (GSourceFunc) lid_close_safety_timer_cb,
++ manager->priv->inhibit_lid_switch_timer_id = g_timeout_add_seconds (GSD_POWER_MANAGER_LID_CLOSE_SAFETY_TIMEOUT,
++ (GSourceFunc) inhibit_lid_switch_timer_cb,
+ manager);
+- g_source_set_name_by_id (manager->priv->lid_close_safety_timer_id, "[GsdPowerManager] lid close safety timer");
++ g_source_set_name_by_id (manager->priv->inhibit_lid_switch_timer_id, "[GsdPowerManager] lid close safety timer");
+ }
+
+ static void
+-kill_lid_close_safety_timer (GsdPowerManager *manager)
++restart_inhibit_lid_switch_timer (GsdPowerManager *manager)
+ {
+- if (manager->priv->lid_close_safety_timer_id != 0) {
+- g_source_remove (manager->priv->lid_close_safety_timer_id);
+- manager->priv->lid_close_safety_timer_id = 0;
++ if (manager->priv->inhibit_lid_switch_timer_id != 0) {
++ g_debug ("restarting lid close safety timer");
++ g_source_remove (manager->priv->inhibit_lid_switch_timer_id);
++ manager->priv->inhibit_lid_switch_timer_id = 0;
++ setup_inhibit_lid_switch_timer (manager);
+ }
+ }
+
+ static void
+-suspend_with_lid_closed (GsdPowerManager *manager)
++do_lid_open_action (GsdPowerManager *manager)
+ {
+ gboolean ret;
+ GError *error = NULL;
+- GsdPowerActionType action_type;
+
+- /* maybe lock the screen if the lid is closed */
+- lock_screensaver (manager);
+-
+- /* we have different settings depending on AC state */
+- if (up_client_get_on_battery (manager->priv->up_client)) {
+- action_type = g_settings_get_enum (manager->priv->settings,
+- "lid-close-battery-action");
+- } else {
+- action_type = g_settings_get_enum (manager->priv->settings,
+- "lid-close-ac-action");
+- }
+-
+- /* check we won't melt when the lid is closed */
+- if (action_type != GSD_POWER_ACTION_SUSPEND &&
+- action_type != GSD_POWER_ACTION_HIBERNATE) {
+- if (up_client_get_lid_force_sleep (manager->priv->up_client)) {
+- g_warning ("to prevent damage, now forcing suspend");
+- do_power_action_type (manager, GSD_POWER_ACTION_SUSPEND);
+- return;
+- }
+- }
++ /* play a sound, using sounds from the naming spec */
++ ca_context_play (manager->priv->canberra_context, 0,
++ CA_PROP_EVENT_ID, "lid-open",
++ /* TRANSLATORS: this is the sound description */
++ CA_PROP_EVENT_DESCRIPTION, _("Lid has been opened"),
++ NULL);
+
+- /* ensure we turn the panel back on after resume */
++ /* ensure we turn the panel back on after lid open */
+ ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen,
+- GNOME_RR_DPMS_OFF,
++ GNOME_RR_DPMS_ON,
+ &error);
+ if (!ret) {
+- g_warning ("failed to turn the panel off after lid close: %s",
++ g_warning ("failed to turn the panel on after lid open: %s",
+ error->message);
+- g_error_free (error);
++ g_clear_error (&error);
+ }
+
+- /* only toggle keyboard if present and not already toggled */
+- if (manager->priv->upower_kdb_proxy &&
+- manager->priv->kbd_brightness_old == -1) {
++ /* only toggle keyboard if present and already toggled off */
++ if (manager->priv->upower_kdb_proxy != NULL &&
++ manager->priv->kbd_brightness_old != -1) {
+ ret = upower_kbd_toggle (manager, &error);
+ if (!ret) {
+- g_warning ("failed to turn the kbd backlight off: %s",
++ g_warning ("failed to turn the kbd backlight on: %s",
+ error->message);
+ g_error_free (error);
+ }
+ }
+-
+- do_power_action_type (manager, action_type);
+ }
+
+ static void
+ do_lid_closed_action (GsdPowerManager *manager)
+ {
++ gboolean ret;
++ GError *error = NULL;
++
+ /* play a sound, using sounds from the naming spec */
+ ca_context_play (manager->priv->canberra_context, 0,
+ CA_PROP_EVENT_ID, "lid-close",
+@@ -2309,21 +2296,22 @@ do_lid_closed_action (GsdPowerManager *manager)
+ CA_PROP_EVENT_DESCRIPTION, _("Lid has been closed"),
+ NULL);
+
++ /* turn the panel off if the lid is closed (mainly for Dells...) */
++ ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen,
++ GNOME_RR_DPMS_OFF,
++ &error);
++ if (!ret) {
++ g_warning ("failed to turn the panel off after lid close: %s",
++ error->message);
++ g_error_free (error);
++ }
++
+ /* refresh RANDR so we get an accurate view of what monitors are plugged in when the lid is closed */
+ gnome_rr_screen_refresh (manager->priv->x11_screen, NULL); /* NULL-GError */
+
+- /* perform policy action */
+- if (g_settings_get_boolean (manager->priv->settings, "lid-close-suspend-with-external-monitor")
+- || non_laptop_outputs_are_all_off (manager->priv->x11_screen)) {
+- g_debug ("lid is closed; suspending or hibernating");
+- suspend_with_lid_closed (manager);
+- } else {
+- g_debug ("lid is closed; not suspending nor hibernating since some external monitor outputs are still active");
+- setup_lid_close_safety_timer (manager);
+- }
++ restart_inhibit_lid_switch_timer (manager);
+ }
+
+-
+ static void
+ up_client_changed_cb (UpClient *client, GsdPowerManager *manager)
+ {
+@@ -2343,6 +2331,7 @@ up_client_changed_cb (UpClient *client, GsdPowerManager *manager)
+ if (manager->priv->lid_is_closed == tmp)
+ return;
+ manager->priv->lid_is_closed = tmp;
++ g_debug ("up changed: lid is now %s", tmp ? "closed" : "open");
+
+ /* fake a keypress */
+ if (tmp)
+@@ -3294,30 +3283,6 @@ gsd_power_manager_class_init (GsdPowerManagerClass *klass)
+ }
+
+ static void
+-sleep_cb_screensaver_proxy_ready_cb (GObject *source_object,
+- GAsyncResult *res,
+- gpointer user_data)
+-{
+- GError *error = NULL;
+- GsdPowerManager *manager = GSD_POWER_MANAGER (user_data);
+-
+- manager->priv->screensaver_proxy = g_dbus_proxy_new_for_bus_finish (res, &error);
+- if (manager->priv->screensaver_proxy == NULL) {
+- g_warning ("Could not connect to gnome-screensaver: %s",
+- error->message);
+- g_error_free (error);
+- return;
+- }
+-
+- /* Finish the upower_notify_sleep_cb() call by locking the screen */
+- g_debug ("gnome-screensaver activated, doing gnome-screensaver lock");
+- g_dbus_proxy_call (manager->priv->screensaver_proxy,
+- "Lock",
+- NULL, G_DBUS_CALL_FLAGS_NONE, -1,
+- NULL, NULL, NULL);
+-}
+-
+-static void
+ idle_dbus_signal_cb (GDBusProxy *proxy,
+ const gchar *sender_name,
+ const gchar *signal_name,
+@@ -3469,75 +3434,38 @@ out:
+ }
+
+ static void
+-lock_screensaver (GsdPowerManager *manager)
++lock_screensaver (GsdPowerManager *manager,
++ GSourceFunc done_cb)
+ {
+ gboolean do_lock;
+
+ do_lock = g_settings_get_boolean (manager->priv->settings_screensaver,
+ "lock-enabled");
+- if (!do_lock)
++ if (!do_lock && done_cb) {
++ done_cb (manager);
+ return;
+-
+- if (manager->priv->screensaver_proxy != NULL) {
+- g_debug ("doing gnome-screensaver lock");
+- g_dbus_proxy_call (manager->priv->screensaver_proxy,
+- "Lock",
+- NULL, G_DBUS_CALL_FLAGS_NONE, -1,
+- NULL, NULL, NULL);
+- } else {
+- /* connect to the screensaver first */
+- g_dbus_proxy_new_for_bus (G_BUS_TYPE_SESSION,
+- G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
+- NULL,
+- GS_DBUS_NAME,
+- GS_DBUS_PATH,
+- GS_DBUS_INTERFACE,
+- NULL,
+- sleep_cb_screensaver_proxy_ready_cb,
+- manager);
+ }
+-}
+-
+-static void
+-upower_notify_sleep_cb (UpClient *client,
+- UpSleepKind sleep_kind,
+- GsdPowerManager *manager)
+-{
+- lock_screensaver (manager);
+-}
+-
+-static void
+-upower_notify_resume_cb (UpClient *client,
+- UpSleepKind sleep_kind,
+- GsdPowerManager *manager)
+-{
+- gboolean ret;
+- GError *error = NULL;
+-
+- /* this displays the unlock dialogue so the user doesn't have
+- * to move the mouse or press any key before the window comes up */
+- if (manager->priv->screensaver_proxy != NULL) {
+- g_dbus_proxy_call (manager->priv->screensaver_proxy,
+- "SimulateUserActivity",
+- NULL,
+- G_DBUS_CALL_FLAGS_NONE,
+- -1, NULL, NULL, NULL);
+- }
+-
+- /* close existing notifications on resume, the system power
+- * state is probably different now */
+- notify_close_if_showing (manager->priv->notification_low);
+- notify_close_if_showing (manager->priv->notification_discharging);
+
+- /* ensure we turn the panel back on after resume */
+- ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen,
+- GNOME_RR_DPMS_ON,
+- &error);
+- if (!ret) {
+- g_warning ("failed to turn the panel on after resume: %s",
+- error->message);
+- g_error_free (error);
+- }
++ g_dbus_connection_call (manager->priv->connection,
++ GS_DBUS_NAME,
++ GS_DBUS_PATH,
++ GS_DBUS_INTERFACE,
++ "Lock",
++ NULL, NULL,
++ G_DBUS_CALL_FLAGS_NONE, -1,
++ NULL, NULL, NULL);
++
++ /* Wait until gnome-shell shield animation is done
++ *
++ * FIXME: the shell should mark the lock as active
++ * when the shield is down, then we could wait for
++ * that. This would also fix the problem that we wait
++ * needlessly when the shell has already locked the
++ * screen because it is initiating the suspend.
++ *
++ * https://bugzilla.gnome.org/show_bug.cgi?id=685053
++ */
++ g_timeout_add (500, done_cb, manager);
+ }
+
+ static void
+@@ -3696,6 +3624,287 @@ disable_builtin_screensaver (gpointer unused)
+ return TRUE;
+ }
+
++static void
++inhibit_lid_switch_done (GObject *source,
++ GAsyncResult *result,
++ gpointer user_data)
++{
++ GDBusProxy *proxy = G_DBUS_PROXY (source);
++ GsdPowerManager *manager = GSD_POWER_MANAGER (user_data);
++ GError *error = NULL;
++ GVariant *res;
++ GUnixFDList *fd_list = NULL;
++ gint idx;
++
++ res = g_dbus_proxy_call_with_unix_fd_list_finish (proxy, &fd_list, result, &error);
++ if (res == NULL) {
++ g_warning ("Unable to inhibit lid switch: %s", error->message);
++ g_error_free (error);
++ } else {
++ g_variant_get (res, "(h)", &idx);
++ manager->priv->inhibit_lid_switch_fd = g_unix_fd_list_get (fd_list, idx, &error);
++ if (manager->priv->inhibit_lid_switch_fd == -1) {
++ g_warning ("Failed to receive system inhibitor fd: %s", error->message);
++ g_error_free (error);
++ }
++ g_debug ("System inhibitor fd is %d", manager->priv->inhibit_lid_switch_fd);
++ g_object_unref (fd_list);
++ g_variant_unref (res);
++ }
++}
++
++static void
++inhibit_lid_switch (GsdPowerManager *manager)
++{
++ GVariant *params;
++
++ if (manager->priv->inhibit_lid_switch_taken) {
++ g_debug ("already inhibited lid-switch");
++ return;
++ }
++ g_debug ("Adding lid switch system inhibitor");
++ manager->priv->inhibit_lid_switch_taken = TRUE;
++
++ params = g_variant_new ("(ssss)",
++ "handle-lid-switch",
++ g_get_user_name (),
++ "Multiple displays attached",
++ "block");
++ g_dbus_proxy_call_with_unix_fd_list (manager->priv->logind_proxy,
++ "Inhibit",
++ params,
++ 0,
++ G_MAXINT,
++ NULL,
++ NULL,
++ inhibit_lid_switch_done,
++ manager);
++}
++
++static void
++uninhibit_lid_switch (GsdPowerManager *manager)
++{
++ if (manager->priv->inhibit_lid_switch_fd == -1) {
++ g_debug ("no lid-switch inhibitor");
++ return;
++ }
++ g_debug ("Removing lid switch system inhibitor");
++ close (manager->priv->inhibit_lid_switch_fd);
++ manager->priv->inhibit_lid_switch_fd = -1;
++ manager->priv->inhibit_lid_switch_taken = FALSE;
++}
++
++static void
++inhibit_suspend_done (GObject *source,
++ GAsyncResult *result,
++ gpointer user_data)
++{
++ GDBusProxy *proxy = G_DBUS_PROXY (source);
++ GsdPowerManager *manager = GSD_POWER_MANAGER (user_data);
++ GError *error = NULL;
++ GVariant *res;
++ GUnixFDList *fd_list = NULL;
++ gint idx;
++
++ res = g_dbus_proxy_call_with_unix_fd_list_finish (proxy, &fd_list, result, &error);
++ if (res == NULL) {
++ g_warning ("Unable to inhibit suspend: %s", error->message);
++ g_error_free (error);
++ } else {
++ g_variant_get (res, "(h)", &idx);
++ manager->priv->inhibit_suspend_fd = g_unix_fd_list_get (fd_list, idx, &error);
++ if (manager->priv->inhibit_suspend_fd == -1) {
++ g_warning ("Failed to receive system inhibitor fd: %s", error->message);
++ g_error_free (error);
++ }
++ g_debug ("System inhibitor fd is %d", manager->priv->inhibit_suspend_fd);
++ g_object_unref (fd_list);
++ g_variant_unref (res);
++ }
++}
++
++/* We take a delay inhibitor here, which causes logind to send a
++ * PrepareToSleep signal, which gives us a chance to lock the screen
++ * and do some other preparations.
++ */
++static void
++inhibit_suspend (GsdPowerManager *manager)
++{
++ if (manager->priv->inhibit_suspend_taken) {
++ g_debug ("already inhibited lid-switch");
++ return;
++ }
++ g_debug ("Adding suspend delay inhibitor");
++ manager->priv->inhibit_suspend_taken = TRUE;
++ g_dbus_proxy_call_with_unix_fd_list (manager->priv->logind_proxy,
++ "Inhibit",
++ g_variant_new ("(ssss)",
++ "sleep",
++ g_get_user_name (),
++ "GNOME needs to lock the screen",
++ "delay"),
++ 0,
++ G_MAXINT,
++ NULL,
++ NULL,
++ inhibit_suspend_done,
++ manager);
++}
++
++static void
++uninhibit_suspend (GsdPowerManager *manager)
++{
++ if (manager->priv->inhibit_suspend_fd == -1) {
++ g_debug ("no suspend delay inhibitor");
++ return;
++ }
++ g_debug ("Removing suspend delay inhibitor");
++ close (manager->priv->inhibit_suspend_fd);
++ manager->priv->inhibit_suspend_fd = -1;
++ manager->priv->inhibit_suspend_taken = TRUE;
++}
++
++static gboolean
++randr_output_is_on (GnomeRROutput *output)
++{
++ GnomeRRCrtc *crtc;
++
++ crtc = gnome_rr_output_get_crtc (output);
++ if (!crtc)
++ return FALSE;
++ return gnome_rr_crtc_get_current_mode (crtc) != NULL;
++}
++
++static gboolean
++external_monitor_is_connected (GnomeRRScreen *screen)
++{
++ GnomeRROutput **outputs;
++ guint i;
++
++ if (g_file_test ("/tmp/external_connected", G_FILE_TEST_EXISTS))
++ return TRUE;
++
++ /* see if we have more than one screen plugged in */
++ outputs = gnome_rr_screen_list_outputs (screen);
++ for (i = 0; outputs[i] != NULL; i++) {
++ if (randr_output_is_on (outputs[i]) &&
++ !gnome_rr_output_is_laptop (outputs[i]))
++ return TRUE;
++ }
++
++ return FALSE;
++}
++
++static void
++on_randr_event (GnomeRRScreen *screen, gpointer user_data)
++{
++ GsdPowerManager *manager = GSD_POWER_MANAGER (user_data);
++
++ /* when a second monitor is plugged in, we take the
++ * handle-lid-switch inhibitor lock of logind to prevent
++ * it from suspending.
++ *
++ * Uninhibiting is done in the inhibit_lid_switch_timer,
++ * since we want to give users a few seconds when unplugging
++ * and replugging an external monitor, not suspend right away.
++ */
++ if (external_monitor_is_connected (screen) &&
++ !g_settings_get_boolean (manager->priv->settings,
++ "lid-close-suspend-with-external-monitor")) {
++ inhibit_lid_switch (manager);
++ setup_inhibit_lid_switch_timer (manager);
++ }
++ else {
++ restart_inhibit_lid_switch_timer (manager);
++ }
++}
++
++static gboolean
++screen_lock_done_cb (gpointer data)
++{
++ GsdPowerManager *manager = data;
++
++ /* lift the delay inhibit, so logind can proceed */
++ uninhibit_suspend (manager);
++
++ return FALSE;
++}
++
++static void
++handle_suspend_actions (GsdPowerManager *manager)
++{
++ gboolean ret;
++ GError *error = NULL;
++
++ /* ensure we turn the panel back on after resume */
++ ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen,
++ GNOME_RR_DPMS_ON,
++ &error);
++ if (!ret) {
++ g_warning ("failed to turn the panel on after resume: %s",
++ error->message);
++ g_error_free (error);
++ }
++
++ lock_screensaver (manager, screen_lock_done_cb);
++}
++
++static void
++handle_resume_actions (GsdPowerManager *manager)
++{
++ gboolean ret;
++ GError *error = NULL;
++
++ /* this displays the unlock dialogue so the user doesn't have
++ * to move the mouse or press any key before the window comes up */
++ g_dbus_connection_call (manager->priv->connection,
++ GS_DBUS_NAME,
++ GS_DBUS_PATH,
++ GS_DBUS_INTERFACE,
++ "SimulateUserActivity",
++ NULL, NULL,
++ G_DBUS_CALL_FLAGS_NONE, -1,
++ NULL, NULL, NULL);
++
++ /* close existing notifications on resume, the system power
++ * state is probably different now */
++ notify_close_if_showing (manager->priv->notification_low);
++ notify_close_if_showing (manager->priv->notification_discharging);
++
++ /* ensure we turn the panel back on after resume */
++ ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen,
++ GNOME_RR_DPMS_ON,
++ &error);
++ if (!ret) {
++ g_warning ("failed to turn the panel on after resume: %s",
++ error->message);
++ g_error_free (error);
++ }
++
++ /* set up the delay again */
++ inhibit_suspend (manager);
++}
++
++static void
++logind_proxy_signal_cb (GDBusProxy *proxy,
++ const gchar *sender_name,
++ const gchar *signal_name,
++ GVariant *parameters,
++ gpointer user_data)
++{
++ GsdPowerManager *manager = GSD_POWER_MANAGER (user_data);
++ gboolean is_about_to_suspend;
++
++ if (g_strcmp0 (signal_name, "PrepareForSleep") != 0)
++ return;
++ g_variant_get (parameters, "(b)", &is_about_to_suspend);
++ if (is_about_to_suspend) {
++ handle_suspend_actions (manager);
++ } else {
++ handle_resume_actions (manager);
++ }
++}
++
+ gboolean
+ gsd_power_manager_start (GsdPowerManager *manager,
+ GError **error)
+@@ -3705,6 +3914,25 @@ gsd_power_manager_start (GsdPowerManager *manager,
+ g_debug ("Starting power manager");
+ gnome_settings_profile_start (NULL);
+
++ manager->priv->logind_proxy =
++ g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
++ 0,
++ NULL,
++ SYSTEMD_DBUS_NAME,
++ SYSTEMD_DBUS_PATH,
++ SYSTEMD_DBUS_INTERFACE,
++ NULL,
++ error);
++ if (manager->priv->logind_proxy == NULL) {
++ g_warning ("no systemd support");
++ return FALSE;
++ }
++ g_signal_connect (manager->priv->logind_proxy, "g-signal",
++ G_CALLBACK (logind_proxy_signal_cb),
++ manager);
++ /* Set up a delay inhibitor to be informed about suspend attempts */
++ inhibit_suspend (manager);
++
+ /* track the active session */
+ manager->priv->session = gnome_settings_session_new ();
+ g_signal_connect (manager->priv->session, "notify::state",
+@@ -3719,10 +3947,6 @@ gsd_power_manager_start (GsdPowerManager *manager,
+ G_CALLBACK (engine_settings_key_changed_cb), manager);
+ manager->priv->settings_screensaver = g_settings_new ("org.gnome.desktop.screensaver");
+ manager->priv->up_client = up_client_new ();
+- g_signal_connect (manager->priv->up_client, "notify-sleep",
+- G_CALLBACK (upower_notify_sleep_cb), manager);
+- g_signal_connect (manager->priv->up_client, "notify-resume",
+- G_CALLBACK (upower_notify_resume_cb), manager);
+ manager->priv->lid_is_closed = up_client_get_lid_is_closed (manager->priv->up_client);
+ g_signal_connect (manager->priv->up_client, "device-added",
+ G_CALLBACK (engine_device_added_cb), manager);
+@@ -3836,6 +4060,9 @@ gsd_power_manager_start (GsdPowerManager *manager,
+ manager->priv->x11_screen = gnome_rr_screen_new (gdk_screen_get_default (), error);
+ if (manager->priv->x11_screen == NULL)
+ return FALSE;
++ g_signal_connect (manager->priv->x11_screen, "changed", G_CALLBACK (on_randr_event), manager);
++ /* set up initial state */
++ on_randr_event (manager->priv->x11_screen, manager);
+
+ /* ensure the default dpms timeouts are cleared */
+ ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen,
+@@ -3865,6 +4092,11 @@ gsd_power_manager_stop (GsdPowerManager *manager)
+ {
+ g_debug ("Stopping power manager");
+
++ if (manager->priv->inhibit_lid_switch_timer_id != 0) {
++ g_source_remove (manager->priv->inhibit_lid_switch_timer_id);
++ manager->priv->inhibit_lid_switch_timer_id = 0;
++ }
++
+ if (manager->priv->bus_cancellable != NULL) {
+ g_cancellable_cancel (manager->priv->bus_cancellable);
+ g_object_unref (manager->priv->bus_cancellable);
+@@ -3876,8 +4108,6 @@ gsd_power_manager_stop (GsdPowerManager *manager)
+ manager->priv->introspection_data = NULL;
+ }
+
+- kill_lid_close_safety_timer (manager);
+-
+ g_signal_handlers_disconnect_by_data (manager->priv->up_client, manager);
+
+ g_clear_object (&manager->priv->connection);
+@@ -3885,6 +4115,19 @@ gsd_power_manager_stop (GsdPowerManager *manager)
+ g_clear_object (&manager->priv->settings);
+ g_clear_object (&manager->priv->settings_screensaver);
+ g_clear_object (&manager->priv->up_client);
++
++ if (manager->priv->inhibit_lid_switch_fd != -1) {
++ close (manager->priv->inhibit_lid_switch_fd);
++ manager->priv->inhibit_lid_switch_fd = -1;
++ manager->priv->inhibit_lid_switch_taken = FALSE;
++ }
++ if (manager->priv->inhibit_suspend_fd != -1) {
++ close (manager->priv->inhibit_suspend_fd);
++ manager->priv->inhibit_suspend_fd = -1;
++ manager->priv->inhibit_suspend_taken = FALSE;
++ }
++
++ g_clear_object (&manager->priv->logind_proxy);
+ g_clear_object (&manager->priv->x11_screen);
+
+ g_ptr_array_unref (manager->priv->devices_array);
+@@ -3918,6 +4161,8 @@ static void
+ gsd_power_manager_init (GsdPowerManager *manager)
+ {
+ manager->priv = GSD_POWER_MANAGER_GET_PRIVATE (manager);
++ manager->priv->inhibit_lid_switch_fd = -1;
++ manager->priv->inhibit_suspend_fd = -1;
+ }
+
+ static void
+--
+1.7.12.2
+
diff --git a/community/gnome-settings-daemon-updates/PKGBUILD b/community/gnome-settings-daemon-updates/PKGBUILD
index 02308740b..dd06076c5 100644
--- a/community/gnome-settings-daemon-updates/PKGBUILD
+++ b/community/gnome-settings-daemon-updates/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 70738 2012-05-16 07:55:23Z jconder $
+# $Id: PKGBUILD 79121 2012-10-30 23:06:37Z heftig $
# Maintainer: Jonathan Conder <jonno.conder@gmail.com>
_pkgname=gnome-settings-daemon
pkgname=$_pkgname-updates
-pkgver=3.4.2
+pkgver=3.6.1
pkgrel=1
pkgdesc="Updates plugin for the GNOME Settings daemon"
arch=('i686' 'x86_64')
@@ -14,24 +14,29 @@ options=('!emptydirs' '!libtool')
install=$_pkgname.install
url="http://www.gnome.org"
source=("http://ftp.gnome.org/pub/gnome/sources/$_pkgname/${pkgver%.*}/$_pkgname-$pkgver.tar.xz"
- 'systemd-fallback.patch'
+ 'screensaver.patch'
+ '0001-power-and-media-keys-Use-logind-for-suspending-and-r.patch'
'arch.patch')
-sha256sums=('00499118c80474981f3389ef518e2d001f1b1a3b1fb78e54859d59f3bee38ff4'
- '82b721d0e274af15ed2770052d550d3162d2d37e5e9ee5e6fcebac1ed6cb8199'
- '727ab3e8181464af32ba604b2931b77cd6d4fbf34e10bbba99bb213eb992466e')
+sha256sums=('1fe96e0709d7c618d90cc1bfcddc46eede3c2cdb305f5e7f4cb388d43dd5526a'
+ 'd2c32fa0262e4d0e97fc07fb631ad2627b4f2ae273e2cb3028236d9725711880'
+ 'f23db348593f58da755889928d7fa75817479d9ad5be67cc7a2f8cbc5db23632'
+ '32f18a02698bb24aa8ae293eb7bf74a8261e3ce2c5149d259a87bd14500089ea')
build() {
cd "$srcdir/$_pkgname-$pkgver"
+ patch -Np1 -i "$srcdir/screensaver.patch"
+ patch -Np1 -i "$srcdir/0001-power-and-media-keys-Use-logind-for-suspending-and-r.patch"
patch -Np1 -i "$srcdir/arch.patch"
- patch -Np1 -i "$srcdir/systemd-fallback.patch"
- gnome-autogen.sh --prefix=/usr \
+ aclocal
+ automake
+ ./configure --prefix=/usr \
--sysconfdir=/etc \
- --localstatedir=/var \
- --libexecdir=/usr/lib/gnome-settings-daemon \
- --disable-static \
- --enable-systemd
+ --localstatedir=/var \
+ --libexecdir=/usr/lib/gnome-settings-daemon \
+ --disable-static \
+ --enable-systemd
#https://bugzilla.gnome.org/show_bug.cgi?id=656231
sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
diff --git a/community/gnome-settings-daemon-updates/arch.patch b/community/gnome-settings-daemon-updates/arch.patch
index 6718e4db9..df70cd9f8 100644
--- a/community/gnome-settings-daemon-updates/arch.patch
+++ b/community/gnome-settings-daemon-updates/arch.patch
@@ -1,17 +1,17 @@
diff --git a/data/org.gnome.settings-daemon.plugins.updates.gschema.xml.in.in b/data/org.gnome.settings-daemon.plugins.updates.gschema.xml.in.in
-index c09096a..3fa4159 100644
+index 9af2718..bb45e48 100644
--- a/data/org.gnome.settings-daemon.plugins.updates.gschema.xml.in.in
+++ b/data/org.gnome.settings-daemon.plugins.updates.gschema.xml.in.in
-@@ -31,7 +31,7 @@
- <_description>Automatically download updates in the background without confirmation. Updates will be auto-downloaded when using wired network connnections, and also WiFi if 'connection-use-wifi' is enabled and mobile broadband if 'connection-use-mobile' is enabled.</_description>
+@@ -16,7 +16,7 @@
+ <_description>Use mobile broadband connections such as GSM and CDMA to check for updates.</_description>
</key>
- <key name="auto-update-type" enum="org.gnome.settings-daemon.GsdUpdateType">
-- <default>'security'</default>
-+ <default>'none'</default>
- <_summary>Automatically install these types of updates</_summary>
- <_description>Automatically install these types of updates.</_description>
+ <key name="auto-download-updates" type="b">
+- <default>true</default>
++ <default>false</default>
+ <_summary>Automatically download updates in the background without confirmation</_summary>
+ <_description>Automatically download updates in the background without confirmation. Updates will be auto-downloaded when using wired network connnections, and mobile broadband if 'connection-use-mobile' is enabled.</_description>
</key>
-@@ -56,7 +56,7 @@
+@@ -36,7 +36,7 @@
<_description>The last time we notified the user about non-critical updates. Value is in seconds since the epoch, or zero for never.</_description>
</key>
<key name="frequency-get-upgrades" type="i">
@@ -21,7 +21,7 @@ index c09096a..3fa4159 100644
<_description>How often to check for distribution upgrades. Value is in seconds.</_description>
</key>
diff --git a/plugins/updates/Makefile.am b/plugins/updates/Makefile.am
-index 9510c65..191092d 100644
+index 81c7179..6fd3534 100644
--- a/plugins/updates/Makefile.am
+++ b/plugins/updates/Makefile.am
@@ -15,7 +15,9 @@ libupdates_la_SOURCES = \
@@ -36,10 +36,10 @@ index 9510c65..191092d 100644
libupdates_la_CPPFLAGS = \
-I$(top_srcdir)/gnome-settings-daemon \
diff --git a/plugins/updates/gsd-updates-manager.c b/plugins/updates/gsd-updates-manager.c
-index 4ed046c..9842b32 100644
+index 95ee1c4..7b26c06 100644
--- a/plugins/updates/gsd-updates-manager.c
+++ b/plugins/updates/gsd-updates-manager.c
-@@ -32,6 +32,7 @@
+@@ -33,6 +33,7 @@
#include "gsd-updates-manager.h"
#include "gsd-updates-firmware.h"
#include "gsd-updates-refresh.h"
@@ -47,44 +47,41 @@ index 4ed046c..9842b32 100644
#include "gsd-updates-common.h"
#include "gnome-settings-profile.h"
-@@ -46,6 +47,7 @@ struct GsdUpdatesManagerPrivate
+@@ -47,6 +48,7 @@ struct GsdUpdatesManagerPrivate
GCancellable *cancellable;
GsdUpdatesRefresh *refresh;
GsdUpdatesFirmware *firmware;
+ GsdUpdatesWatch *watch;
+ GSettings *settings_proxy;
GSettings *settings_ftp;
GSettings *settings_gsd;
- GSettings *settings_http;
-@@ -1358,6 +1360,9 @@ gsd_updates_manager_start (GsdUpdatesManager *manager,
+@@ -1360,6 +1362,9 @@ gsd_updates_manager_start (GsdUpdatesManager *manager,
g_signal_connect (manager->priv->refresh, "get-updates",
G_CALLBACK (due_get_updates_cb), manager);
-+ /* watch transaction progress */
-+ manager->priv->watch = gsd_updates_watch_new ();
-+
- /* get http settings */
- manager->priv->settings_http = g_settings_new ("org.gnome.system.proxy.http");
- g_signal_connect (manager->priv->settings_http, "changed",
-@@ -1463,6 +1468,10 @@ gsd_updates_manager_stop (GsdUpdatesManager *manager)
- g_object_unref (manager->priv->firmware);
- manager->priv->firmware = NULL;
- }
-+ if (manager->priv->watch != NULL) {
-+ g_object_unref (manager->priv->watch);
-+ manager->priv->watch = NULL;
-+ }
- if (manager->priv->proxy_session != NULL) {
- g_object_unref (manager->priv->proxy_session);
- manager->priv->proxy_session = NULL;
++ /* watch transaction progress */
++ manager->priv->watch = gsd_updates_watch_new ();
++
+ /* get proxy settings */
+ manager->priv->settings_proxy = g_settings_new ("org.gnome.system.proxy");
+ g_signal_connect (manager->priv->settings_proxy, "changed",
+@@ -1455,6 +1460,7 @@ gsd_updates_manager_stop (GsdUpdatesManager *manager)
+ g_clear_object (&manager->priv->task);
+ g_clear_object (&manager->priv->refresh);
+ g_clear_object (&manager->priv->firmware);
++ g_clear_object (&manager->priv->watch);
+ g_clear_object (&manager->priv->proxy_session);
+ g_clear_object (&manager->priv->volume_monitor);
+ g_clear_object (&manager->priv->cancellable);
diff --git a/plugins/updates/gsd-updates-watch.c b/plugins/updates/gsd-updates-watch.c
new file mode 100644
-index 0000000..37d8778
+index 0000000..d3a0202
--- /dev/null
+++ b/plugins/updates/gsd-updates-watch.c
-@@ -0,0 +1,179 @@
+@@ -0,0 +1,186 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
-+ * Copyright (C) 2007-2011 Richard Hughes <richard@hughsie.com>
++ * Copyright (C) 2011-2012 Jonathan Conder <jonno.conder@gmail.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
@@ -116,160 +113,167 @@ index 0000000..37d8778
+
+struct GsdUpdatesWatchPrivate
+{
-+ PkTransactionList *tlist;
-+ PkClient *client;
++ PkTransactionList *tlist;
++ PkClient *client;
+};
+
+G_DEFINE_TYPE (GsdUpdatesWatch, gsd_updates_watch, G_TYPE_OBJECT)
+
+static void
++on_notification_closed (NotifyNotification *notification, gpointer data)
++{
++ g_object_unref (notification);
++}
++
++static void
+gsd_updates_watch_message_cb (PkMessage *item, GsdUpdatesWatch *watch)
+{
-+ NotifyNotification *notification;
-+ gchar *details = NULL;
-+ const gchar *title, *message;
-+ GError *error = NULL;
-+
-+ g_return_if_fail (PK_IS_MESSAGE (item));
-+ g_return_if_fail (GSD_IS_UPDATES_WATCH (watch));
-+
-+ g_object_get (item, "details", &details, NULL);
-+ title = _("More information");
-+ message = details;
-+
-+ /* use a better title if available */
-+ if (g_str_has_prefix (details, "<b>")) {
-+ gchar *end = g_strstr_len (details, -1, "</b>\n");
-+ if (end != NULL && g_strstr_len (details, end - details, "\n") == NULL) {
-+ title = details + 3;
-+ *end = '\0';
-+ message = end + 5;
-+ }
-+ }
-+
-+ /* display a notification */
-+ notification = notify_notification_new (title, message, NULL);
-+ notify_notification_set_app_name (notification, _("Software Updates"));
-+ notify_notification_set_timeout (notification, NOTIFY_EXPIRES_NEVER);
-+ notify_notification_set_urgency (notification, NOTIFY_URGENCY_NORMAL);
-+
-+ if (!notify_notification_show (notification, &error)) {
-+ g_warning ("error: %s", error->message);
-+ g_error_free (error);
-+ }
-+
-+ g_free (details);
++ NotifyNotification *notification;
++ gchar *details = NULL;
++ const gchar *title, *message;
++ GError *error = NULL;
++
++ g_return_if_fail (PK_IS_MESSAGE (item));
++ g_return_if_fail (GSD_IS_UPDATES_WATCH (watch));
++
++ g_object_get (item, "details", &details, NULL);
++ title = _("More information");
++ message = details;
++
++ /* use a better title if available */
++ if (g_str_has_prefix (details, "<b>")) {
++ gchar *end = g_strstr_len (details, -1, "</b>\n");
++ if (end != NULL && g_strstr_len (details, end - details, "\n") == NULL) {
++ title = details + 3;
++ *end = '\0';
++ message = end + 5;
++ }
++ }
++
++ /* display a notification */
++ notification = notify_notification_new (title, message, NULL);
++ notify_notification_set_app_name (notification, _("Software Updates"));
++ notify_notification_set_timeout (notification, NOTIFY_EXPIRES_NEVER);
++ notify_notification_set_urgency (notification, NOTIFY_URGENCY_NORMAL);
++
++ g_signal_connect (notification, "closed", G_CALLBACK (on_notification_closed), NULL);
++ if (!notify_notification_show (notification, &error)) {
++ g_warning ("error: %s", error->message);
++ g_error_free (error);
++ }
++
++ g_free (details);
+}
+
+static void
+gsd_updates_watch_adopt_cb (PkClient *client, GAsyncResult *res, GsdUpdatesWatch *watch)
+{
-+ PkResults *results;
-+ PkProgress *progress = NULL;
-+ guint uid;
-+ GPtrArray *array;
-+ GError *error = NULL;
-+
-+ g_return_if_fail (PK_IS_CLIENT (client));
-+ g_return_if_fail (G_IS_ASYNC_RESULT (res));
-+ g_return_if_fail (GSD_IS_UPDATES_WATCH (watch));
-+
-+ results = pk_client_generic_finish (client, res, &error);
-+ if (results == NULL) {
-+ g_warning ("failed to adopt: %s", error->message);
-+ g_error_free (error);
-+ goto out;
-+ }
-+
-+ g_object_get (results, "progress", &progress, NULL);
-+ g_object_get (progress, "uid", &uid, NULL);
-+
-+ /* only display messages from the same user */
-+ if (uid != getuid ()) {
-+ g_printerr ("ignoring messages\n");
-+ goto out;
-+ }
-+
-+ array = pk_results_get_message_array (results);
-+ g_ptr_array_foreach (array, (GFunc) gsd_updates_watch_message_cb, watch);
-+ g_ptr_array_unref (array);
++ PkResults *results;
++ PkProgress *progress = NULL;
++ guint uid;
++ GPtrArray *array;
++ GError *error = NULL;
++
++ g_return_if_fail (PK_IS_CLIENT (client));
++ g_return_if_fail (G_IS_ASYNC_RESULT (res));
++ g_return_if_fail (GSD_IS_UPDATES_WATCH (watch));
++
++ results = pk_client_generic_finish (client, res, &error);
++ if (results == NULL) {
++ g_warning ("failed to adopt: %s", error->message);
++ g_error_free (error);
++ goto out;
++ }
++
++ g_object_get (results, "progress", &progress, NULL);
++ g_object_get (progress, "uid", &uid, NULL);
++
++ /* only display messages from the same user */
++ if (uid != getuid ()) {
++ g_printerr ("ignoring messages\n");
++ goto out;
++ }
++
++ array = pk_results_get_message_array (results);
++ g_ptr_array_foreach (array, (GFunc) gsd_updates_watch_message_cb, watch);
++ g_ptr_array_unref (array);
+
+out:
-+ if (progress != NULL) {
-+ g_object_unref (progress);
-+ }
-+ if (results != NULL) {
-+ g_object_unref (results);
-+ }
++ if (progress != NULL) {
++ g_object_unref (progress);
++ }
++ if (results != NULL) {
++ g_object_unref (results);
++ }
+}
+
+static void
+gsd_updates_watch_tlist_added_cb (PkTransactionList *tlist, const gchar *tid, GsdUpdatesWatch *watch)
+{
-+ g_return_if_fail (PK_IS_TRANSACTION_LIST (tlist));
-+ g_return_if_fail (tid != NULL);
-+ g_return_if_fail (GSD_IS_UPDATES_WATCH (watch));
++ g_return_if_fail (PK_IS_TRANSACTION_LIST (tlist));
++ g_return_if_fail (tid != NULL);
++ g_return_if_fail (GSD_IS_UPDATES_WATCH (watch));
+
-+ /* listen for messages */
-+ pk_client_adopt_async (watch->priv->client, tid, NULL, NULL, NULL,
-+ (GAsyncReadyCallback) gsd_updates_watch_adopt_cb, watch);
++ /* listen for messages */
++ pk_client_adopt_async (watch->priv->client, tid, NULL, NULL, NULL,
++ (GAsyncReadyCallback) gsd_updates_watch_adopt_cb, watch);
+}
+
+static void
+gsd_updates_watch_init (GsdUpdatesWatch *watch)
+{
-+ g_return_if_fail (GSD_IS_UPDATES_WATCH (watch));
++ g_return_if_fail (GSD_IS_UPDATES_WATCH (watch));
+
-+ watch->priv = GSD_UPDATES_WATCH_GET_PRIVATE (watch);
-+ watch->priv->tlist = pk_transaction_list_new ();
-+ watch->priv->client = pk_client_new ();
++ watch->priv = GSD_UPDATES_WATCH_GET_PRIVATE (watch);
++ watch->priv->tlist = pk_transaction_list_new ();
++ watch->priv->client = pk_client_new ();
+
-+ g_signal_connect (watch->priv->tlist, "added",
-+ G_CALLBACK (gsd_updates_watch_tlist_added_cb), watch);
++ g_signal_connect (watch->priv->tlist, "added",
++ G_CALLBACK (gsd_updates_watch_tlist_added_cb), watch);
+}
+
+static void
+gsd_updates_watch_finalize (GObject *object)
+{
-+ GsdUpdatesWatch *watch;
++ GsdUpdatesWatch *watch;
+
-+ g_return_if_fail (GSD_IS_UPDATES_WATCH (object));
++ g_return_if_fail (GSD_IS_UPDATES_WATCH (object));
+
-+ watch = GSD_UPDATES_WATCH (object);
-+ g_return_if_fail (watch->priv != NULL);
++ watch = GSD_UPDATES_WATCH (object);
++ g_return_if_fail (watch->priv != NULL);
+
-+ if (watch->priv->tlist != NULL) {
-+ g_object_unref (watch->priv->tlist);
-+ }
-+ if (watch->priv->client != NULL) {
-+ g_object_unref (watch->priv->client);
-+ }
++ if (watch->priv->tlist != NULL) {
++ g_object_unref (watch->priv->tlist);
++ }
++ if (watch->priv->client != NULL) {
++ g_object_unref (watch->priv->client);
++ }
+
-+ G_OBJECT_CLASS (gsd_updates_watch_parent_class)->finalize (object);
++ G_OBJECT_CLASS (gsd_updates_watch_parent_class)->finalize (object);
+}
+
+GsdUpdatesWatch *
+gsd_updates_watch_new (void)
+{
-+ return GSD_UPDATES_WATCH (g_object_new (GSD_TYPE_UPDATES_WATCH, NULL));
++ return GSD_UPDATES_WATCH (g_object_new (GSD_TYPE_UPDATES_WATCH, NULL));
+}
+
+static void
+gsd_updates_watch_class_init (GsdUpdatesWatchClass *klass)
+{
-+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
-+ object_class->finalize = gsd_updates_watch_finalize;
-+ g_type_class_add_private (klass, sizeof (GsdUpdatesWatchPrivate));
++ GObjectClass *object_class = G_OBJECT_CLASS (klass);
++ object_class->finalize = gsd_updates_watch_finalize;
++ g_type_class_add_private (klass, sizeof (GsdUpdatesWatchPrivate));
+}
diff --git a/plugins/updates/gsd-updates-watch.h b/plugins/updates/gsd-updates-watch.h
new file mode 100644
-index 0000000..d90976e
+index 0000000..439464f
--- /dev/null
+++ b/plugins/updates/gsd-updates-watch.h
@@ -0,0 +1,52 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
-+ * Copyright (C) 2007-2011 Richard Hughes <richard@hughsie.com>
++ * Copyright (C) 2011-2012 Jonathan Conder <jonno.conder@gmail.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
diff --git a/community/gnome-settings-daemon-updates/gnome-settings-daemon.install b/community/gnome-settings-daemon-updates/gnome-settings-daemon.install
index 326aa98a2..f7e8c46ac 100644
--- a/community/gnome-settings-daemon-updates/gnome-settings-daemon.install
+++ b/community/gnome-settings-daemon-updates/gnome-settings-daemon.install
@@ -1,5 +1,6 @@
post_install() {
- glib-compile-schemas usr/share/glib-2.0/schemas
+ glib-compile-schemas /usr/share/glib-2.0/schemas
+ gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor
}
post_upgrade() {
diff --git a/community/gnome-settings-daemon-updates/screensaver.patch b/community/gnome-settings-daemon-updates/screensaver.patch
new file mode 100644
index 000000000..bbcfe3430
--- /dev/null
+++ b/community/gnome-settings-daemon-updates/screensaver.patch
@@ -0,0 +1,145 @@
+From b47e4019a12ac84fba31e1c631d878ce03fa3808 Mon Sep 17 00:00:00 2001
+From: Rui Matos <tiagomatos@gmail.com>
+Date: Wed, 17 Oct 2012 22:44:54 +0000
+Subject: power: Add a watchdog to keep X's builtin screen saver disabled
+
+X's builtin screen saver may activate DPMS. Since we want to activate
+DPMS ourselves according to our own policy we must make sure that X's
+screen saver remains disabled.
+
+This code is a copy of the original found in gs-watcher-x11.c from
+gnome-screensaver which stopped being used in GNOME 3.6.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=686339
+---
+diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
+index 0e06495..070cf32 100644
+--- a/plugins/power/gsd-power-manager.c
++++ b/plugins/power/gsd-power-manager.c
+@@ -27,6 +27,7 @@
+ #include <stdio.h>
+ #include <sys/wait.h>
+ #include <glib/gi18n.h>
++#include <gdk/gdkx.h>
+ #include <gtk/gtk.h>
+ #include <libupower-glib/upower.h>
+ #include <libnotify/notify.h>
+@@ -80,6 +81,8 @@
+ /* Keep this in sync with gnome-shell */
+ #define SCREENSAVER_FADE_TIME 10 /* seconds */
+
++#define XSCREENSAVER_WATCHDOG_TIMEOUT 120 /* seconds */
++
+ enum {
+ GSD_POWER_IDLETIME_NULL_ID,
+ GSD_POWER_IDLETIME_DIM_ID,
+@@ -197,6 +200,7 @@ struct GsdPowerManagerPrivate
+ GsdPowerIdleMode current_idle_mode;
+ guint lid_close_safety_timer_id;
+ GtkStatusIcon *status_icon;
++ guint xscreensaver_watchdog_timer_id;
+ };
+
+ enum {
+@@ -3621,6 +3625,77 @@ engine_session_active_changed_cb (GnomeSettingsSession *session,
+ idle_set_mode (manager, GSD_POWER_IDLE_MODE_NORMAL);
+ }
+
++/* This timer goes off every few minutes, whether the user is idle or not,
++ to try and clean up anything that has gone wrong.
++
++ It calls disable_builtin_screensaver() so that if xset has been used,
++ or some other program (like xlock) has messed with the XSetScreenSaver()
++ settings, they will be set back to sensible values (if a server extension
++ is in use, messing with xlock can cause the screensaver to never get a wakeup
++ event, and could cause monitor power-saving to occur, and all manner of
++ heinousness.)
++
++ This code was originally part of gnome-screensaver, see
++ http://git.gnome.org/browse/gnome-screensaver/tree/src/gs-watcher-x11.c?id=fec00b12ec46c86334cfd36b37771cc4632f0d4d#n530
++ */
++static gboolean
++disable_builtin_screensaver (gpointer unused)
++{
++ int current_server_timeout, current_server_interval;
++ int current_prefer_blank, current_allow_exp;
++ int desired_server_timeout, desired_server_interval;
++ int desired_prefer_blank, desired_allow_exp;
++
++ XGetScreenSaver (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
++ &current_server_timeout,
++ &current_server_interval,
++ &current_prefer_blank,
++ &current_allow_exp);
++
++ desired_server_timeout = current_server_timeout;
++ desired_server_interval = current_server_interval;
++ desired_prefer_blank = current_prefer_blank;
++ desired_allow_exp = current_allow_exp;
++
++ desired_server_interval = 0;
++
++ /* I suspect (but am not sure) that DontAllowExposures might have
++ something to do with powering off the monitor as well, at least
++ on some systems that don't support XDPMS? Who know... */
++ desired_allow_exp = AllowExposures;
++
++ /* When we're not using an extension, set the server-side timeout to 0,
++ so that the server never gets involved with screen blanking, and we
++ do it all ourselves. (However, when we *are* using an extension,
++ we tell the server when to notify us, and rather than blanking the
++ screen, the server will send us an X event telling us to blank.)
++ */
++ desired_server_timeout = 0;
++
++ if (desired_server_timeout != current_server_timeout
++ || desired_server_interval != current_server_interval
++ || desired_prefer_blank != current_prefer_blank
++ || desired_allow_exp != current_allow_exp) {
++
++ g_debug ("disabling server builtin screensaver:"
++ " (xset s %d %d; xset s %s; xset s %s)",
++ desired_server_timeout,
++ desired_server_interval,
++ (desired_prefer_blank ? "blank" : "noblank"),
++ (desired_allow_exp ? "expose" : "noexpose"));
++
++ XSetScreenSaver (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
++ desired_server_timeout,
++ desired_server_interval,
++ desired_prefer_blank,
++ desired_allow_exp);
++
++ XSync (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), FALSE);
++ }
++
++ return TRUE;
++}
++
+ gboolean
+ gsd_power_manager_start (GsdPowerManager *manager,
+ GError **error)
+@@ -3778,6 +3853,9 @@ gsd_power_manager_start (GsdPowerManager *manager,
+ /* set the initial dim time that can adapt for the user */
+ refresh_idle_dim_settings (manager);
+
++ manager->priv->xscreensaver_watchdog_timer_id = g_timeout_add_seconds (XSCREENSAVER_WATCHDOG_TIMEOUT,
++ disable_builtin_screensaver,
++ NULL);
+ gnome_settings_profile_end (NULL);
+ return TRUE;
+ }
+@@ -3829,6 +3907,11 @@ gsd_power_manager_stop (GsdPowerManager *manager)
+
+ g_clear_object (&manager->priv->idletime);
+ g_clear_object (&manager->priv->status_icon);
++
++ if (manager->priv->xscreensaver_watchdog_timer_id > 0) {
++ g_source_remove (manager->priv->xscreensaver_watchdog_timer_id);
++ manager->priv->xscreensaver_watchdog_timer_id = 0;
++ }
+ }
+
+ static void
+--
+cgit v0.9.0.2
diff --git a/community/gnote/PKGBUILD b/community/gnote/PKGBUILD
index 62aa30fcf..b75356190 100644
--- a/community/gnote/PKGBUILD
+++ b/community/gnote/PKGBUILD
@@ -1,22 +1,22 @@
-# $Id: PKGBUILD 69794 2012-04-23 09:41:58Z ibiru $
+# $Id: PKGBUILD 79122 2012-10-30 23:06:42Z heftig $
# Maintainer: Ionut Biru <ibiru@archlinux.org>
# Contributor: uastasi <uastasi@archlinux.us>
pkgname=gnote
-pkgver=0.8.3
+pkgver=3.6.1
pkgrel=1
pkgdesc="A note taking application."
arch=('i686' 'x86_64')
url="http://live.gnome.org/Gnote"
license=('GPL3')
-depends=('gtkmm3' 'libxslt' 'hicolor-icon-theme' 'desktop-file-utils' 'dconf')
-makedepends=('intltool' 'gnome-doc-utils' 'boost')
+depends=('gtkmm3' 'libxslt' 'hicolor-icon-theme' 'desktop-file-utils' 'dconf' 'libsecret')
+makedepends=('intltool' 'itstool' 'boost')
options=('!libtool')
install=gnote.install
-source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/0.8/$pkgname-$pkgver.tar.xz)
-sha256sums=('41308f957b9cb6f885adb61a607b93ec969be069676e7d518c007ecf35f474ab')
+source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz)
+sha256sums=('f1f62ccf9cce1eef2ee2b41039360f946f3b4223983ca52223ccb6687a59f2f9')
build() {
- cd "$pkgname-$pkgver"
+ cd $pkgname-$pkgver
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
@@ -28,6 +28,6 @@ build() {
}
package() {
- cd "$pkgname-$pkgver"
+ cd $pkgname-$pkgver
make DESTDIR="$pkgdir" install
}
diff --git a/community/gtk-engine-unico/PKGBUILD b/community/gtk-engine-unico/PKGBUILD
index 3fd503843..41cf27d09 100644
--- a/community/gtk-engine-unico/PKGBUILD
+++ b/community/gtk-engine-unico/PKGBUILD
@@ -1,28 +1,27 @@
-# $Id: PKGBUILD 69736 2012-04-23 09:07:35Z ibiru $
+# $Id: PKGBUILD 79137 2012-10-31 01:06:06Z heftig $
# Maintainer: Bartlomiej Piotrowski <nospam@bpiotrowski.pl>
# Contributor: Hilinus <itahilinus[at]hotmail[dot]it>
pkgname=gtk-engine-unico
pkgver=1.0.2
-pkgrel=1
+pkgrel=3
pkgdesc="Unico GTK3 theme engine"
arch=('i686' 'x86_64')
url="https://launchpad.net/unico"
license=('GPL')
depends=("gtk3")
+makedepends=("gnome-common")
options=(!libtool)
-source=("http://launchpad.net/unico/1.0/$pkgver/+download/${pkgname#gtk-engine-}-$pkgver.tar.gz")
-md5sums=('19fb3ecc36d4d13b4a76e26a4ebd6412')
-
+source=(gtk-engine-unico-139.tar.gz::http://bazaar.launchpad.net/~unico-team/unico/trunk/tarball/139)
+md5sums=('01a8fcde727bbbdfcbd1572f118d1616')
build() {
- cd ${srcdir}/${pkgname#gtk-engine-}-$pkgver
-
- ./configure --prefix=/usr --disable-static
+ cd "~unico-team/unico/trunk"
+ ./autogen.sh --prefix=/usr --disable-static
make
}
package() {
- cd ${srcdir}/${pkgname#gtk-engine-}-$pkgver
+ cd "~unico-team/unico/trunk"
make DESTDIR=${pkgdir} install
}
diff --git a/community/lxdm/PKGBUILD b/community/lxdm/PKGBUILD
index 7fb73b5b1..f7958abdd 100644
--- a/community/lxdm/PKGBUILD
+++ b/community/lxdm/PKGBUILD
@@ -1,17 +1,17 @@
-# $Id: PKGBUILD 76688 2012-09-26 21:14:05Z bpiotrowski $
+# $Id: PKGBUILD 79125 2012-10-30 23:07:13Z heftig $
# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
# Contributor: AndyRTR <andyrtr@archlinux.org>
# Contributor: kiefer <jorgelmadrid@gmail.com>
pkgname=lxdm
pkgver=0.4.1
-pkgrel=15
+pkgrel=18
pkgdesc='Lightweight X11 Display Manager'
arch=('i686' 'x86_64')
url="http://sourceforge.net/projects/lxdm/"
license=('GPL')
groups=('lxde')
-depends=('gtk2' 'xorg-server' 'consolekit')
+depends=('gtk2' 'xorg-server')
makedepends=('intltool')
install=${pkgname}.install
backup=('etc/lxdm/lxdm.conf' 'etc/pam.d/lxdm' 'etc/lxdm/Xsession'
@@ -19,17 +19,8 @@ backup=('etc/lxdm/lxdm.conf' 'etc/pam.d/lxdm' 'etc/lxdm/Xsession'
'etc/lxdm/PostLogout' 'etc/lxdm/PreReboot' 'etc/lxdm/PreShutdown')
source=(http://downloads.sourceforge.net/lxde/$pkgname-$pkgver.tar.gz
glib2-2.32.0.patch lxdm.patch lxdm.conf.patch Xsession.patch
- greeter-session.patch pam-env-vars.patch rc.d lxdm-pam service)
-md5sums=('8da1cfc2be6dc9217c85a7cf51e1e821'
- 'a1e3c46a8bef691bc544028f5b6cfe22'
- 'baed9055e8825a5511712bc095197519'
- 'c50dd01b715b0a236407d48066191601'
- 'd2e4a4a22ee2aa1a986be154c647b6c6'
- '28475239d0c8b4fd778ec49f5ec72962'
- '4c1d43e81e9a256e8d1ea7686c24b3d3'
- '705f394052fdd0dec22e95321d170de0'
- '9a76cae5b3a0fcbb6116fa08c7a587b5'
- 'e8cc66eb1a2405d2d9d184a727cbd9d8')
+ greeter-session.patch pam-env-vars.patch industrial-greeterui.patch
+ rc.d lxdm-pam service)
build() {
cd $srcdir/$pkgname-$pkgver
@@ -44,6 +35,7 @@ build() {
patch -Np0 -i $srcdir/lxdm.patch
patch -Np0 -i $srcdir/lxdm.conf.patch
patch -Np0 -i $srcdir/Xsession.patch
+ patch -Np0 -i $srcdir/industrial-greeterui.patch
}
@@ -62,3 +54,16 @@ package() {
# avoid conflict with filesystem>=2012.06
rm -r $pkgdir/var/run
}
+
+md5sums=('8da1cfc2be6dc9217c85a7cf51e1e821'
+ 'a1e3c46a8bef691bc544028f5b6cfe22'
+ 'baed9055e8825a5511712bc095197519'
+ 'c50dd01b715b0a236407d48066191601'
+ 'd2e4a4a22ee2aa1a986be154c647b6c6'
+ '28475239d0c8b4fd778ec49f5ec72962'
+ '4c1d43e81e9a256e8d1ea7686c24b3d3'
+ '2c4afdbe3532be4f90d8f6240d352766'
+ '705f394052fdd0dec22e95321d170de0'
+ '9cc734228696a3c6f06d91bba61b03c1'
+ 'e8cc66eb1a2405d2d9d184a727cbd9d8')
+
diff --git a/community/lxdm/industrial-greeterui.patch b/community/lxdm/industrial-greeterui.patch
new file mode 100644
index 000000000..a2a366809
--- /dev/null
+++ b/community/lxdm/industrial-greeterui.patch
@@ -0,0 +1,13 @@
+--- data/themes/Industrial/greeter.ui.orig 2012-05-09 23:54:03.743980613 -0300
++++ data/themes/Industrial/greeter.ui 2012-05-10 00:26:20.340687396 -0300
+@@ -201,7 +201,9 @@
+ </packing>
+ </child>
+ <child>
+- <object class="GtkComboBoxEntry" id="keyboard"/>
++ <object class="GtkComboBoxEntry" id="keyboard">
++ <property name="text_column">0</property>
++ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">3</property>
diff --git a/community/lxdm/lxdm-pam b/community/lxdm/lxdm-pam
index b13b0d528..57f33b221 100644
--- a/community/lxdm/lxdm-pam
+++ b/community/lxdm/lxdm-pam
@@ -6,4 +6,5 @@ account required pam_unix.so
session required pam_limits.so
session required pam_unix.so
password required pam_unix.so
--session optional pam_systemd.so
+-session optional pam_loginuid.so
+-session optional pam_systemd.so
diff --git a/community/midori/PKGBUILD b/community/midori/PKGBUILD
index 5a49b7dce..fd40b3e4e 100644
--- a/community/midori/PKGBUILD
+++ b/community/midori/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 76712 2012-09-27 13:47:42Z bpiotrowski $
+# $Id: PKGBUILD 79131 2012-10-30 23:51:10Z arodseth $
# Maintainer: Alexander Rødseth <rodseth@gmail.com>
# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
# Contributor: Andreas Radke <andyrtr@archlinux.org>
@@ -8,7 +8,7 @@
pkgname=midori
pkgver=0.4.7
-pkgrel=2
+pkgrel=3
pkgdesc='Lightweight web browser based on Gtk WebKit'
arch=('x86_64' 'i686')
url='http://www.twotoasts.de/index.php?/pages/midori_summary.html'
@@ -19,15 +19,20 @@ makedepends=('libxml2' 'intltool' 'gtk-doc' 'librsvg' 'python2>=2.7.1' 'vala')
optdepends=('gstreamer0.10-ugly-plugins: HTML5 videos support')
options=('!emptydirs')
source=(http://archive.xfce.org/src/apps/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.bz2
- 0.4.7-private-mode.patch)
+ 0.4.7-private-mode.patch
+ fix-copying.patch)
md5sums=('06db7b88a41e9b2265728960d5e98f35'
- 'b2f21a853038662fd0e6c2274ed9dfb7')
+ 'b2f21a853038662fd0e6c2274ed9dfb7'
+ '4bf3a0af4edc9ad6c4d46fc9676d9eb0')
build() {
cd $srcdir/$pkgname-$pkgver
- # fs#31641
- patch -Np1 -i $srcdir/0.4.7-private-mode.patch
+ # FS#31641
+ patch -s -Np1 -i ../0.4.7-private-mode.patch
+
+ # FS#32229
+ patch -s -Np1 -i ../fix-copying.patch > /dev/null || true
# python2
export PYTHON=/usr/bin/python2
diff --git a/community/midori/fix-copying.patch b/community/midori/fix-copying.patch
new file mode 100644
index 000000000..ab3581900
--- /dev/null
+++ b/community/midori/fix-copying.patch
@@ -0,0 +1,63 @@
+diff --git a/midori/midori-browser.c b/midori/midori-browser.c
+index 28aca95..b33e2e4 100644
+--- a/midori/midori-browser.c
++++ b/midori/midori-browser.c
+@@ -1041,7 +1041,7 @@ midori_browser_save_uri (MidoriBrowser* browser,
+ GtkWidget* dialog;
+ const gchar* title = midori_view_get_display_title (view);
+ gchar* filename;
+- GList* resources = midori_view_get_subresources (view);
++ GList* resources = midori_view_get_resources (view);
+ gboolean file_only = TRUE;
+ GtkWidget* checkbox = NULL;
+
+diff --git a/midori/midori-view.c b/midori/midori-view.c
+index 37cc78f..2c71f55 100644
+--- a/midori/midori-view.c
++++ b/midori/midori-view.c
+@@ -1993,21 +1993,22 @@ midori_web_view_menu_image_new_tab_activate_cb (GtkWidget* widget,
+ }
+
+ GList*
+-midori_view_get_subresources (MidoriView* view)
++midori_view_get_resources (MidoriView* view)
+ {
+ WebKitWebView* web_view = WEBKIT_WEB_VIEW (view->web_view);
+ WebKitWebFrame* frame = webkit_web_view_get_main_frame (web_view);
+ WebKitWebDataSource* data_source = webkit_web_frame_get_data_source (frame);
+- return webkit_web_data_source_get_subresources (data_source);
++ GList* resources = webkit_web_data_source_get_subresources (data_source);
++ return g_list_prepend (resources, webkit_web_data_source_get_main_resource (data_source));
+ }
+
+ static GString*
+ midori_view_get_data_for_uri (MidoriView* view,
+ const gchar* uri)
+ {
+- GList* resources = midori_view_get_subresources (view);
++ GList* resources = midori_view_get_resources (view);
+ GList* list;
+- GString* result;
++ GString* result = NULL;
+
+ for (list = resources; list; list = g_list_next (list))
+ {
+@@ -2032,7 +2033,8 @@ midori_view_clipboard_get_image_cb (GtkClipboard* clipboard,
+ MidoriView* view = MIDORI_VIEW (g_object_get_data (user_data, "view"));
+ WebKitHitTestResult* hit_test = user_data;
+ gchar* uri = katze_object_get_string (hit_test, "image-uri");
+- /* if (gtk_selection_data_targets_include_image (selection_data, TRUE)) */
++
++ if (gtk_targets_include_image(&selection_data->target, 1, TRUE))
+ {
+ GString* data = midori_view_get_data_for_uri (view, uri);
+ if (data != NULL)
+@@ -2052,7 +2054,7 @@ midori_view_clipboard_get_image_cb (GtkClipboard* clipboard,
+ else
+ g_warn_if_reached ();
+ }
+- /* if (gtk_selection_data_targets_include_text (selection_data)) */
++ if (gtk_targets_include_text(&selection_data->target, 1))
+ gtk_selection_data_set_text (selection_data, uri, -1);
+ g_free (uri);
+ }
diff --git a/community/miredo/PKGBUILD b/community/miredo/PKGBUILD
index e6a75b244..04760be3a 100644
--- a/community/miredo/PKGBUILD
+++ b/community/miredo/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 72790 2012-06-22 12:50:59Z dreisner $
+# $Id: PKGBUILD 79082 2012-10-30 09:54:22Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
pkgname=miredo
pkgver=1.2.5
-pkgrel=2
+pkgrel=3
pkgdesc="Teredo client and server."
arch=('i686' 'x86_64')
url="http://www.remlab.net/miredo/"
@@ -23,7 +23,7 @@ md5sums=('5114debbf9fcab5d292176e4548f8cd1'
'd1b655d7a851cdb46c91c3418ed1962f'
'c5a9be5c3175fecec387f1710bfd2788'
'319aba1ae06349b76cb25fda0dba60a9'
- '3216d47d5aa979706b17b72d8b6e19b0')
+ 'abd7d8831cab7f3ea6d0d4e51b8f8f6a')
build() {
cd "$srcdir/$pkgname-$pkgver"
diff --git a/community/miredo/miredo.service b/community/miredo/miredo.service
index 299a887de..d28803efd 100644
--- a/community/miredo/miredo.service
+++ b/community/miredo/miredo.service
@@ -3,7 +3,6 @@ Description=Teredo IPv6 Tunneling Daemon
After=network.target
[Service]
-ExecStartPre=/usr/sbin/miredo-checkconf /etc/miredo/miredo.conf
ExecStart=/usr/sbin/miredo -f
ExecReload=/bin/kill -HUP $MAINPID
diff --git a/community/onboard/PKGBUILD b/community/onboard/PKGBUILD
index a62c64743..d1cc4b5e8 100644
--- a/community/onboard/PKGBUILD
+++ b/community/onboard/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 78453 2012-10-18 21:14:21Z bgyorgy $
+# $Id: PKGBUILD 79142 2012-10-31 02:45:48Z bgyorgy $
# Maintainer: Balló György <ballogyor+arch at gmail dot com>
pkgname=onboard
-pkgver=0.98.1
-pkgrel=2
+pkgver=0.98.2
+pkgrel=1
pkgdesc="On-screen keyboard useful on tablet PCs or for mobility impaired users"
arch=('i686' 'x86_64')
url="https://launchpad.net/onboard"
@@ -14,19 +14,11 @@ optdepends=('at-spi2-atk: auto-show when editing text'
'mousetweaks: hover click with mouse')
options=('!emptydirs')
install=$pkgname.install
-source=(http://launchpad.net/$pkgname/${pkgver%.*}/$pkgver/+download/$pkgname-$pkgver.tar.gz
- 1012_1011.diff
- 1013_1012.diff)
-md5sums=('107e031b429329b71deb67c9b90195d6'
- '4323f43510003850e127cd0fefdd3e4c'
- '6c7751ecd92532844ecb7e65e4f4746b')
+source=(http://launchpad.net/$pkgname/${pkgver%.*}/$pkgver/+download/$pkgname-$pkgver.tar.gz)
+md5sums=('7b44ab2873ca7b76ff1d9ab0b3398487')
-package() {
+build() {
cd "$srcdir/$pkgname-$pkgver"
- # Python 3.3 compatibility fixes
- patch -Np0 -i "$srcdir/1012_1011.diff"
- patch -Np0 -i "$srcdir/1013_1012.diff"
-
python3 setup.py install --root=$pkgdir/ --optimize=1
}
diff --git a/community/percona-server/PKGBUILD b/community/percona-server/PKGBUILD
index c7888189e..dc75eefe0 100644
--- a/community/percona-server/PKGBUILD
+++ b/community/percona-server/PKGBUILD
@@ -1,13 +1,13 @@
-# $Id: PKGBUILD 79052 2012-10-29 17:52:46Z mtorromeo $
+# $Id: PKGBUILD 79088 2012-10-30 10:54:31Z mtorromeo $
# Maintainer: Massimiliano Torromeo <massimiliano.torromeo@gmail.com>
pkgname=percona-server
pkgver=5.5.28_rel29.1
-pkgrel=1
-pkgdesc="A backwards-compatible drop-in replacement for MySQL that provides improved performance, diagnostics and instrumentation, and manageability of the server"
+pkgrel=2
+pkgdesc="A backwards-compatible drop-in replacement for MySQL that provides improved performance, diagnostics and instrumentation"
arch=('i686' 'x86_64')
-depends=('mysql-clients' 'libaio')
+depends=('mysql-clients' 'systemd-tools' 'libaio')
conflicts=('mysql')
provides=('mysql')
optdepends=('perl-dbi' 'perl-dbd-mysql')
@@ -19,11 +19,11 @@ options=('!libtool' 'emptydirs')
backup=('etc/mysql/my.cnf')
install=percona.install
source=("http://www.percona.com/downloads/Percona-Server-${pkgver%.*_*}/Percona-Server-${pkgver/_rel/-}/source/Percona-Server-${pkgver/_/-}.tar.gz"
- 'mysqld'
+ 'mysqld.rc'
'my.cnf'
- 'mysqld-post'
+ 'mysqld-post.sh'
'mysqld.service'
- 'tmpfiles.conf')
+ 'mysqld-tmpfile.conf')
build() {
cd "${srcdir}/Percona-Server-${pkgver/_/-}"
@@ -34,22 +34,18 @@ build() {
mkdir build
cd build
- # CFLAGS/CXXFLAGS as suggested upstream
- CFLAGS="-fPIC ${CFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -fomit-frame-pointer" \
- CXXFLAGS="-fPIC ${CXXFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -felide-constructors -fno-rtti -fpermissive" \
-
cmake "${srcdir}/Percona-Server-${pkgver/_/-}" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DSYSCONFDIR=/etc/mysql \
-DMYSQL_DATADIR=/var/lib/mysql \
- -DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld.sock \
+ -DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=ON \
-DINSTALL_INFODIR=share/mysql/docs \
-DINSTALL_MANDIR=share/man \
- -DINSTALL_PLUGINDIR=/usr/lib/mysql/plugin \
+ -DINSTALL_PLUGINDIR=lib/mysql/plugin \
-DINSTALL_SCRIPTDIR=bin \
-DINSTALL_INCLUDEDIR=include/mysql \
-DINSTALL_DOCREADMEDIR=share/mysql \
@@ -57,7 +53,7 @@ build() {
-DINSTALL_MYSQLSHAREDIR=share/mysql \
-DINSTALL_DOCDIR=share/mysql/docs \
-DINSTALL_SHAREDIR=share/mysql \
- -DWITH_READLINE=OFF \
+ -DWITH_READLINE=ON \
-DWITH_ZLIB=system \
-DWITH_SSL=system \
-DWITH_LIBWRAP=OFF \
@@ -72,7 +68,9 @@ build() {
-DWITH_ARCHIVE_STORAGE_ENGINE=ON \
-DWITH_BLACKHOLE_STORAGE_ENGINE=ON \
-DWITH_FEDERATED_STORAGE_ENGINE=OFF \
- -DWITH_EXAMPLE_STORAGE_ENGINE=OFF
+ -DWITH_EXAMPLE_STORAGE_ENGINE=OFF \
+ -DCMAKE_C_FLAGS="-fPIC ${CFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -fomit-frame-pointer" \
+ -DCMAKE_CXX_FLAGS="-fPIC ${CXXFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -felide-constructors -fno-rtti -fpermissive"
make
}
@@ -81,8 +79,11 @@ package() {
cd "${srcdir}"/build
make DESTDIR=${pkgdir} install
- install -Dm644 ${srcdir}/my.cnf ${pkgdir}/etc/mysql/my.cnf
- install -Dm755 ${srcdir}/mysqld ${pkgdir}/etc/rc.d/mysqld
+ install -Dm644 "${srcdir}"/my.cnf "${pkgdir}"/etc/mysql/my.cnf
+ install -Dm755 "${srcdir}"/mysqld.rc "${pkgdir}"/etc/rc.d/mysqld
+ install -Dm755 "${srcdir}"/mysqld-post.sh "${pkgdir}"/usr/bin/mysqld-post
+ install -Dm644 "${srcdir}"/mysqld-tmpfile.conf "${pkgdir}"/usr/lib/tmpfiles.d/mysqld.conf
+ install -Dm644 "${srcdir}"/mysqld.service "${pkgdir}"/usr/lib/systemd/system/mysqld.service
# provided by libmysqlclient
rm ${pkgdir}/usr/bin/mysql_config
@@ -99,15 +100,11 @@ package() {
rm "${pkgdir}"/usr/share/man/man1/mysql-test-run.pl.1
install -dm700 "${pkgdir}"/var/lib/mysql
-
- install -Dm644 "$srcdir/tmpfiles.conf" "$pkgdir/usr/lib/tmpfiles.d/mysqld.conf"
- install -Dm644 "$srcdir/mysqld.service" "$pkgdir/usr/lib/systemd/system/mysqld.service"
- install -Dm755 "$srcdir/mysqld-post" "$pkgdir/usr/bin/mysqld-post"
}
sha256sums=('2cacf3bd0f059c7ae3cb391bf2e4a2bdcbf490ed3465bfd4db9a02f0944f2d51'
'e875fac56f69634b4f1720aec3b952fc63903414e9345af630e5fd74b5373eb4'
- '400e9a6e6517bbfe0971b65456dfacfb363cb54a644e4c2bacd373171611d5aa'
+ 'dd5dc155de468d4ab26971109861ae19b53574f28785bac5ff7b717fb65c0760'
'4894d39605950d86841ad982e619daa6c8d5d60ca30928d7dbb582e8cb3ade32'
'ca10dec3cc162baede651980e675fd8094e55cb2403edffaa3d0865a6184553f'
- 'f05a8d81dc3d4f2cabf96747b90d8392e0584db9e10b5b3211c21478d2d0d8c3')
+ 'badf6a701d9dc6ea3b4ddca26cb0f42b6236432ccdbc14c64962147802594a60')
diff --git a/community/percona-server/my.cnf b/community/percona-server/my.cnf
index 9a41b4fc3..afdd6dc2c 100644
--- a/community/percona-server/my.cnf
+++ b/community/percona-server/my.cnf
@@ -17,15 +17,15 @@
# The following options will be passed to all MySQL clients
[client]
#password = your_password
-port = 3306
-socket = /var/run/mysqld/mysqld.sock
+port = 3306
+socket = /run/mysqld/mysqld.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
-port = 3306
-socket = /var/run/mysqld/mysqld.sock
+port = 3306
+socket = /run/mysqld/mysqld.sock
datadir = /var/lib/mysql
skip-external-locking
key_buffer_size = 16M
@@ -42,7 +42,7 @@ myisam_sort_buffer_size = 8M
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
-#
+#
skip-networking
# Replication Master Server (default)
diff --git a/community/percona-server/mysqld-post.sh b/community/percona-server/mysqld-post.sh
new file mode 100644
index 000000000..8c404f4c4
--- /dev/null
+++ b/community/percona-server/mysqld-post.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+while true; do
+ response=`/usr/bin/mysqladmin -uUNKNOWN_USER ping 2>&1` && break
+ echo "$response" | grep -q "mysqld is alive" && break
+ sleep 1
+done
diff --git a/community/percona-server/mysqld-tmpfile.conf b/community/percona-server/mysqld-tmpfile.conf
new file mode 100644
index 000000000..91638983f
--- /dev/null
+++ b/community/percona-server/mysqld-tmpfile.conf
@@ -0,0 +1 @@
+d /run/mysqld 0755 mysql mysql - \ No newline at end of file
diff --git a/community/percona-server/mysqld.rc b/community/percona-server/mysqld.rc
new file mode 100644
index 000000000..07f6b7e4c
--- /dev/null
+++ b/community/percona-server/mysqld.rc
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+# general config
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+getPID() {
+ echo $(pgrep -u mysql mysqld 2>/dev/null);
+}
+
+case "$1" in
+ start)
+ stat_busy "Starting Percona Server"
+ [ ! -d /var/run/mysqld ] && install -d -g mysql -o mysql /var/run/mysqld &>/dev/null
+ if [ -z "$(getPID)" ]; then
+ /usr/bin/mysqld_safe --user=mysql &>/dev/null &
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ timeo=30
+ while [ $timeo -gt 0 ]; do
+ response=`/usr/bin/mysqladmin -uUNKNOWN_USER ping 2>&1` && break
+ echo "$response" | grep -q "mysqld is alive" && break
+ sleep 1
+ let timeo=${timeo}-1
+ done
+ if [ $timeo -eq 0 ]; then
+ stat_fail
+ exit 1
+ else
+ echo $(getPID) > /var/run/mysqld/mysqld.pid
+ add_daemon mysqld
+ stat_done
+ fi
+ fi
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ stop)
+ stat_busy "Stopping Percona Server"
+ if [ ! -z "$(getPID)" ]; then
+ timeo=30
+ kill $(getPID) &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ fi
+ while [ ! -z "$(getPID)" -a $timeo -gt 0 ]; do
+ sleep 1
+ let timeo=${timeo}-1
+ done
+ if [ -z "$(getPID)" ]; then
+ rm -f /var/run/mysqld/mysqld.pid &>/dev/null
+ rm_daemon mysqld
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ restart)
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/community/percona-server/percona.install b/community/percona-server/percona.install
index 20b6f2932..55f7cacee 100644
--- a/community/percona-server/percona.install
+++ b/community/percona-server/percona.install
@@ -1,8 +1,10 @@
post_install(){
groupadd -g 89 mysql &>/dev/null
useradd -u 89 -g mysql -d /var/lib/mysql -s /bin/false mysql &>/dev/null
- /usr/bin/mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
- chown -R mysql:mysql /var/lib/mysql &>/dev/null
+ usr/bin/mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
+ chown -R mysql:mysql var/lib/mysql &>/dev/null
+
+ usr/bin/systemd-tmpfiles --create mysqld.conf
}
post_upgrade(){
diff --git a/community/psqlodbc/PKGBUILD b/community/psqlodbc/PKGBUILD
index f5d32aa98..78512d22b 100644
--- a/community/psqlodbc/PKGBUILD
+++ b/community/psqlodbc/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 78481 2012-10-19 15:10:20Z spupykin $
+# $Id: PKGBUILD 79084 2012-10-30 09:55:07Z spupykin $
# Maintainer:
# Contributor: Douglas Soares de Andrade <dsa@aur.archlinux-br.org>
# Contributor: Rick Rein <jeebusroxors@gmail.com>
pkgname=psqlodbc
pkgver=09.01.0200
-pkgrel=1
+pkgrel=2
pkgdesc="PostgreSQL ODBC driver"
arch=('i686' 'x86_64')
license=('GPL')
@@ -18,6 +18,7 @@ md5sums=('0f4ac0e6b0755af2452764db4cfe4e8f')
build() {
cd "$srcdir/$pkgname-$pkgver"
+ sed -i 's|#define DEFAULT_PGSOCKET_DIR.*|#define DEFAULT_PGSOCKET_DIR "/run/postgresql"|' socket.h
./configure --prefix=/usr
make
}
diff --git a/community/shotwell/PKGBUILD b/community/shotwell/PKGBUILD
index 5faaaa64e..9600fd3ad 100644
--- a/community/shotwell/PKGBUILD
+++ b/community/shotwell/PKGBUILD
@@ -1,21 +1,21 @@
-# $Id: PKGBUILD 70567 2012-05-11 20:13:47Z spupykin $
+# $Id: PKGBUILD 79129 2012-10-30 23:07:35Z heftig $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Maintainer : Ionut Biru <ibiru@archlinux.org>
# Contributor: Joeny Ang <ang(dot)joeny(at)gmail(dot)com>
pkgname=shotwell
-pkgver=0.12.3
+pkgver=0.13.1
pkgrel=1
pkgdesc="A digital photo organizer designed for the GNOME desktop environment"
arch=('i686' 'x86_64')
url="http://yorba.org/shotwell/"
license=('LGPL2.1')
depends=('libgee' 'libunique3' 'libwebkit3' 'libgexiv2' 'libraw' 'rest'
- 'desktop-file-utils' 'dconf' 'hicolor-icon-theme')
-makedepends=('intltool' 'vala')
+ 'desktop-file-utils' 'dconf' 'hicolor-icon-theme' 'json-glib')
+makedepends=('intltool' 'vala>=0.17.2')
install=shotwell.install
-source=("http://yorba.org/download/shotwell/0.12/shotwell-${pkgver}.tar.bz2")
-md5sums=('de0e05350f8a7d557092489baf14d039')
+source=("http://yorba.org/download/shotwell/0.13/shotwell-${pkgver}.tar.xz")
+md5sums=('71eb1346093705ca2b37c12a21994d14')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
diff --git a/community/simavr/PKGBUILD b/community/simavr/PKGBUILD
new file mode 100644
index 000000000..fd6d4357b
--- /dev/null
+++ b/community/simavr/PKGBUILD
@@ -0,0 +1,31 @@
+# Maintainer: schuay <jakob.gruber@gmail.com>
+
+pkgname=simavr
+pkgver=1.0
+pkgrel=1
+pkgdesc='A lean, mean and hackable AVR simulator'
+arch=('i686' 'x86_64')
+url="https://github.com/buserror-uk/simavr"
+license=('GPL3')
+depends=('elfutils')
+makedepends=('avr-libc')
+source=("https://github.com/downloads/buserror-uk/simavr/$pkgname-$pkgver.tar.bz2")
+options=(!strip)
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ # The original Makefile depends on git, hardcode the version until it's fixed upstream.
+ sed -i "s/^\(SIMAVR_VERSION\).*/\1 = ${pkgver}/" simavr/Makefile
+
+ make AVR_ROOT=/usr/avr SIMAVR_VERSION=1.0 \
+ CFLAGS="-Wall -Wextra -fPIC -std=gnu99 -Wno-sign-compare -Wno-unused-parameter" \
+ build-simavr
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir/usr" install
+}
+
+md5sums=('82c9704a4e8569548f01931e32ebfe0c')
diff --git a/community/xbmc/PKGBUILD b/community/xbmc/PKGBUILD
index dc2a29e62..88b68caee 100644
--- a/community/xbmc/PKGBUILD
+++ b/community/xbmc/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 78945 2012-10-27 23:46:09Z ebelanger $
+# $Id: PKGBUILD 79086 2012-10-30 09:56:06Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Contributor: Brad Fanella <bradfanella@archlinux.us>
# Contributor: [vEX] <niechift.dot.vex.at.gmail.dot.com>
@@ -9,7 +9,7 @@ _prefix=/usr
pkgname=xbmc
pkgver=11.0
-pkgrel=11
+pkgrel=12
pkgdesc="A software media player and entertainment hub for digital media"
arch=('i686' 'x86_64')
url="http://xbmc.org"
@@ -35,6 +35,8 @@ source=("http://mirrors.xbmc.org/releases/source/xbmc-$pkgver.tar.gz"
"xbmc.service")
sha256sums=('1fe5d310c16138f26e2b13bc545604e95f48ace6c8636f23e77da402cd7b0b19'
'82ebca3d66155f889a3d70311b000ac8b911b062af8df308d6a86aecc6b1b52b')
+sha256sums=('1fe5d310c16138f26e2b13bc545604e95f48ace6c8636f23e77da402cd7b0b19'
+ '82ebca3d66155f889a3d70311b000ac8b911b062af8df308d6a86aecc6b1b52b')
build() {
cd "${srcdir}/xbmc-$pkgver"
diff --git a/community/xbmc/xbmc.install b/community/xbmc/xbmc.install
index 23535f662..9e9d4f4b7 100644
--- a/community/xbmc/xbmc.install
+++ b/community/xbmc/xbmc.install
@@ -2,7 +2,7 @@ post_install() {
[[ $(type -p gtk-update-icon-cache) ]] && usr/bin/gtk-update-icon-cache -qtf usr/share/icons/hicolor
[[ $(type -p update-desktop-database) ]] && usr/bin/update-desktop-database -q usr/share/applications
getent group xbmc > /dev/null || groupadd xbmc
- getent passwd xbmc > /dev/null || useradd -d /var/empty xbmc
+ getent passwd xbmc > /dev/null || useradd -d /var/empty -g xbmc xbmc
usermod -a -G xbmc,audio,video,power,network,optical,storage,disk xbmc
}
diff --git a/community/zeitgeist-datahub/PKGBUILD b/community/zeitgeist-datahub/PKGBUILD
new file mode 100644
index 000000000..535899a65
--- /dev/null
+++ b/community/zeitgeist-datahub/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 79124 2012-10-30 23:06:48Z heftig $
+# Maintainer: Balló György <ballogyor+arch at gmail dot com>
+# Contributor: Leontius Adhika Pradhana <leon@leapon.net>
+# Contributor: Ner0
+
+pkgname=zeitgeist-datahub
+pkgver=0.9.5
+pkgrel=2
+pkgdesc="Provides passive plugins which insert events into Zeitgeist"
+arch=('i686' 'x86_64')
+url="https://launchpad.net/zeitgeist-datahub"
+license=('GPL3')
+depends=('libzeitgeist' 'json-glib' 'gtk2' 'telepathy-glib' 'zeitgeist')
+makedepends=('intltool' 'vala')
+source=(http://launchpad.net/$pkgname/${pkgver%.*}/$pkgver/+download/$pkgname-$pkgver.tar.gz)
+md5sums=('b2b76b82b67363c45e5fe4f39a172775')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+}