summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--community-staging/tellico/PKGBUILD38
-rw-r--r--community-staging/tellico/tellico.install13
-rw-r--r--community/kid3/PKGBUILD8
-rw-r--r--community/yaz/PKGBUILD22
-rw-r--r--extra/amule/PKGBUILD13
-rw-r--r--extra/apr/PKGBUILD12
-rw-r--r--extra/cairo-perl/PKGBUILD11
-rw-r--r--extra/cairo-perl/testsuite.patch135
-rw-r--r--extra/libcaca/PKGBUILD10
-rw-r--r--extra/libdrm-new/COPYING48
-rw-r--r--extra/libdrm-new/PKGBUILD53
-rw-r--r--extra/libdrm-new/no-pthread-stubs.patch70
-rw-r--r--extra/libreoffice/PKGBUILD22
-rw-r--r--extra/libreoffice/libreoffice-common.csh2
-rw-r--r--extra/libreoffice/libreoffice-common.sh2
-rw-r--r--extra/live-media/PKGBUILD6
-rw-r--r--extra/openjdk6/PKGBUILD17
-rw-r--r--extra/openjdk6/fix_corba_cmds_path.diff20
-rw-r--r--extra/openjdk6/fix_jdk_cmds_path.diff20
-rw-r--r--extra/polkit/PKGBUILD14
-rw-r--r--extra/polkit/systemd-fallback.patch1571
-rw-r--r--extra/poppler/PKGBUILD4
-rw-r--r--extra/vim/PKGBUILD24
-rw-r--r--extra/watchdog/PKGBUILD14
-rw-r--r--extra/watchdog/watchdog-5.12-fix-oom-in-wd_keepalive.patch11
-rw-r--r--extra/xf86-video-intel/PKGBUILD25
-rw-r--r--extra/xf86-video-nouveau/PKGBUILD12
-rw-r--r--extra/xf86-video-s3virge/PKGBUILD18
-rw-r--r--extra/xterm/PKGBUILD8
-rw-r--r--multilib/lib32-atk/PKGBUILD6
-rw-r--r--multilib/lib32-openssl/PKGBUILD8
-rw-r--r--staging/cups-filters/PKGBUILD42
-rw-r--r--staging/inkscape/PKGBUILD59
-rw-r--r--staging/inkscape/install13
-rw-r--r--staging/inkscape/libpng15.patch40
-rw-r--r--staging/inkscape/poppler20.patch642
-rw-r--r--staging/kdegraphics-okular/PKGBUILD34
-rw-r--r--staging/kdegraphics-okular/kdegraphics-okular.install12
-rw-r--r--staging/poppler/PKGBUILD80
-rw-r--r--staging/xpdf/PKGBUILD64
-rw-r--r--staging/xpdf/char.patch12
-rw-r--r--staging/xpdf/desktop9
-rw-r--r--staging/xpdf/install11
-rw-r--r--testing/cryptsetup/PKGBUILD35
-rw-r--r--testing/cryptsetup/encrypt_hook137
-rw-r--r--testing/cryptsetup/encrypt_install39
-rw-r--r--testing/iw/PKGBUILD24
-rw-r--r--testing/libnl/PKGBUILD31
48 files changed, 3363 insertions, 158 deletions
diff --git a/community-staging/tellico/PKGBUILD b/community-staging/tellico/PKGBUILD
new file mode 100644
index 000000000..3f232cf5d
--- /dev/null
+++ b/community-staging/tellico/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 70653 2012-05-13 20:54:07Z jlichtblau $
+# Maintainer: Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+# Contributor: Maintainer: Ray Rashif <schiv@archlinux.org
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Douglas Soares de Andrade <dsa@aur.archlinux.org>
+
+pkgname=tellico
+pkgver=2.3.5
+pkgrel=2
+pkgdesc="A collection manager for KDE"
+arch=('i686' 'x86_64')
+url="http://tellico-project.org/"
+license=('GPL')
+depends=('kdebase-workspace' 'yaz' 'exempi' 'libksane' 'taglib' 'kdemultimedia-kioslave' 'poppler-qt' 'qjson')
+makedepends=('automoc4' 'cmake')
+install=$pkgname.install
+source=(http://tellico-project.org/files/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('b31db35589cae7f9af56a17e6589f8c5de68e36d9fc5fbaea4154e8238bf041c')
+
+build() {
+ cd ${srcdir}
+
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+
+ make DESTDIR=${pkgdir} install
+
+# fix python 2.7 path
+ find ${pkgdir} -iname "*.py" | xargs sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|'
+}
diff --git a/community-staging/tellico/tellico.install b/community-staging/tellico/tellico.install
new file mode 100644
index 000000000..3b3aff7d9
--- /dev/null
+++ b/community-staging/tellico/tellico.install
@@ -0,0 +1,13 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-mime-database usr/share/mime &> /dev/null
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/community/kid3/PKGBUILD b/community/kid3/PKGBUILD
index 5b68cc28e..58909f0f8 100644
--- a/community/kid3/PKGBUILD
+++ b/community/kid3/PKGBUILD
@@ -1,16 +1,16 @@
-# $Id: PKGBUILD 70617 2012-05-12 21:33:45Z jlichtblau $
+# $Id: PKGBUILD 70622 2012-05-13 09:46:34Z jlichtblau $
# Maintainer: Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
# Contributor: Alois Nespor <alois.nespor@gmail.com>
pkgname=kid3
pkgver=2.1
-pkgrel=1
+pkgrel=2
pkgdesc="An MP3, Ogg/Vorbis and FLAC tag editor for KDE"
arch=('i686' 'x86_64')
url="http://kid3.sourceforge.net/"
license=('GPL')
-depends=('id3lib' 'qt' 'tunepimp' 'kdelibs')
-makedepends=('automoc4' 'cmake' 'docbook-xml' 'docbook-xsl' 'chromaprint')
+depends=('chromaprint' 'id3lib' 'qt' 'tunepimp' 'kdelibs')
+makedepends=('automoc4' 'cmake' 'docbook-xml' 'docbook-xsl')
options=('!makeflags')
install=$pkgname.install
changelog=$pkgname.changelog
diff --git a/community/yaz/PKGBUILD b/community/yaz/PKGBUILD
index 34a350665..73b0cd14b 100644
--- a/community/yaz/PKGBUILD
+++ b/community/yaz/PKGBUILD
@@ -1,24 +1,25 @@
-# $Id: PKGBUILD 69774 2012-04-23 09:16:32Z ibiru $
-# Maintainer: Ray Rashif <schiv@archlinux.org>
+# $Id: PKGBUILD 70645 2012-05-13 19:04:54Z jlichtblau $
+# Maintainer: Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+# Contributor: Ray Rashif <schiv@archlinux.org>
# Contributor: Andrea Scarpino <andrea@archlinux.org>
# Contributor: Stefan Husmann <stefan-husmann@t-online.de>
# Contributor: William Rea <sillywilly@gmail.com>
# Contributor: Robert Emil Berge <filoktetes@linuxophic.org>
pkgname=yaz
-pkgver=4.2.29
+pkgver=4.2.33
pkgrel=1
pkgdesc="A toolkit supporting the development of Z39.50/SRW/SRU clients and servers"
arch=('i686' 'x86_64')
-license=('BSD')
url="http://www.indexdata.dk/yaz"
+license=('BSD')
depends=('openssl' 'libxslt' 'icu')
options=('!libtool')
source=("http://ftp.indexdata.dk/pub/$pkgname/$pkgname-$pkgver.tar.gz")
-md5sums=('584bcf12401f182a42091616c6cf7e0a')
+sha256sums=('77baecaa0b032c0155676e704d39b49415d4793ab65ad6c26e04f6dfb0be1276')
build() {
- cd "$srcdir/$pkgname-$pkgver"
+ cd ${srcdir}/$pkgname-$pkgver
./configure --prefix=/usr \
--enable-shared=yaz \
@@ -27,12 +28,9 @@ build() {
}
package() {
- cd "$srcdir/$pkgname-$pkgver"
+ cd ${srcdir}/$pkgname-$pkgver
- make DESTDIR="$pkgdir/" install
+ make DESTDIR=${pkgdir} install
- install -Dm644 LICENSE \
- "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+ install -Dm644 LICENSE ${pkgdir}/usr/share/licenses/$pkgname/LICENSE
}
-
-# vim:set ts=2 sw=2 et:
diff --git a/extra/amule/PKGBUILD b/extra/amule/PKGBUILD
index b56951402..5cde41e62 100644
--- a/extra/amule/PKGBUILD
+++ b/extra/amule/PKGBUILD
@@ -1,28 +1,23 @@
-# $Id: PKGBUILD 155990 2012-04-10 22:28:11Z giovanni $
+# $Id: PKGBUILD 158922 2012-05-13 08:27:33Z giovanni $
# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: Henrik Ronellenfitsch <searinox@web.de>
# Contributor: Alessio Sergi <sergi.alessio {at} gmail.com>
# Contributor: Dario 'Dax' Vilardi <dax [at] deelab [dot] org>
pkgname=amule
-pkgver=10771
+pkgver=10785
pkgrel=1
pkgdesc="An eMule-like client for ed2k p2p network"
arch=('i686' 'x86_64')
url="http://www.amule.org"
license=('GPL')
depends=('wxgtk' 'gd' 'geoip' 'libupnp' 'crypto++')
-source=("http://amule.sourceforge.net/tarballs/aMule-SVN-r${pkgver}.tar.bz2"
- 'gcc4.7.patch')
-md5sums=('0439a71048c7dbdf912d19979dc0faad'
- '0498a6795f4ac3a3e8bbcf51a5026820')
+source=("http://amule.sourceforge.net/tarballs/aMule-SVN-r${pkgver}.tar.bz2")
+md5sums=('e8b24cff96050eeb07b05a7add5803ff')
build() {
cd "${srcdir}/aMule-SVN-r${pkgver}"
- # Fix gcc-4.7 build
- patch -Np1 -i "${srcdir}/gcc4.7.patch"
-
./configure --prefix=/usr \
--mandir=/usr/share/man \
--enable-cas \
diff --git a/extra/apr/PKGBUILD b/extra/apr/PKGBUILD
index 98fb60856..a1e496a34 100644
--- a/extra/apr/PKGBUILD
+++ b/extra/apr/PKGBUILD
@@ -1,24 +1,22 @@
-# $Id: PKGBUILD 149942 2012-02-11 23:30:26Z allan $
+# $Id: PKGBUILD 158966 2012-05-13 20:20:53Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Andrea Scarpino <andrea@archlinux.org>
# Contributor: Pierre Schmitz <pierre@archlinux.de>
pkgname=apr
-pkgver=1.4.5
-pkgrel=2
+pkgver=1.4.6
+pkgrel=1
pkgdesc="The Apache Portable Runtime"
arch=('i686' 'x86_64')
url="http://apr.apache.org/"
-depends=('util-linux-ng>=2.16')
+depends=('util-linux')
options=('!libtool')
license=('APACHE')
source=(http://www.apache.org/dist/apr/apr-${pkgver}.tar.bz2)
-md5sums=('8b53f5a5669d0597f2da889a2f576eb6')
+md5sums=('ffee70a111fd07372982b0550bbb14b7')
build() {
cd "${srcdir}/apr-${pkgver}"
- export apr_cv_accept4=no
-
./configure --prefix=/usr --includedir=/usr/include/apr-1 \
--with-installbuilddir=/usr/share/apr-1/build \
--enable-nonportable-atomics \
diff --git a/extra/cairo-perl/PKGBUILD b/extra/cairo-perl/PKGBUILD
index 7fb05334a..e970bb1c6 100644
--- a/extra/cairo-perl/PKGBUILD
+++ b/extra/cairo-perl/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 143687 2011-11-28 11:39:04Z jgc $
+# $Id: PKGBUILD 158976 2012-05-13 21:18:20Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=cairo-perl
-pkgver=1.081
+pkgver=1.082
pkgrel=1
pkgdesc="Perl wrappers for cairo"
arch=(i686 x86_64)
@@ -11,11 +11,14 @@ url="http://gtk2-perl.sourceforge.net/"
options=('!emptydirs')
depends=('cairo' 'perl')
makedepends=('perl-extutils-depends' 'perl-extutils-pkgconfig')
-source=(http://downloads.sourceforge.net/sourceforge/gtk2-perl/Cairo-${pkgver}.tar.gz)
-md5sums=('52c712b0f749f2fe232ae6e18880fe7d')
+source=(http://downloads.sourceforge.net/sourceforge/gtk2-perl/Cairo-${pkgver}.tar.gz
+ testsuite.patch)
+md5sums=('cfd61e519ff20023979c255d4040fe06'
+ '6a3ceac304a5a53f8fdd5652d98f6855')
build() {
cd "${srcdir}/Cairo-${pkgver}"
+ patch -Np1 -i "${srcdir}/testsuite.patch"
perl Makefile.PL INSTALLDIRS=vendor
make
}
diff --git a/extra/cairo-perl/testsuite.patch b/extra/cairo-perl/testsuite.patch
new file mode 100644
index 000000000..59cb58f28
--- /dev/null
+++ b/extra/cairo-perl/testsuite.patch
@@ -0,0 +1,135 @@
+From 21dd8a0600cbfac46723c7745b377fce94c8bdc3 Mon Sep 17 00:00:00 2001
+From: Torsten Schönfeld <kaffeetisch@gmx.de>
+Date: Sat, 31 Mar 2012 10:34:11 +0000
+Subject: Fix compiling and testing against older versions of cairo
+
+---
+(limited to 't/CairoPath.t')
+
+diff --git a/t/CairoPath.t b/t/CairoPath.t
+index e515172..770e464 100644
+--- a/t/CairoPath.t
++++ b/t/CairoPath.t
+@@ -11,11 +11,17 @@ use strict;
+ use warnings;
+ use Cairo;
+
+-use Test::More tests => 6;
++use Test::More;
+
+ use constant IMG_WIDTH => 256;
+ use constant IMG_HEIGHT => 256;
+
++if (Cairo::VERSION >= Cairo::VERSION_ENCODE (1, 4, 0)) {
++ plan tests => 6;
++} else {
++ plan skip_all => 'path behavior not predictable on cairo < 1.4';
++}
++
+ my $surf = Cairo::ImageSurface->create ('rgb24', IMG_WIDTH, IMG_HEIGHT);
+ my $cr = Cairo::Context->create ($surf);
+
+--
+cgit v0.9.0.2
+From a1cd2e45b4ee49a724ae5d7e854ad9829eebf00d Mon Sep 17 00:00:00 2001
+From: Torsten Schönfeld <kaffeetisch@gmx.de>
+Date: Sat, 07 Apr 2012 18:01:31 +0000
+Subject: Make t/CairoPath.t more robust
+
+The end of a path that took a round trip into cairo and back might differ
+for different versions of cairo. Hence, compare only the beginning with
+the expected path.
+---
+diff --git a/t/CairoPath.t b/t/CairoPath.t
+index 770e464..27a3aad 100644
+--- a/t/CairoPath.t
++++ b/t/CairoPath.t
+@@ -11,17 +11,11 @@ use strict;
+ use warnings;
+ use Cairo;
+
+-use Test::More;
++use Test::More tests => 18;
+
+ use constant IMG_WIDTH => 256;
+ use constant IMG_HEIGHT => 256;
+
+-if (Cairo::VERSION >= Cairo::VERSION_ENCODE (1, 4, 0)) {
+- plan tests => 6;
+-} else {
+- plan skip_all => 'path behavior not predictable on cairo < 1.4';
+-}
+-
+ my $surf = Cairo::ImageSurface->create ('rgb24', IMG_WIDTH, IMG_HEIGHT);
+ my $cr = Cairo::Context->create ($surf);
+
+@@ -40,14 +34,7 @@ my $expected_path = [
+ ];
+
+ my $path = $cr->copy_path;
+-is_deeply ($path, $expected_path);
+-
+-sub paths_agree {
+- my ($cr, $path, $expected_path) = @_;
+- $cr->new_path;
+- $cr->append_path ($path);
+- is_deeply ($cr->copy_path, $expected_path);
+-}
++paths_agree ($path, $expected_path);
+
+ # Modifying single point values.
+ foreach ($path, $expected_path) {
+@@ -57,21 +44,21 @@ foreach ($path, $expected_path) {
+ $_->[2]{points}[2][0] = 99;
+ $_->[2]{points}[2][1] = 1010;
+ }
+-paths_agree ($cr, $path, $expected_path);
++path_round_trip_ok ($cr, $path, $expected_path);
+
+ # Modifying single points.
+ foreach ($path, $expected_path) {
+ $_->[1]{points}[0] = [333, 444];
+ $_->[2]{points}[2] = [77, 88];
+ }
+-paths_agree ($cr, $path, $expected_path);
++path_round_trip_ok ($cr, $path, $expected_path);
+
+ # Replacing all points.
+ foreach ($path, $expected_path) {
+ $_->[1]{points} = [[3333, 4444]];
+ $_->[2]{points} = [[55, 66], [77, 88], [99, 1010]];
+ }
+-paths_agree ($cr, $path, $expected_path);
++path_round_trip_ok ($cr, $path, $expected_path);
+
+ # Replacing and adding path segments.
+ my @cloned_path = @{$path};
+@@ -86,9 +73,24 @@ foreach (\@cloned_path, $expected_path) {
+ type => 'line-to',
+ points => [[23, 42]] };
+ }
+-paths_agree ($cr, \@cloned_path, $expected_path);
++path_round_trip_ok ($cr, \@cloned_path, $expected_path);
+
+ # Passing bare arrays into Cairo.
+ $cr->new_path;
+ $cr->append_path ($expected_path);
+-is_deeply ($cr->copy_path, $expected_path);
++paths_agree ($cr->copy_path, $expected_path);
++
++sub path_round_trip_ok {
++ my ($cr, $path, $expected_path) = @_;
++ $cr->new_path;
++ $cr->append_path ($path);
++ paths_agree ($cr->copy_path, $expected_path);
++}
++
++sub paths_agree {
++ my ($path, $expected_path) = @_;
++ # Only the first three entries seem to be reliable across cairo versions.
++ for (0..2) {
++ is_deeply ($path->[$_], $expected_path->[$_]);
++ }
++}
+--
+cgit v0.9.0.2
diff --git a/extra/libcaca/PKGBUILD b/extra/libcaca/PKGBUILD
index d937e8dc5..c44ac22e9 100644
--- a/extra/libcaca/PKGBUILD
+++ b/extra/libcaca/PKGBUILD
@@ -1,17 +1,17 @@
-# $Id: PKGBUILD 150463 2012-02-18 00:19:31Z allan $
+# $Id: PKGBUILD 158970 2012-05-13 20:58:29Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=libcaca
-pkgver=0.99.beta17
-pkgrel=2
+pkgver=0.99.beta18
+pkgrel=1
pkgdesc="Color AsCii Art library"
arch=('i686' 'x86_64')
license=('LGPL')
-url="http://libcaca.zoy.org/"
+url="http://caca.zoy.org/wiki/libcaca"
depends=('imlib2' 'ncurses')
options=(!libtool !emptydirs)
source=(http://libcaca.zoy.org/files/libcaca/${pkgname}-${pkgver}.tar.gz)
-md5sums=('790d6e26b7950e15909fdbeb23a7ea87')
+md5sums=('93d35dbdb0527d4c94df3e9a02e865cc')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
diff --git a/extra/libdrm-new/COPYING b/extra/libdrm-new/COPYING
new file mode 100644
index 000000000..6e74c337c
--- /dev/null
+++ b/extra/libdrm-new/COPYING
@@ -0,0 +1,48 @@
+ Copyright 2005 Adam Jackson.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation on the rights to use, copy, modify, merge,
+ publish, distribute, sub license, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice (including the
+ next paragraph) shall be included in all copies or substantial
+ portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NON-INFRINGEMENT. IN NO EVENT SHALL ADAM JACKSON BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+------------------------------------------------------------------------
+
+ Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
+ Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
+ All Rights Reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice (including the
+ next paragraph) shall be included in all copies or substantial
+ portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS
+ SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
diff --git a/extra/libdrm-new/PKGBUILD b/extra/libdrm-new/PKGBUILD
new file mode 100644
index 000000000..32a85fcd1
--- /dev/null
+++ b/extra/libdrm-new/PKGBUILD
@@ -0,0 +1,53 @@
+#Id$
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=libdrm-new
+pkgname=(libdrm-new libdrm-nouveau)
+pkgver=2.4.34
+pkgrel=1
+pkgdesc="Userspace interface to kernel DRM services"
+arch=(i686 x86_64)
+license=('custom')
+depends=('glibc' 'libpciaccess')
+makedepends=('cairo' 'valgrind')
+options=('!libtool' '!emptydirs')
+url="http://dri.freedesktop.org/"
+source=(http://dri.freedesktop.org/libdrm/libdrm-$pkgver.tar.bz2
+ no-pthread-stubs.patch
+ COPYING
+)
+sha1sums=('861757baff4b37e564e13f5350c1b5d01c66a181'
+ '2a5410baa3e6e078f9378ce486a88f41d22fd838'
+ 'ba3dcd636997ee0d30df14b03dae05c24ae5d094')
+
+build() {
+ cd "libdrm-$pkgver"
+ patch -Np1 -i "$srcdir/no-pthread-stubs.patch"
+
+ #libtoolize --force
+ autoreconf --force --install
+ ./configure --prefix=/usr \
+ --disable-libkms \
+ --disable-intel \
+ --disable-radeon
+ make
+}
+
+package_libdrm-new() {
+ pkgdesc="Userspace interface to kernel DRM services - used as makedepends for xf86-video-nouveau"
+ conflicts=('libdrm')
+ provides=("libdrm=$pkgver")
+ cd "libdrm-$pkgver"
+ make DESTDIR="$pkgdir" install
+ rm "$pkgdir"/usr/lib/libdrm_nouveau.so.2*
+}
+
+package_libdrm-nouveau() {
+ pkgdesc="Userspace interface to kernel DRM services for nouveau - used as depends for xf86-video-nouveau"
+ depends=(libdrm)
+ cd "libdrm-$pkgver"
+ make DESTDIR="$pkgdir" install-libdrm_laLTLIBRARIES
+ make -C nouveau DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" uninstall-libdrm_laLTLIBRARIES
+ rm "$pkgdir"/usr/include/libdrm/nouveau.h "$pkgdir"/usr/lib/pkgconfig/libdrm_nouveau.pc "$pkgdir"/usr/lib/libdrm_nouveau.so
+}
diff --git a/extra/libdrm-new/no-pthread-stubs.patch b/extra/libdrm-new/no-pthread-stubs.patch
new file mode 100644
index 000000000..6745f4bc4
--- /dev/null
+++ b/extra/libdrm-new/no-pthread-stubs.patch
@@ -0,0 +1,70 @@
+diff -Nur libdrm-2.4.34.orig/configure.ac libdrm-2.4.34/configure.ac
+--- libdrm-2.4.34.orig/configure.ac 2012-05-12 14:54:06.375335490 +0000
++++ libdrm-2.4.34/configure.ac 2012-05-12 14:54:32.075142065 +0000
+@@ -47,10 +47,6 @@
+ LT_INIT([disable-static])
+
+
+-PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs)
+-AC_SUBST(PTHREADSTUBS_CFLAGS)
+-AC_SUBST(PTHREADSTUBS_LIBS)
+-
+ pkgconfigdir=${libdir}/pkgconfig
+ AC_SUBST(pkgconfigdir)
+ AC_ARG_ENABLE([udev],
+diff -Nur libdrm-2.4.34.orig/intel/Makefile.am libdrm-2.4.34/intel/Makefile.am
+--- libdrm-2.4.34.orig/intel/Makefile.am 2012-05-12 14:54:06.372001955 +0000
++++ libdrm-2.4.34/intel/Makefile.am 2012-05-12 14:55:24.164745055 +0000
+@@ -26,7 +26,6 @@
+ $(WARN_CFLAGS) \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/intel \
+- $(PTHREADSTUBS_CFLAGS) \
+ $(PCIACCESS_CFLAGS) \
+ $(VALGRIND_CFLAGS) \
+ -I$(top_srcdir)/include/drm
+@@ -35,7 +34,6 @@
+ libdrm_intel_ladir = $(libdir)
+ libdrm_intel_la_LDFLAGS = -version-number 1:0:0 -no-undefined
+ libdrm_intel_la_LIBADD = ../libdrm.la \
+- @PTHREADSTUBS_LIBS@ \
+ @PCIACCESS_LIBS@ \
+ @CLOCK_LIB@
+
+diff -Nur libdrm-2.4.34.orig/nouveau/Makefile.am libdrm-2.4.34/nouveau/Makefile.am
+--- libdrm-2.4.34.orig/nouveau/Makefile.am 2012-05-12 14:54:06.331998148 +0000
++++ libdrm-2.4.34/nouveau/Makefile.am 2012-05-12 14:56:00.941132085 +0000
+@@ -2,14 +2,13 @@
+ $(WARN_CFLAGS) \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/nouveau \
+- $(PTHREADSTUBS_CFLAGS) \
+ -I$(top_srcdir)/include/drm \
+ -DDEBUG
+
+ libdrm_nouveau_la_LTLIBRARIES = libdrm_nouveau.la
+ libdrm_nouveau_ladir = $(libdir)
+ libdrm_nouveau_la_LDFLAGS = -version-number 2:0:0 -no-undefined
+-libdrm_nouveau_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@
++libdrm_nouveau_la_LIBADD = ../libdrm.la
+
+ libdrm_nouveau_la_SOURCES = nouveau.c \
+ pushbuf.c \
+diff -Nur libdrm-2.4.34.orig/radeon/Makefile.am libdrm-2.4.34/radeon/Makefile.am
+--- libdrm-2.4.34.orig/radeon/Makefile.am 2012-05-12 14:54:06.365334765 +0000
++++ libdrm-2.4.34/radeon/Makefile.am 2012-05-12 14:55:48.084557437 +0000
+@@ -26,13 +26,12 @@
+ $(WARN_CFLAGS) \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/radeon \
+- $(PTHREADSTUBS_CFLAGS) \
+ -I$(top_srcdir)/include/drm
+
+ libdrm_radeon_la_LTLIBRARIES = libdrm_radeon.la
+ libdrm_radeon_ladir = $(libdir)
+ libdrm_radeon_la_LDFLAGS = -version-number 1:0:0 -no-undefined
+-libdrm_radeon_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@
++libdrm_radeon_la_LIBADD = ../libdrm.la
+
+ libdrm_radeon_la_SOURCES = \
+ radeon_bo_gem.c \
diff --git a/extra/libreoffice/PKGBUILD b/extra/libreoffice/PKGBUILD
index 2bfcd37be..f32828c7a 100644
--- a/extra/libreoffice/PKGBUILD
+++ b/extra/libreoffice/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 157024 2012-04-23 09:27:44Z ibiru $
+# $Id: PKGBUILD 158917 2012-05-13 06:19:42Z andyrtr $
# Maintainer: AndyRTR <andyrtr@archlinux.org>
pkgbase="libreoffice"
@@ -19,8 +19,8 @@ pkgname=('libreoffice-common'
'libreoffice-extension-presenter-screen'
'libreoffice-extension-presentation-minimizer'
'libreoffice-extension-report-builder')
-_LOver=3.5.2.2
-pkgver=3.5.2
+_LOver=3.5.3.2
+pkgver=3.5.3
pkgrel=1
arch=('i686' 'x86_64')
license=('LGPL3')
@@ -46,7 +46,7 @@ _mirror="http://download.documentfoundation.org/libreoffice/src/${pkgver}"
_additional_source_url="http://dev-www.libreoffice.org/src"
source=(${_mirror}/${pkgbase}-{core,help,translations}-${_LOver}.tar.xz
${_additional_source_url}/18f577b374d60b3c760a3a3350407632-STLport-4.5.tar.gz
- ${_additional_source_url}/d28864eb2b59bb57b034c0d4662a3cee-libvisio-0.0.15.tar.bz2
+ ${_additional_source_url}/2fa6028324347860e684e75310818d43-libvisio-0.0.16.tar.bz2
${_additional_source_url}/1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz
${_additional_source_url}/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip
${_additional_source_url}/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip
@@ -77,7 +77,7 @@ source=(${_mirror}/${pkgbase}-{core,help,translations}-${_LOver}.tar.xz
smp_buildfix.diff::http://cgit.freedesktop.org/libreoffice/core/patch/?id=cf23f57ae6bb7af689a45e0a850c3c2f67a8f810
buildfix_icu49.diff
libreoffice-common.sh libreoffice-common.csh)
-noextract=(d28864eb2b59bb57b034c0d4662a3cee-libvisio-0.0.15.tar.bz2
+noextract=(2fa6028324347860e684e75310818d43-libvisio-0.0.16.tar.bz2
18f577b374d60b3c760a3a3350407632-STLport-4.5.tar.gz
185d60944ea767075d27247c3162b3bc-unowinreg.dll
0ff7d225d087793c8c2c680d77aac3e7-mdds_0.5.3.tar.bz2
@@ -105,11 +105,11 @@ noextract=(d28864eb2b59bb57b034c0d4662a3cee-libvisio-0.0.15.tar.bz2
ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip
db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip
ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip)
-md5sums=('a21156d5657b8619a523ffdc5cc0003e'
- '3c064a24191274fcd8fd466ce9d5dc42'
- '17ebcd0d25e716d3905b1a905907fd67'
+md5sums=('d22cd79e7463ac4caf0a4b47d78a82ac'
+ '3455f3f523d739aa391b5a5bf04ff958'
+ '945fbf7888c464f4e1cf7282d370b257'
'18f577b374d60b3c760a3a3350407632'
- 'd28864eb2b59bb57b034c0d4662a3cee'
+ '2fa6028324347860e684e75310818d43'
'1f24ab1d39f4a51faf22244c94a6203f'
'35c94d2df8893241173de1d16b6034c0'
'798b2ffdc8bcfe7bca2cf92b62caf685'
@@ -139,8 +139,8 @@ md5sums=('a21156d5657b8619a523ffdc5cc0003e'
'60ce5dc9bd098f95c2e621a930c98dd9'
'661a52a02a31b3afbe4b3b3146061afd'
'9734ea20c9f67e1b6e1c5a1247fbd3ff'
- '32fcd844935434807e68d7bd06b94f09'
- '06a45184aefe078c4314e002ba666b52')
+ 'f0e72d0e1bc93a50a3aa9d31350b156c'
+ '867c682b45f477f916786e00c45d7ab7')
build() {
diff --git a/extra/libreoffice/libreoffice-common.csh b/extra/libreoffice/libreoffice-common.csh
index 625917add..af31d4432 100644
--- a/extra/libreoffice/libreoffice-common.csh
+++ b/extra/libreoffice/libreoffice-common.csh
@@ -1 +1 @@
-setenv PYTHONPATH ${PYTHONPATH}:/usr/lib/libreoffice/program
+#setenv PYTHONPATH ${PYTHONPATH}:/usr/lib/libreoffice/program
diff --git a/extra/libreoffice/libreoffice-common.sh b/extra/libreoffice/libreoffice-common.sh
index ea04b2e6d..ee405b1aa 100644
--- a/extra/libreoffice/libreoffice-common.sh
+++ b/extra/libreoffice/libreoffice-common.sh
@@ -1 +1 @@
-export PYTHONPATH="$PYTHONPATH:/usr/lib/libreoffice/program"
+#export PYTHONPATH="$PYTHONPATH:/usr/lib/libreoffice/program"
diff --git a/extra/live-media/PKGBUILD b/extra/live-media/PKGBUILD
index 68888f2cf..230eafac7 100644
--- a/extra/live-media/PKGBUILD
+++ b/extra/live-media/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 158337 2012-05-03 18:12:02Z giovanni $
+# $Id: PKGBUILD 158924 2012-05-13 10:20:49Z giovanni $
# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: Gilles CHAUVIN <gcnweb@gmail.com>
pkgname=live-media
-pkgver=2012.05.03
+pkgver=2012.05.11
pkgrel=1
pkgdesc="A set of C++ libraries for multimedia streaming"
arch=('i686' 'x86_64')
@@ -11,7 +11,7 @@ license=('LGPL')
url="http://live555.com/liveMedia"
depends=('gcc-libs')
source=("http://live555.com/liveMedia/public/live.${pkgver}.tar.gz")
-md5sums=('333ea9577af0871474646720113fef31')
+md5sums=('6ffb354005fe211dd455042f2e0c6564')
build() {
cd ${srcdir}/live
diff --git a/extra/openjdk6/PKGBUILD b/extra/openjdk6/PKGBUILD
index 6f5624bd6..f16ac0679 100644
--- a/extra/openjdk6/PKGBUILD
+++ b/extra/openjdk6/PKGBUILD
@@ -1,21 +1,21 @@
-# $Id: PKGBUILD 152644 2012-03-07 19:17:54Z andyrtr $
+# $Id: PKGBUILD 158936 2012-05-13 13:26:46Z andyrtr $
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=('openjdk6' 'openjdk6-src')
pkgbase="openjdk6"
_javaver=6
-_icedteaver=1.11.1
+_icedteaver=1.11.2
_openjdk_version=b24
_openjdk_date=14_nov_2011
pkgver=${_javaver}.${_openjdk_version}_${_icedteaver}
-pkgrel=3
+pkgrel=1
url='http://icedtea.classpath.org'
arch=('i686' 'x86_64')
license=('custom')
makedepends=('gcc-libs' 'xdg-utils' 'hicolor-icon-theme' 'ca-certificates-java' 'libxtst' 'alsa-lib' 'giflib' 'libxp' 'gtk2'
'nspr' 'zlib' 'freetype2' 'libjpeg>=8' 'libx11' 'libcups' 'patch' 'libxt' 'nss' 'libxslt' #'xalan-java'
- 'apache-ant' 'autoconf' 'unzip' 'rhino' 'mercurial' 'zip' 'cpio' 'openjdk6')
+ 'apache-ant' 'autoconf' 'unzip' 'rhino' 'mercurial' 'zip' 'cpio' 'openjdk6' 'inetutils')
options=('!emptydirs') # 'force') # force needed for hg shots
source=(http://icedtea.classpath.org/download/source/icedtea6-${_icedteaver}.tar.gz{,.sig}
http://download.java.net/openjdk/jdk6/promoted/${_openjdk_version}/openjdk-6-src-${_openjdk_version}-${_openjdk_date}.tar.gz
@@ -32,14 +32,14 @@ noextract=(openjdk-6-src-${_openjdk_version}-${_openjdk_date}.tar.gz
jaxp144_03.zip
jdk6-jaxws2_1_6-2011_06_13.zip
jdk6-jaf-b20.zip)
-sha256sums=('bafb0e21e1edf5ee22871b13dbc0a8a0d3efd894551fb91d5f59783069b6912c'
- '695f6eddaf274a01be8cf0d7a429d268a49db4799aa0d69063061fd73105ef0b'
+sha256sums=('078637dc8323951b18cbb2aac56fd2f24baaa81f0757391aaa17e1b7577e9ce5'
+ '1c4b7ae37498c61b18ac5fcf04b3322b4b82afe7e959e5949f05bf252cdf73c7'
'f84e7f0938f4939660ff8f9c2aa164d301faa8a519f2324ceb05ad34b2e09227'
'c1a5348e17b330a7e4b18431e61a40efd2ba99a7da71102cf2c604478ef96012'
'229040544e791f44906e8e7b6f6faf503c730a5d854275135f3925490d5c3be3'
'78c7b5c9d6271e88ee46abadd018a61f1e9645f8936cc8df1617e5f4f5074012'
- 'ad9a23a14893dab3770744cdf684ffc7a7025eeb7149840faefea82e2a8ed3fa'
- '6384026ee4854a4ebcd5203845f0a56126aaf34517e99cfbc16c3ea353c55fe5'
+ 'f5f59e121f7645ebc449bb13569fd924cbab3194e41db901f4fbe9dbd45720c5'
+ '7b2db65bfb9d5014e1522178d65cabf05dfa85e0926cde5648b5a338db376479'
'9ad943ceb3dbcdf45d72974fc3667886a7ed65c69ab9abc17be5412827551a7f'
'9c3c55c30729ec44fab14c3f3f841c273730c7467d8908a72f018bc9e9f65bd9'
'26e2cd5a6034f08a685129c9412f487b9931fb0d556f1ccceab17bdb75a372cd'
@@ -64,6 +64,7 @@ build() {
autoreconf -i
export DISTRIBUTION_PATCHES="patches/fix_jdk_cmds_path.diff patches/fontconfig-paths.diff patches/fix_corba_cmds_path.diff patches/nonreparenting-wm.diff"
+# export DISTRIBUTION_PATCHES="patches/fontconfig-paths.diff patches/nonreparenting-wm.diff"
export ALT_PARALLEL_COMPILE_JOBS="${MAKEFLAGS/-j}"
export HOTSPOT_BUILD_JOBS="${ALT_PARALLEL_COMPILE_JOBS}"
diff --git a/extra/openjdk6/fix_corba_cmds_path.diff b/extra/openjdk6/fix_corba_cmds_path.diff
index 842657880..7a3db9567 100644
--- a/extra/openjdk6/fix_corba_cmds_path.diff
+++ b/extra/openjdk6/fix_corba_cmds_path.diff
@@ -1,6 +1,6 @@
--- openjdk/corba/make/common/shared/Defs-utils.gmk.old 2008-04-13 13:26:12.000000000 +0300
+++ openjdk/corba/make/common/shared/Defs-utils.gmk 2008-04-14 15:35:13.000000000 +0300
-@@ -86,10 +86,10 @@
+@@ -76,7 +76,7 @@
CHMOD = $(UTILS_COMMAND_PATH)chmod
CMP = $(UTILS_USR_BIN_PATH)cmp
COMM = $(UTILS_USR_BIN_PATH)comm
@@ -8,21 +8,17 @@
+COMPRESS = $(UTILS_COMMAND_PATH)compress
CP = $(UTILS_COMMAND_PATH)cp
CPIO = $(UTILS_COMMAND_PATH)cpio
--CUT = $(UTILS_USR_BIN_PATH)cut
-+CUT = $(UTILS_COMMAND_PATH)cut
- DATE = $(UTILS_COMMAND_PATH)date
- DF = $(UTILS_COMMAND_PATH)df
- DIFF = $(UTILS_USR_BIN_PATH)diff
-@@ -136,7 +136,7 @@
+ CUT = $(UTILS_USR_BIN_PATH)cut
+@@ -125,7 +125,7 @@
+ TAIL = $(UTILS_USR_BIN_PATH)tail
TAR = $(UTILS_COMMAND_PATH)tar
TEST = $(UTILS_USR_BIN_PATH)test
- TOUCH = $(UTILS_COMMAND_PATH)touch
--TR = $(UTILS_USR_BIN_PATH)tr
-+TR = $(UTILS_COMMAND_PATH)tr
+-TOUCH = $(UTILS_COMMAND_PATH)touch
++TOUCH = $(UTILS_USR_BIN_PATH)touch
+ TR = $(UTILS_USR_BIN_PATH)tr
TRUE = $(UTILS_COMMAND_PATH)true
UNAME = $(UTILS_COMMAND_PATH)uname
- UNIQ = $(UTILS_USR_BIN_PATH)uniq
-@@ -186,7 +186,7 @@
+@@ -176,7 +176,7 @@
# others have it in /usr/bin.
SORT=$(firstword $(wildcard $(UTILS_COMMAND_PATH)sort) \
$(wildcard $(UTILS_USR_BIN_PATH)sort))
diff --git a/extra/openjdk6/fix_jdk_cmds_path.diff b/extra/openjdk6/fix_jdk_cmds_path.diff
index 7e16e1744..bd37dd4ba 100644
--- a/extra/openjdk6/fix_jdk_cmds_path.diff
+++ b/extra/openjdk6/fix_jdk_cmds_path.diff
@@ -1,6 +1,6 @@
--- openjdk/jdk/make/common/shared/Defs-utils.gmk.old 2008-04-13 13:33:23.000000000 +0300
+++ openjdk/jdk/make/common/shared/Defs-utils.gmk 2008-04-14 15:37:34.000000000 +0300
-@@ -76,10 +76,10 @@
+@@ -89,7 +89,7 @@
CHMOD = $(UTILS_COMMAND_PATH)chmod
CMP = $(UTILS_USR_BIN_PATH)cmp
COMM = $(UTILS_USR_BIN_PATH)comm
@@ -8,21 +8,17 @@
+COMPRESS = $(UTILS_COMMAND_PATH)compress
CP = $(UTILS_COMMAND_PATH)cp
CPIO = $(UTILS_COMMAND_PATH)cpio
--CUT = $(UTILS_USR_BIN_PATH)cut
-+CUT = $(UTILS_COMMAND_PATH)cut
- DATE = $(UTILS_COMMAND_PATH)date
- DF = $(UTILS_COMMAND_PATH)df
- DIFF = $(UTILS_USR_BIN_PATH)diff
-@@ -126,7 +126,7 @@
+ CUT = $(UTILS_USR_BIN_PATH)cut
+@@ -137,7 +137,7 @@
+ TAIL = $(UTILS_USR_BIN_PATH)tail
TAR = $(UTILS_COMMAND_PATH)tar
TEST = $(UTILS_USR_BIN_PATH)test
- TOUCH = $(UTILS_COMMAND_PATH)touch
--TR = $(UTILS_USR_BIN_PATH)tr
-+TR = $(UTILS_COMMAND_PATH)tr
+-TOUCH = $(UTILS_COMMAND_PATH)touch
++TOUCH = $(UTILS_USR_BIN_PATH)touch
+ TR = $(UTILS_USR_BIN_PATH)tr
TRUE = $(UTILS_COMMAND_PATH)true
UNAME = $(UTILS_COMMAND_PATH)uname
- UNIQ = $(UTILS_USR_BIN_PATH)uniq
-@@ -173,7 +173,7 @@
+@@ -178,7 +178,7 @@
BASENAME=$(firstword $(wildcard $(UTILS_COMMAND_PATH)basename) \
$(wildcard $(UTILS_USR_BIN_PATH)basename))
diff --git a/extra/polkit/PKGBUILD b/extra/polkit/PKGBUILD
index 798244595..e86dbbc02 100644
--- a/extra/polkit/PKGBUILD
+++ b/extra/polkit/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 148549 2012-02-03 16:19:24Z ibiru $
+# $Id: PKGBUILD 158972 2012-05-13 21:06:37Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=polkit
-pkgver=0.104
+pkgver=0.105
pkgrel=1
pkgdesc="Application development toolkit for controlling system-wide privileges"
arch=(i686 x86_64)
@@ -12,17 +12,21 @@ depends=('glib2' 'pam' 'expat')
makedepends=('intltool' 'gtk-doc' 'gobject-introspection')
replaces=('policykit')
options=('!libtool')
-source=(http://hal.freedesktop.org/releases/$pkgname-$pkgver.tar.gz
+source=(http://www.freedesktop.org/software/polkit/releases/$pkgname-$pkgver.tar.gz
polkit.pam)
-md5sums=('e380b4c6fb1e7bccf854e92edc0a8ce1'
+md5sums=('9c29e1b6c214f0bd6f1d4ee303dfaed9'
'6564f95878297b954f0572bc1610dd15')
build() {
- cd "$srcdir/$pkgname-$pkgver"
+ cd $pkgname-$pkgver
./configure --prefix=/usr --sysconfdir=/etc \
--localstatedir=/var --libexecdir=/usr/lib/polkit-1 \
--disable-static --enable-gtk-doc
make
+}
+
+package() {
+ cd $pkgname-$pkgver
make DESTDIR="$pkgdir" install
install -m644 "$srcdir/polkit.pam" "$pkgdir/etc/pam.d/polkit-1"
diff --git a/extra/polkit/systemd-fallback.patch b/extra/polkit/systemd-fallback.patch
new file mode 100644
index 000000000..f89ce10ae
--- /dev/null
+++ b/extra/polkit/systemd-fallback.patch
@@ -0,0 +1,1571 @@
+diff -u -rN polkit-0.104/configure.ac polkit-0.104-systemd-fallback/configure.ac
+--- polkit-0.104/configure.ac 2012-01-03 17:25:49.000000000 +0100
++++ polkit-0.104-systemd-fallback/configure.ac 2012-03-06 15:45:55.275860194 +0100
+@@ -160,14 +160,14 @@
+ [enable_systemd=auto])
+ if test "$enable_systemd" != "no"; then
+ PKG_CHECK_MODULES(SYSTEMD,
+- [libsystemd-login],
++ [libsystemd-login libsystemd-daemon],
+ have_systemd=yes,
+ have_systemd=no)
+ if test "$have_systemd" = "yes"; then
+ SESSION_TRACKING=systemd
+ else
+ if test "$enable_systemd" = "yes"; then
+- AC_MSG_ERROR([systemd support requested but libsystemd-login1 library not found])
++ AC_MSG_ERROR([systemd support requested but systemd libraries not found])
+ fi
+ fi
+ fi
+diff -u -rN polkit-0.104/src/polkit/Makefile.am polkit-0.104-systemd-fallback/src/polkit/Makefile.am
+--- polkit-0.104/src/polkit/Makefile.am 2012-01-03 16:03:47.000000000 +0100
++++ polkit-0.104-systemd-fallback/src/polkit/Makefile.am 2012-03-06 15:19:25.108853325 +0100
+@@ -79,15 +79,8 @@
+ polkitimplicitauthorization.c polkitimplicitauthorization.h \
+ polkittemporaryauthorization.c polkittemporaryauthorization.h \
+ polkitpermission.c polkitpermission.h \
+- $(NULL)
+-
+-if HAVE_SYSTEMD
+-libpolkit_gobject_1_la_SOURCES += \
+- polkitunixsession-systemd.c polkitunixsession.h
+-else
+-libpolkit_gobject_1_la_SOURCES += \
+ polkitunixsession.c polkitunixsession.h
+-endif
++ $(NULL)
+
+ libpolkit_gobject_1_la_CFLAGS = \
+ -D_POLKIT_COMPILATION \
+diff -u -rN polkit-0.104/src/polkit/polkitunixsession.c polkit-0.104-systemd-fallback/src/polkit/polkitunixsession.c
+--- polkit-0.104/src/polkit/polkitunixsession.c 2011-10-18 19:02:27.000000000 +0200
++++ polkit-0.104-systemd-fallback/src/polkit/polkitunixsession.c 2012-03-06 15:17:29.829788021 +0100
+@@ -23,12 +23,18 @@
+ # include "config.h"
+ #endif
+
++#include <stdlib.h>
+ #include <string.h>
+ #include "polkitunixsession.h"
+ #include "polkitsubject.h"
+ #include "polkiterror.h"
+ #include "polkitprivate.h"
+
++#ifdef HAVE_SYSTEMD
++# include <systemd/sd-daemon.h>
++# include <systemd/sd-login.h>
++#endif
++
+ /**
+ * SECTION:polkitunixsession
+ * @title: PolkitUnixSession
+@@ -364,34 +370,44 @@
+ PolkitUnixSession *session = POLKIT_UNIX_SESSION (subject);
+ GDBusConnection *connection;
+ GVariant *result;
+- gboolean ret;
+-
+- ret = FALSE;
++ gboolean ret = FALSE;
+
+- connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, cancellable, error);
+- if (connection == NULL)
+- goto out;
+-
+- result = g_dbus_connection_call_sync (connection,
+- "org.freedesktop.ConsoleKit", /* name */
+- session->session_id, /* object path */
+- "org.freedesktop.ConsoleKit.Session", /* interface name */
+- "GetUser", /* method */
+- NULL, /* parameters */
+- G_VARIANT_TYPE ("(u)"),
+- G_DBUS_CALL_FLAGS_NONE,
+- -1,
+- cancellable,
+- error);
+- if (result == NULL)
+- goto out;
++#ifdef HAVE_SYSTEMD
++ uid_t uid;
++
++ if (sd_booted () > 0)
++ {
++ if (sd_session_get_uid (session->session_id, &uid) == 0)
++ ret = TRUE;
++ }
++ else
++#endif
++ {
++ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, cancellable, error);
++ if (connection == NULL)
++ goto out;
++
++ result = g_dbus_connection_call_sync (connection,
++ "org.freedesktop.ConsoleKit", /* name */
++ session->session_id, /* object path */
++ "org.freedesktop.ConsoleKit.Session", /* interface name */
++ "GetUser", /* method */
++ NULL, /* parameters */
++ G_VARIANT_TYPE ("(u)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ cancellable,
++ error);
++ if (result == NULL)
++ goto out;
+
+- ret = TRUE;
+- g_variant_unref (result);
++ ret = TRUE;
++ g_variant_unref (result);
+
+- out:
+- if (connection != NULL)
+- g_object_unref (connection);
++ out:
++ if (connection != NULL)
++ g_object_unref (connection);
++ }
+ return ret;
+ }
+
+@@ -470,12 +486,9 @@
+ GError **error)
+ {
+ PolkitUnixSession *session = POLKIT_UNIX_SESSION (initable);
+- GDBusConnection *connection;
++ GDBusConnection *connection = NULL;
+ GVariant *result;
+- gboolean ret;
+-
+- connection = NULL;
+- ret = FALSE;
++ gboolean ret = FALSE;
+
+ if (session->session_id != NULL)
+ {
+@@ -484,33 +497,56 @@
+ goto out;
+ }
+
+- connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, cancellable, error);
+- if (connection == NULL)
+- goto out;
++#ifdef HAVE_SYSTEMD
++ char *s;
++
++ if (sd_booted () > 0)
++ {
++ if (sd_pid_get_session (session->pid, &s) == 0)
++ {
++ session->session_id = g_strdup (s);
++ free (s);
++ ret = TRUE;
++ goto out;
++ }
++
++ g_set_error (error,
++ POLKIT_ERROR,
++ POLKIT_ERROR_FAILED,
++ "No session for pid %d",
++ (gint) session->pid);
++ }
++ else
++#endif
++ {
++ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, cancellable, error);
++ if (connection == NULL)
++ goto out;
++
++ result = g_dbus_connection_call_sync (connection,
++ "org.freedesktop.ConsoleKit", /* name */
++ "/org/freedesktop/ConsoleKit/Manager", /* object path */
++ "org.freedesktop.ConsoleKit.Manager", /* interface name */
++ "GetSessionForUnixProcess", /* method */
++ g_variant_new ("(u)", session->pid), /* parameters */
++ G_VARIANT_TYPE ("(o)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ cancellable,
++ error);
++ if (result == NULL)
++ goto out;
+
+- result = g_dbus_connection_call_sync (connection,
+- "org.freedesktop.ConsoleKit", /* name */
+- "/org/freedesktop/ConsoleKit/Manager", /* object path */
+- "org.freedesktop.ConsoleKit.Manager", /* interface name */
+- "GetSessionForUnixProcess", /* method */
+- g_variant_new ("(u)", session->pid), /* parameters */
+- G_VARIANT_TYPE ("(o)"),
+- G_DBUS_CALL_FLAGS_NONE,
+- -1,
+- cancellable,
+- error);
+- if (result == NULL)
+- goto out;
++ g_variant_get (result, "(o)", &session->session_id);
++ g_variant_unref (result);
+
+- g_variant_get (result, "(o)", &session->session_id);
+- g_variant_unref (result);
++ ret = TRUE;
++ }
+
+- ret = TRUE;
+
+ out:
+ if (connection != NULL)
+ g_object_unref (connection);
+-
+ return ret;
+ }
+
+diff -u -rN polkit-0.104/src/polkit/polkitunixsession-systemd.c polkit-0.104-systemd-fallback/src/polkit/polkitunixsession-systemd.c
+--- polkit-0.104/src/polkit/polkitunixsession-systemd.c 2012-01-03 16:03:47.000000000 +0100
++++ polkit-0.104-systemd-fallback/src/polkit/polkitunixsession-systemd.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,481 +0,0 @@
+-/*
+- * Copyright (C) 2011 Red Hat, Inc.
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Lesser General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library 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
+- * Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General
+- * Public License along with this library; if not, write to the
+- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+- * Boston, MA 02111-1307, USA.
+- *
+- * Author: Matthias Clasen
+- */
+-
+-#ifdef HAVE_CONFIG_H
+-# include "config.h"
+-#endif
+-
+-#include <string.h>
+-#include "polkitunixsession.h"
+-#include "polkitsubject.h"
+-#include "polkiterror.h"
+-#include "polkitprivate.h"
+-
+-#include <systemd/sd-login.h>
+-
+-/**
+- * SECTION:polkitunixsession
+- * @title: PolkitUnixSession
+- * @short_description: Unix sessions
+- *
+- * An object that represents an user session.
+- *
+- * The session id is an opaque string obtained from ConsoleKit.
+- */
+-
+-/**
+- * PolkitUnixSession:
+- *
+- * The #PolkitUnixSession struct should not be accessed directly.
+- */
+-struct _PolkitUnixSession
+-{
+- GObject parent_instance;
+-
+- gchar *session_id;
+-
+- gint pid;
+-};
+-
+-struct _PolkitUnixSessionClass
+-{
+- GObjectClass parent_class;
+-};
+-
+-enum
+-{
+- PROP_0,
+- PROP_SESSION_ID,
+- PROP_PID,
+-};
+-
+-static void subject_iface_init (PolkitSubjectIface *subject_iface);
+-static void initable_iface_init (GInitableIface *initable_iface);
+-static void async_initable_iface_init (GAsyncInitableIface *async_initable_iface);
+-
+-G_DEFINE_TYPE_WITH_CODE (PolkitUnixSession, polkit_unix_session, G_TYPE_OBJECT,
+- G_IMPLEMENT_INTERFACE (POLKIT_TYPE_SUBJECT, subject_iface_init)
+- G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init)
+- G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init)
+- );
+-
+-static void
+-polkit_unix_session_init (PolkitUnixSession *session)
+-{
+-}
+-
+-static void
+-polkit_unix_session_finalize (GObject *object)
+-{
+- PolkitUnixSession *session = POLKIT_UNIX_SESSION (object);
+-
+- g_free (session->session_id);
+-
+- if (G_OBJECT_CLASS (polkit_unix_session_parent_class)->finalize != NULL)
+- G_OBJECT_CLASS (polkit_unix_session_parent_class)->finalize (object);
+-}
+-
+-static void
+-polkit_unix_session_get_property (GObject *object,
+- guint prop_id,
+- GValue *value,
+- GParamSpec *pspec)
+-{
+- PolkitUnixSession *session = POLKIT_UNIX_SESSION (object);
+-
+- switch (prop_id)
+- {
+- case PROP_SESSION_ID:
+- g_value_set_string (value, session->session_id);
+- break;
+-
+- default:
+- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+- break;
+- }
+-}
+-
+-static void
+-polkit_unix_session_set_property (GObject *object,
+- guint prop_id,
+- const GValue *value,
+- GParamSpec *pspec)
+-{
+- PolkitUnixSession *session = POLKIT_UNIX_SESSION (object);
+-
+- switch (prop_id)
+- {
+- case PROP_SESSION_ID:
+- polkit_unix_session_set_session_id (session, g_value_get_string (value));
+- break;
+-
+- case PROP_PID:
+- session->pid = g_value_get_int (value);
+- break;
+-
+- default:
+- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+- break;
+- }
+-}
+-
+-static void
+-polkit_unix_session_class_init (PolkitUnixSessionClass *klass)
+-{
+- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+-
+- gobject_class->finalize = polkit_unix_session_finalize;
+- gobject_class->get_property = polkit_unix_session_get_property;
+- gobject_class->set_property = polkit_unix_session_set_property;
+-
+- /**
+- * PolkitUnixSession:session-id:
+- *
+- * The UNIX session id.
+- */
+- g_object_class_install_property (gobject_class,
+- PROP_SESSION_ID,
+- g_param_spec_string ("session-id",
+- "Session ID",
+- "The UNIX session ID",
+- NULL,
+- G_PARAM_CONSTRUCT |
+- G_PARAM_READWRITE |
+- G_PARAM_STATIC_NAME |
+- G_PARAM_STATIC_BLURB |
+- G_PARAM_STATIC_NICK));
+-
+-
+- /**
+- * PolkitUnixSession:pid:
+- *
+- * The UNIX process id to look up the session.
+- */
+- g_object_class_install_property (gobject_class,
+- PROP_PID,
+- g_param_spec_int ("pid",
+- "Process ID",
+- "Process ID to use for looking up the session",
+- 0,
+- G_MAXINT,
+- 0,
+- G_PARAM_CONSTRUCT_ONLY |
+- G_PARAM_WRITABLE |
+- G_PARAM_STATIC_NAME |
+- G_PARAM_STATIC_BLURB |
+- G_PARAM_STATIC_NICK));
+-
+-}
+-
+-/**
+- * polkit_unix_session_get_session_id:
+- * @session: A #PolkitUnixSession.
+- *
+- * Gets the session id for @session.
+- *
+- * Returns: The session id for @session. Do not free this string, it
+- * is owned by @session.
+- **/
+-const gchar *
+-polkit_unix_session_get_session_id (PolkitUnixSession *session)
+-{
+- g_return_val_if_fail (POLKIT_IS_UNIX_SESSION (session), NULL);
+- return session->session_id;
+-}
+-
+-/**
+- * polkit_unix_session_set_session_id:
+- * @session: A #PolkitUnixSession.
+- * @session_id: The session id.
+- *
+- * Sets the session id for @session to @session_id.
+- **/
+-void
+-polkit_unix_session_set_session_id (PolkitUnixSession *session,
+- const gchar *session_id)
+-{
+- g_return_if_fail (POLKIT_IS_UNIX_SESSION (session));
+- /*g_return_if_fail (session_id != NULL);*/
+- g_free (session->session_id);
+- session->session_id = g_strdup (session_id);
+-}
+-
+-/**
+- * polkit_unix_session_new:
+- * @session_id: The session id.
+- *
+- * Creates a new #PolkitUnixSession for @session_id.
+- *
+- * Returns: (transfer full): A #PolkitUnixSession. Free with g_object_unref().
+- **/
+-PolkitSubject *
+-polkit_unix_session_new (const gchar *session_id)
+-{
+- return POLKIT_SUBJECT (g_object_new (POLKIT_TYPE_UNIX_SESSION,
+- "session-id", session_id,
+- NULL));
+-}
+-
+-/**
+- * polkit_unix_session_new_for_process:
+- * @pid: The process id of the process to get the session for.
+- * @cancellable: (allow-none): A #GCancellable or %NULL.
+- * @callback: A #GAsyncReadyCallback to call when the request is satisfied
+- * @user_data: The data to pass to @callback.
+- *
+- * Asynchronously creates a new #PolkitUnixSession object for the
+- * process with process id @pid.
+- *
+- * When the operation is finished, @callback will be invoked in the
+- * <link linkend="g-main-context-push-thread-default">thread-default
+- * main loop</link> of the thread you are calling this method
+- * from. You can then call
+- * polkit_unix_session_new_for_process_finish() to get the result of
+- * the operation.
+- *
+- * This method constructs the object asynchronously, for the synchronous and blocking version
+- * use polkit_unix_session_new_for_process_sync().
+- **/
+-void
+-polkit_unix_session_new_for_process (gint pid,
+- GCancellable *cancellable,
+- GAsyncReadyCallback callback,
+- gpointer user_data)
+-{
+- g_async_initable_new_async (POLKIT_TYPE_UNIX_SESSION,
+- G_PRIORITY_DEFAULT,
+- cancellable,
+- callback,
+- user_data,
+- "pid", pid,
+- NULL);
+-}
+-
+-/**
+- * polkit_unix_session_new_for_process_finish:
+- * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to polkit_unix_session_new_for_process().
+- * @error: (allow-none): Return location for error.
+- *
+- * Finishes constructing a #PolkitSubject for a process id.
+- *
+- * Returns: (transfer full) (allow-none): A #PolkitUnixSession for the @pid passed to
+- * polkit_unix_session_new_for_process() or %NULL if @error is
+- * set. Free with g_object_unref().
+- **/
+-PolkitSubject *
+-polkit_unix_session_new_for_process_finish (GAsyncResult *res,
+- GError **error)
+-{
+- GObject *object;
+- GObject *source_object;
+-
+- source_object = g_async_result_get_source_object (res);
+- g_assert (source_object != NULL);
+-
+- object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object),
+- res,
+- error);
+- g_object_unref (source_object);
+-
+- if (object != NULL)
+- return POLKIT_SUBJECT (object);
+- else
+- return NULL;
+-}
+-
+-
+-/**
+- * polkit_unix_session_new_for_process_sync:
+- * @pid: The process id of the process to get the session for.
+- * @cancellable: (allow-none): A #GCancellable or %NULL.
+- * @error: (allow-none): Return location for error.
+- *
+- * Creates a new #PolkitUnixSession for the process with process id @pid.
+- *
+- * This is a synchronous call - the calling thread is blocked until a
+- * reply is received. For the asynchronous version, see
+- * polkit_unix_session_new_for_process().
+- *
+- * Returns: (allow-none) (transfer full): A #PolkitUnixSession for
+- * @pid or %NULL if @error is set. Free with g_object_unref().
+- **/
+-PolkitSubject *
+-polkit_unix_session_new_for_process_sync (gint pid,
+- GCancellable *cancellable,
+- GError **error)
+-{
+- return POLKIT_SUBJECT (g_initable_new (POLKIT_TYPE_UNIX_SESSION,
+- cancellable,
+- error,
+- "pid", pid,
+- NULL));
+-}
+-
+-static guint
+-polkit_unix_session_hash (PolkitSubject *subject)
+-{
+- PolkitUnixSession *session = POLKIT_UNIX_SESSION (subject);
+-
+- return g_str_hash (session->session_id);
+-}
+-
+-static gboolean
+-polkit_unix_session_equal (PolkitSubject *a,
+- PolkitSubject *b)
+-{
+- PolkitUnixSession *session_a;
+- PolkitUnixSession *session_b;
+-
+- session_a = POLKIT_UNIX_SESSION (a);
+- session_b = POLKIT_UNIX_SESSION (b);
+-
+- return g_strcmp0 (session_a->session_id, session_b->session_id) == 0;
+-}
+-
+-static gchar *
+-polkit_unix_session_to_string (PolkitSubject *subject)
+-{
+- PolkitUnixSession *session = POLKIT_UNIX_SESSION (subject);
+-
+- return g_strdup_printf ("unix-session:%s", session->session_id);
+-}
+-
+-static gboolean
+-polkit_unix_session_exists_sync (PolkitSubject *subject,
+- GCancellable *cancellable,
+- GError **error)
+-{
+- PolkitUnixSession *session = POLKIT_UNIX_SESSION (subject);
+- gboolean ret;
+- uid_t uid;
+-
+- ret = FALSE;
+-
+- if (!sd_session_get_uid (session->session_id, &uid))
+- ret = FALSE;
+-
+- return ret;
+-}
+-
+-static void
+-exists_in_thread_func (GSimpleAsyncResult *res,
+- GObject *object,
+- GCancellable *cancellable)
+-{
+- GError *error;
+- error = NULL;
+- if (!polkit_unix_session_exists_sync (POLKIT_SUBJECT (object),
+- cancellable,
+- &error))
+- {
+- g_simple_async_result_set_from_error (res, error);
+- g_error_free (error);
+- }
+-}
+-
+-static void
+-polkit_unix_session_exists (PolkitSubject *subject,
+- GCancellable *cancellable,
+- GAsyncReadyCallback callback,
+- gpointer user_data)
+-{
+- GSimpleAsyncResult *simple;
+-
+- g_return_if_fail (POLKIT_IS_UNIX_SESSION (subject));
+-
+- simple = g_simple_async_result_new (G_OBJECT (subject),
+- callback,
+- user_data,
+- polkit_unix_session_exists);
+- g_simple_async_result_run_in_thread (simple,
+- exists_in_thread_func,
+- G_PRIORITY_DEFAULT,
+- cancellable);
+- g_object_unref (simple);
+-}
+-
+-static gboolean
+-polkit_unix_session_exists_finish (PolkitSubject *subject,
+- GAsyncResult *res,
+- GError **error)
+-{
+- GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res);
+- gboolean ret;
+-
+- g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == polkit_unix_session_exists);
+-
+- ret = FALSE;
+-
+- if (g_simple_async_result_propagate_error (simple, error))
+- goto out;
+-
+- ret = g_simple_async_result_get_op_res_gboolean (simple);
+-
+- out:
+- return ret;
+-}
+-
+-static void
+-subject_iface_init (PolkitSubjectIface *subject_iface)
+-{
+- subject_iface->hash = polkit_unix_session_hash;
+- subject_iface->equal = polkit_unix_session_equal;
+- subject_iface->to_string = polkit_unix_session_to_string;
+- subject_iface->exists = polkit_unix_session_exists;
+- subject_iface->exists_finish = polkit_unix_session_exists_finish;
+- subject_iface->exists_sync = polkit_unix_session_exists_sync;
+-}
+-
+-static gboolean
+-polkit_unix_session_initable_init (GInitable *initable,
+- GCancellable *cancellable,
+- GError **error)
+-{
+- PolkitUnixSession *session = POLKIT_UNIX_SESSION (initable);
+- gboolean ret;
+-
+- ret = FALSE;
+-
+- if (session->session_id != NULL)
+- {
+- /* already set, nothing to do */
+- ret = TRUE;
+- goto out;
+- }
+-
+- if (!sd_pid_get_session (session->pid, &session->session_id))
+- ret = TRUE;
+-
+-out:
+- return ret;
+-}
+-
+-static void
+-initable_iface_init (GInitableIface *initable_iface)
+-{
+- initable_iface->init = polkit_unix_session_initable_init;
+-}
+-
+-static void
+-async_initable_iface_init (GAsyncInitableIface *async_initable_iface)
+-{
+- /* use default implementation to run GInitable code in a thread */
+-}
+diff -u -rN polkit-0.104/src/polkitbackend/Makefile.am polkit-0.104-systemd-fallback/src/polkitbackend/Makefile.am
+--- polkit-0.104/src/polkitbackend/Makefile.am 2012-01-03 16:03:47.000000000 +0100
++++ polkit-0.104-systemd-fallback/src/polkitbackend/Makefile.am 2012-03-06 15:44:15.380014886 +0100
+@@ -41,15 +41,8 @@
+ polkitbackendconfigsource.h polkitbackendconfigsource.c \
+ polkitbackendactionlookup.h polkitbackendactionlookup.c \
+ polkitbackendlocalauthorizationstore.h polkitbackendlocalauthorizationstore.c \
+- $(NULL)
+-
+-if HAVE_SYSTEMD
+-libpolkit_backend_1_la_SOURCES += \
+- polkitbackendsessionmonitor.h polkitbackendsessionmonitor-systemd.c
+-else
+-libpolkit_backend_1_la_SOURCES += \
+ polkitbackendsessionmonitor.h polkitbackendsessionmonitor.c
+-endif
++ $(NULL)
+
+ libpolkit_backend_1_la_CFLAGS = \
+ -D_POLKIT_COMPILATION \
+diff -u -rN polkit-0.104/src/polkitbackend/polkitbackendsessionmonitor.c polkit-0.104-systemd-fallback/src/polkitbackend/polkitbackendsessionmonitor.c
+--- polkit-0.104/src/polkitbackend/polkitbackendsessionmonitor.c 2011-10-18 19:02:27.000000000 +0200
++++ polkit-0.104-systemd-fallback/src/polkitbackend/polkitbackendsessionmonitor.c 2012-03-06 15:43:49.353562242 +0100
+@@ -26,6 +26,12 @@
+ #include <string.h>
+ #include <glib/gstdio.h>
+
++#ifdef HAVE_SYSTEMD
++# include <systemd/sd-daemon.h>
++# include <systemd/sd-login.h>
++# include <stdlib.h>
++#endif
++
+ #include <polkit/polkit.h>
+ #include "polkitbackendsessionmonitor.h"
+
+@@ -39,6 +45,88 @@
+ * The #PolkitBackendSessionMonitor class is a utility class to track and monitor sessions.
+ */
+
++#ifdef HAVE_SYSTEMD
++typedef struct
++{
++ GSource source;
++ GPollFD pollfd;
++ sd_login_monitor *monitor;
++} SdSource;
++
++static gboolean
++sd_source_prepare (GSource *source,
++ gint *timeout)
++{
++ *timeout = -1;
++ return FALSE;
++}
++
++static gboolean
++sd_source_check (GSource *source)
++{
++ SdSource *sd_source = (SdSource *)source;
++
++ return sd_source->pollfd.revents != 0;
++}
++
++static gboolean
++sd_source_dispatch (GSource *source,
++ GSourceFunc callback,
++ gpointer user_data)
++
++{
++ SdSource *sd_source = (SdSource *)source;
++ gboolean ret;
++
++ g_warn_if_fail (callback != NULL);
++
++ ret = (*callback) (user_data);
++
++ sd_login_monitor_flush (sd_source->monitor);
++
++ return ret;
++}
++
++static void
++sd_source_finalize (GSource *source)
++{
++ SdSource *sd_source = (SdSource*)source;
++
++ sd_login_monitor_unref (sd_source->monitor);
++}
++
++static GSourceFuncs sd_source_funcs = {
++ sd_source_prepare,
++ sd_source_check,
++ sd_source_dispatch,
++ sd_source_finalize
++};
++
++static GSource *
++sd_source_new (void)
++{
++ GSource *source;
++ SdSource *sd_source;
++ int ret;
++
++ source = g_source_new (&sd_source_funcs, sizeof (SdSource));
++ sd_source = (SdSource *)source;
++
++ if ((ret = sd_login_monitor_new (NULL, &sd_source->monitor)) < 0)
++ {
++ g_printerr ("Error getting login monitor: %d", ret);
++ }
++ else
++ {
++ sd_source->pollfd.fd = sd_login_monitor_get_fd (sd_source->monitor);
++ sd_source->pollfd.events = G_IO_IN;
++ g_source_add_poll (source, &sd_source->pollfd);
++ }
++
++ return source;
++}
++#endif /* HAVE_SYSTEMD */
++
+ struct _PolkitBackendSessionMonitor
+ {
+ GObject parent_instance;
+@@ -48,6 +136,10 @@
+ GKeyFile *database;
+ GFileMonitor *database_monitor;
+ time_t database_mtime;
++
++#ifdef HAVE_SYSTEMD
++ GSource *sd_source;
++#endif
+ };
+
+ struct _PolkitBackendSessionMonitorClass
+@@ -162,6 +254,18 @@
+ g_signal_emit (monitor, signals[CHANGED_SIGNAL], 0);
+ }
+
++#ifdef HAVE_SYSTEMD
++static gboolean
++sessions_changed (gpointer user_data)
++{
++ PolkitBackendSessionMonitor *monitor = POLKIT_BACKEND_SESSION_MONITOR (user_data);
++
++ g_signal_emit (monitor, signals[CHANGED_SIGNAL], 0);
++
++ return TRUE;
++}
++#endif
++
+ static void
+ polkit_backend_session_monitor_init (PolkitBackendSessionMonitor *monitor)
+ {
+@@ -176,31 +280,47 @@
+ g_error_free (error);
+ }
+
+- error = NULL;
+- if (!ensure_database (monitor, &error))
+- {
+- g_printerr ("Error loading " CKDB_PATH ": %s", error->message);
+- g_error_free (error);
+- }
++#ifdef HAVE_SYSTEMD
++ monitor->sd_source = NULL;
++
++ if (sd_booted () > 0)
++ {
++ monitor->sd_source = sd_source_new ();
++ g_source_set_callback (monitor->sd_source, sessions_changed, monitor, NULL);
++ g_source_attach (monitor->sd_source, NULL);
+
+- error = NULL;
+- file = g_file_new_for_path (CKDB_PATH);
+- monitor->database_monitor = g_file_monitor_file (file,
+- G_FILE_MONITOR_NONE,
+- NULL,
+- &error);
+- g_object_unref (file);
+- if (monitor->database_monitor == NULL)
+- {
+- g_printerr ("Error monitoring " CKDB_PATH ": %s", error->message);
+- g_error_free (error);
++ monitor->database = NULL;
++ monitor->database_monitor = NULL;
+ }
+ else
++#endif
+ {
+- g_signal_connect (monitor->database_monitor,
+- "changed",
+- G_CALLBACK (on_file_monitor_changed),
+- monitor);
++ error = NULL;
++ if (!ensure_database (monitor, &error))
++ {
++ g_printerr ("Error loading " CKDB_PATH ": %s", error->message);
++ g_error_free (error);
++ }
++
++ error = NULL;
++ file = g_file_new_for_path (CKDB_PATH);
++ monitor->database_monitor = g_file_monitor_file (file,
++ G_FILE_MONITOR_NONE,
++ NULL,
++ &error);
++ g_object_unref (file);
++ if (monitor->database_monitor == NULL)
++ {
++ g_printerr ("Error monitoring " CKDB_PATH ": %s", error->message);
++ g_error_free (error);
++ }
++ else
++ {
++ g_signal_connect (monitor->database_monitor,
++ "changed",
++ G_CALLBACK (on_file_monitor_changed),
++ monitor);
++ }
+ }
+ }
+
+@@ -212,6 +332,14 @@
+ if (monitor->system_bus != NULL)
+ g_object_unref (monitor->system_bus);
+
++#ifdef HAVE_SYSTEMD
++ if (monitor->sd_source != NULL)
++ {
++ g_source_destroy (monitor->sd_source);
++ g_source_unref (monitor->sd_source);
++ }
++#endif
++
+ if (monitor->database_monitor != NULL)
+ g_object_unref (monitor->database_monitor);
+
+@@ -328,22 +456,38 @@
+ }
+ else if (POLKIT_IS_UNIX_SESSION (subject))
+ {
+- if (!ensure_database (monitor, error))
++#ifdef HAVE_SYSTEMD
++ if (monitor->sd_source != NULL)
+ {
+- g_prefix_error (error, "Error getting user for session: Error ensuring CK database at " CKDB_PATH ": ");
+- goto out;
++ if (sd_session_get_uid (polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (subject)), &uid) < 0)
++ {
++ g_set_error (error,
++ POLKIT_ERROR,
++ POLKIT_ERROR_FAILED,
++ "Error getting uid for session");
++ goto out;
++ }
+ }
+-
+- group = g_strdup_printf ("Session %s", polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (subject)));
+- local_error = NULL;
+- uid = g_key_file_get_integer (monitor->database, group, "uid", &local_error);
+- if (local_error != NULL)
++ else
++#endif
+ {
+- g_propagate_prefixed_error (error, local_error, "Error getting uid using " CKDB_PATH ": ");
++ if (!ensure_database (monitor, error))
++ {
++ g_prefix_error (error, "Error getting user for session: Error ensuring CK database at " CKDB_PATH ": ");
++ goto out;
++ }
++
++ group = g_strdup_printf ("Session %s", polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (subject)));
++ local_error = NULL;
++ uid = g_key_file_get_integer (monitor->database, group, "uid", &local_error);
++ if (local_error != NULL)
++ {
++ g_propagate_prefixed_error (error, local_error, "Error getting uid using " CKDB_PATH ": ");
++ g_free (group);
++ goto out;
++ }
+ g_free (group);
+- goto out;
+ }
+- g_free (group);
+
+ ret = polkit_unix_user_new (uid);
+ }
+@@ -373,29 +517,46 @@
+
+ if (POLKIT_IS_UNIX_PROCESS (subject))
+ {
+- const gchar *session_id;
+- GVariant *result;
+- result = g_dbus_connection_call_sync (monitor->system_bus,
+- "org.freedesktop.ConsoleKit",
+- "/org/freedesktop/ConsoleKit/Manager",
+- "org.freedesktop.ConsoleKit.Manager",
+- "GetSessionForUnixProcess",
+- g_variant_new ("(u)", polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (subject))),
+- G_VARIANT_TYPE ("(o)"),
+- G_DBUS_CALL_FLAGS_NONE,
+- -1, /* timeout_msec */
+- NULL, /* GCancellable */
+- error);
+- if (result == NULL)
+- goto out;
+- g_variant_get (result, "(&o)", &session_id);
+- session = polkit_unix_session_new (session_id);
+- g_variant_unref (result);
++#ifdef HAVE_SYSTEMD
++ if (monitor->sd_source != NULL)
++ {
++ gchar *session_id;
++ pid_t pid;
++
++ pid = polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (subject));
++ if (sd_pid_get_session (pid, &session_id) < 0)
++ goto out;
++
++ session = polkit_unix_session_new (session_id);
++ free (session_id);
++ }
++ else
++#endif
++ {
++ const gchar *session_id;
++ GVariant *result;
++ result = g_dbus_connection_call_sync (monitor->system_bus,
++ "org.freedesktop.ConsoleKit",
++ "/org/freedesktop/ConsoleKit/Manager",
++ "org.freedesktop.ConsoleKit.Manager",
++ "GetSessionForUnixProcess",
++ g_variant_new ("(u)", polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (subject))),
++ G_VARIANT_TYPE ("(o)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1, /* timeout_msec */
++ NULL, /* GCancellable */
++ error);
++ if (result == NULL)
++ goto out;
++ g_variant_get (result, "(&o)", &session_id);
++ session = polkit_unix_session_new (session_id);
++ g_variant_unref (result);
++ }
+ }
+ else if (POLKIT_IS_SYSTEM_BUS_NAME (subject))
+ {
+ guint32 pid;
+- const gchar *session_id;
++ gchar *session_id;
+ GVariant *result;
+
+ result = g_dbus_connection_call_sync (monitor->system_bus,
+@@ -414,22 +575,35 @@
+ g_variant_get (result, "(u)", &pid);
+ g_variant_unref (result);
+
+- result = g_dbus_connection_call_sync (monitor->system_bus,
+- "org.freedesktop.ConsoleKit",
+- "/org/freedesktop/ConsoleKit/Manager",
+- "org.freedesktop.ConsoleKit.Manager",
+- "GetSessionForUnixProcess",
+- g_variant_new ("(u)", pid),
+- G_VARIANT_TYPE ("(o)"),
+- G_DBUS_CALL_FLAGS_NONE,
+- -1, /* timeout_msec */
+- NULL, /* GCancellable */
+- error);
+- if (result == NULL)
+- goto out;
+- g_variant_get (result, "(&o)", &session_id);
+- session = polkit_unix_session_new (session_id);
+- g_variant_unref (result);
++#ifdef HAVE_SYSTEMD
++ if (monitor->sd_source != NULL)
++ {
++ if (sd_pid_get_session (pid, &session_id) < 0)
++ goto out;
++
++ session = polkit_unix_session_new (session_id);
++ free (session_id);
++ }
++ else
++#endif
++ {
++ result = g_dbus_connection_call_sync (monitor->system_bus,
++ "org.freedesktop.ConsoleKit",
++ "/org/freedesktop/ConsoleKit/Manager",
++ "org.freedesktop.ConsoleKit.Manager",
++ "GetSessionForUnixProcess",
++ g_variant_new ("(u)", pid),
++ G_VARIANT_TYPE ("(o)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1, /* timeout_msec */
++ NULL, /* GCancellable */
++ error);
++ if (result == NULL)
++ goto out;
++ g_variant_get (result, "(&o)", &session_id);
++ session = polkit_unix_session_new (session_id);
++ g_variant_unref (result);
++ }
+ }
+ else
+ {
+@@ -490,7 +664,22 @@
+ polkit_backend_session_monitor_is_session_local (PolkitBackendSessionMonitor *monitor,
+ PolkitSubject *session)
+ {
+- return get_boolean (monitor, session, "is_local");
++#ifdef HAVE_SYSTEMD
++ if (monitor->sd_source != NULL)
++ {
++ char *seat;
++
++ if (!sd_session_get_seat (polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (session)), &seat))
++ {
++ free (seat);
++ return TRUE;
++ }
++
++ return FALSE;
++ }
++ else
++#endif
++ return get_boolean (monitor, session, "is_local");
+ }
+
+
+@@ -498,6 +687,11 @@
+ polkit_backend_session_monitor_is_session_active (PolkitBackendSessionMonitor *monitor,
+ PolkitSubject *session)
+ {
+- return get_boolean (monitor, session, "is_active");
++#ifdef HAVE_SYSTEMD
++ if (monitor->sd_source != NULL)
++ return sd_session_is_active (polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (session)));
++ else
++#endif
++ return get_boolean (monitor, session, "is_active");
+ }
+
+diff -u -rN polkit-0.104/src/polkitbackend/polkitbackendsessionmonitor-systemd.c polkit-0.104-systemd-fallback/src/polkitbackend/polkitbackendsessionmonitor-systemd.c
+--- polkit-0.104/src/polkitbackend/polkitbackendsessionmonitor-systemd.c 2012-01-03 16:03:47.000000000 +0100
++++ polkit-0.104-systemd-fallback/src/polkitbackend/polkitbackendsessionmonitor-systemd.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,414 +0,0 @@
+-/*
+- * Copyright (C) 2011 Red Hat, Inc.
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Lesser General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library 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
+- * Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General
+- * Public License along with this library; if not, write to the
+- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+- * Boston, MA 02111-1307, USA.
+- *
+- * Author: Matthias Clasen
+- */
+-
+-#include "config.h"
+-#include <errno.h>
+-#include <pwd.h>
+-#include <grp.h>
+-#include <string.h>
+-#include <glib/gstdio.h>
+-#include <systemd/sd-login.h>
+-#include <stdlib.h>
+-
+-#include <polkit/polkit.h>
+-#include "polkitbackendsessionmonitor.h"
+-
+-/* <internal>
+- * SECTION:polkitbackendsessionmonitor
+- * @title: PolkitBackendSessionMonitor
+- * @short_description: Monitor sessions
+- *
+- * The #PolkitBackendSessionMonitor class is a utility class to track and monitor sessions.
+- */
+-
+-typedef struct
+-{
+- GSource source;
+- GPollFD pollfd;
+- sd_login_monitor *monitor;
+-} SdSource;
+-
+-static gboolean
+-sd_source_prepare (GSource *source,
+- gint *timeout)
+-{
+- *timeout = -1;
+- return FALSE;
+-}
+-
+-static gboolean
+-sd_source_check (GSource *source)
+-{
+- SdSource *sd_source = (SdSource *)source;
+-
+- return sd_source->pollfd.revents != 0;
+-}
+-
+-static gboolean
+-sd_source_dispatch (GSource *source,
+- GSourceFunc callback,
+- gpointer user_data)
+-
+-{
+- SdSource *sd_source = (SdSource *)source;
+- gboolean ret;
+-
+- g_warn_if_fail (callback != NULL);
+-
+- ret = (*callback) (user_data);
+-
+- sd_login_monitor_flush (sd_source->monitor);
+-
+- return ret;
+-}
+-
+-static void
+-sd_source_finalize (GSource *source)
+-{
+- SdSource *sd_source = (SdSource*)source;
+-
+- sd_login_monitor_unref (sd_source->monitor);
+-}
+-
+-static GSourceFuncs sd_source_funcs = {
+- sd_source_prepare,
+- sd_source_check,
+- sd_source_dispatch,
+- sd_source_finalize
+-};
+-
+-static GSource *
+-sd_source_new (void)
+-{
+- GSource *source;
+- SdSource *sd_source;
+- int ret;
+-
+- source = g_source_new (&sd_source_funcs, sizeof (SdSource));
+- sd_source = (SdSource *)source;
+-
+- if ((ret = sd_login_monitor_new (NULL, &sd_source->monitor)) < 0)
+- {
+- g_printerr ("Error getting login monitor: %d", ret);
+- }
+- else
+- {
+- sd_source->pollfd.fd = sd_login_monitor_get_fd (sd_source->monitor);
+- sd_source->pollfd.events = G_IO_IN;
+- g_source_add_poll (source, &sd_source->pollfd);
+- }
+-
+- return source;
+-}
+-
+-struct _PolkitBackendSessionMonitor
+-{
+- GObject parent_instance;
+-
+- GDBusConnection *system_bus;
+-
+- GSource *sd_source;
+-};
+-
+-struct _PolkitBackendSessionMonitorClass
+-{
+- GObjectClass parent_class;
+-
+- void (*changed) (PolkitBackendSessionMonitor *monitor);
+-};
+-
+-
+-enum
+-{
+- CHANGED_SIGNAL,
+- LAST_SIGNAL,
+-};
+-
+-static guint signals[LAST_SIGNAL] = {0};
+-
+-G_DEFINE_TYPE (PolkitBackendSessionMonitor, polkit_backend_session_monitor, G_TYPE_OBJECT);
+-
+-/* ---------------------------------------------------------------------------------------------------- */
+-
+-static gboolean
+-sessions_changed (gpointer user_data)
+-{
+- PolkitBackendSessionMonitor *monitor = POLKIT_BACKEND_SESSION_MONITOR (user_data);
+-
+- g_signal_emit (monitor, signals[CHANGED_SIGNAL], 0);
+-
+- return TRUE;
+-}
+-
+-
+-static void
+-polkit_backend_session_monitor_init (PolkitBackendSessionMonitor *monitor)
+-{
+- GError *error;
+-
+- error = NULL;
+- monitor->system_bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
+- if (monitor->system_bus == NULL)
+- {
+- g_printerr ("Error getting system bus: %s", error->message);
+- g_error_free (error);
+- }
+-
+- monitor->sd_source = sd_source_new ();
+- g_source_set_callback (monitor->sd_source, sessions_changed, monitor, NULL);
+- g_source_attach (monitor->sd_source, NULL);
+-}
+-
+-static void
+-polkit_backend_session_monitor_finalize (GObject *object)
+-{
+- PolkitBackendSessionMonitor *monitor = POLKIT_BACKEND_SESSION_MONITOR (object);
+-
+- if (monitor->system_bus != NULL)
+- g_object_unref (monitor->system_bus);
+-
+- if (monitor->sd_source != NULL)
+- {
+- g_source_destroy (monitor->sd_source);
+- g_source_unref (monitor->sd_source);
+- }
+-
+- if (G_OBJECT_CLASS (polkit_backend_session_monitor_parent_class)->finalize != NULL)
+- G_OBJECT_CLASS (polkit_backend_session_monitor_parent_class)->finalize (object);
+-}
+-
+-static void
+-polkit_backend_session_monitor_class_init (PolkitBackendSessionMonitorClass *klass)
+-{
+- GObjectClass *gobject_class;
+-
+- gobject_class = G_OBJECT_CLASS (klass);
+-
+- gobject_class->finalize = polkit_backend_session_monitor_finalize;
+-
+- /**
+- * PolkitBackendSessionMonitor::changed:
+- * @monitor: A #PolkitBackendSessionMonitor
+- *
+- * Emitted when something changes.
+- */
+- signals[CHANGED_SIGNAL] = g_signal_new ("changed",
+- POLKIT_BACKEND_TYPE_SESSION_MONITOR,
+- G_SIGNAL_RUN_LAST,
+- G_STRUCT_OFFSET (PolkitBackendSessionMonitorClass, changed),
+- NULL, /* accumulator */
+- NULL, /* accumulator data */
+- g_cclosure_marshal_VOID__VOID,
+- G_TYPE_NONE,
+- 0);
+-}
+-
+-PolkitBackendSessionMonitor *
+-polkit_backend_session_monitor_new (void)
+-{
+- PolkitBackendSessionMonitor *monitor;
+-
+- monitor = POLKIT_BACKEND_SESSION_MONITOR (g_object_new (POLKIT_BACKEND_TYPE_SESSION_MONITOR, NULL));
+-
+- return monitor;
+-}
+-
+-/* ---------------------------------------------------------------------------------------------------- */
+-
+-GList *
+-polkit_backend_session_monitor_get_sessions (PolkitBackendSessionMonitor *monitor)
+-{
+- /* TODO */
+- return NULL;
+-}
+-
+-/* ---------------------------------------------------------------------------------------------------- */
+-
+-/**
+- * polkit_backend_session_monitor_get_user:
+- * @monitor: A #PolkitBackendSessionMonitor.
+- * @subject: A #PolkitSubject.
+- * @error: Return location for error.
+- *
+- * Gets the user corresponding to @subject or %NULL if no user exists.
+- *
+- * Returns: %NULL if @error is set otherwise a #PolkitUnixUser that should be freed with g_object_unref().
+- */
+-PolkitIdentity *
+-polkit_backend_session_monitor_get_user_for_subject (PolkitBackendSessionMonitor *monitor,
+- PolkitSubject *subject,
+- GError **error)
+-{
+- PolkitIdentity *ret;
+- guint32 uid;
+-
+- ret = NULL;
+-
+- if (POLKIT_IS_UNIX_PROCESS (subject))
+- {
+- uid = polkit_unix_process_get_uid (POLKIT_UNIX_PROCESS (subject));
+- if ((gint) uid == -1)
+- {
+- g_set_error (error,
+- POLKIT_ERROR,
+- POLKIT_ERROR_FAILED,
+- "Unix process subject does not have uid set");
+- goto out;
+- }
+- ret = polkit_unix_user_new (uid);
+- }
+- else if (POLKIT_IS_SYSTEM_BUS_NAME (subject))
+- {
+- GVariant *result;
+-
+- result = g_dbus_connection_call_sync (monitor->system_bus,
+- "org.freedesktop.DBus",
+- "/org/freedesktop/DBus",
+- "org.freedesktop.DBus",
+- "GetConnectionUnixUser",
+- g_variant_new ("(s)", polkit_system_bus_name_get_name (POLKIT_SYSTEM_BUS_NAME (subject))),
+- G_VARIANT_TYPE ("(u)"),
+- G_DBUS_CALL_FLAGS_NONE,
+- -1, /* timeout_msec */
+- NULL, /* GCancellable */
+- error);
+- if (result == NULL)
+- goto out;
+- g_variant_get (result, "(u)", &uid);
+- g_variant_unref (result);
+-
+- ret = polkit_unix_user_new (uid);
+- }
+- else if (POLKIT_IS_UNIX_SESSION (subject))
+- {
+-
+- if (sd_session_get_uid (polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (subject)), &uid) < 0)
+- {
+- g_set_error (error,
+- POLKIT_ERROR,
+- POLKIT_ERROR_FAILED,
+- "Error getting uid for session");
+- goto out;
+- }
+-
+- ret = polkit_unix_user_new (uid);
+- }
+-
+- out:
+- return ret;
+-}
+-
+-/**
+- * polkit_backend_session_monitor_get_session_for_subject:
+- * @monitor: A #PolkitBackendSessionMonitor.
+- * @subject: A #PolkitSubject.
+- * @error: Return location for error.
+- *
+- * Gets the session corresponding to @subject or %NULL if no session exists.
+- *
+- * Returns: %NULL if @error is set otherwise a #PolkitUnixSession that should be freed with g_object_unref().
+- */
+-PolkitSubject *
+-polkit_backend_session_monitor_get_session_for_subject (PolkitBackendSessionMonitor *monitor,
+- PolkitSubject *subject,
+- GError **error)
+-{
+- PolkitSubject *session;
+-
+- session = NULL;
+-
+- if (POLKIT_IS_UNIX_PROCESS (subject))
+- {
+- gchar *session_id;
+- pid_t pid;
+-
+- pid = polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (subject));
+- if (sd_pid_get_session (pid, &session_id) < 0)
+- goto out;
+-
+- session = polkit_unix_session_new (session_id);
+- free (session_id);
+- }
+- else if (POLKIT_IS_SYSTEM_BUS_NAME (subject))
+- {
+- guint32 pid;
+- gchar *session_id;
+- GVariant *result;
+-
+- result = g_dbus_connection_call_sync (monitor->system_bus,
+- "org.freedesktop.DBus",
+- "/org/freedesktop/DBus",
+- "org.freedesktop.DBus",
+- "GetConnectionUnixProcessID",
+- g_variant_new ("(s)", polkit_system_bus_name_get_name (POLKIT_SYSTEM_BUS_NAME (subject))),
+- G_VARIANT_TYPE ("(u)"),
+- G_DBUS_CALL_FLAGS_NONE,
+- -1, /* timeout_msec */
+- NULL, /* GCancellable */
+- error);
+- if (result == NULL)
+- goto out;
+- g_variant_get (result, "(u)", &pid);
+- g_variant_unref (result);
+-
+- if (sd_pid_get_session (pid, &session_id) < 0)
+- goto out;
+-
+- session = polkit_unix_session_new (session_id);
+- free (session_id);
+- }
+- else
+- {
+- g_set_error (error,
+- POLKIT_ERROR,
+- POLKIT_ERROR_NOT_SUPPORTED,
+- "Cannot get user for subject of type %s",
+- g_type_name (G_TYPE_FROM_INSTANCE (subject)));
+- }
+-
+- out:
+-
+- return session;
+-}
+-
+-gboolean
+-polkit_backend_session_monitor_is_session_local (PolkitBackendSessionMonitor *monitor,
+- PolkitSubject *session)
+-{
+- char *seat;
+-
+- if (!sd_session_get_seat (polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (session)), &seat))
+- {
+- free (seat);
+- return TRUE;
+- }
+-
+- return FALSE;
+-}
+-
+-
+-gboolean
+-polkit_backend_session_monitor_is_session_active (PolkitBackendSessionMonitor *monitor,
+- PolkitSubject *session)
+-{
+- return sd_session_is_active (polkit_unix_session_get_session_id (POLKIT_UNIX_SESSION (session)));
+-}
+-
diff --git a/extra/poppler/PKGBUILD b/extra/poppler/PKGBUILD
index f8fa182f3..6ecf34a2a 100644
--- a/extra/poppler/PKGBUILD
+++ b/extra/poppler/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 153271 2012-03-12 19:10:06Z jgc $
+# $Id: PKGBUILD 158944 2012-05-13 14:56:03Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgbase=poppler
pkgname=('poppler' 'poppler-glib' 'poppler-qt')
pkgver=0.18.4
-pkgrel=1
+pkgrel=2
arch=(i686 x86_64)
license=('GPL')
makedepends=('libjpeg' 'gcc-libs' 'cairo' 'fontconfig' 'openjpeg' 'gtk2' 'qt' 'pkgconfig' 'lcms' 'gobject-introspection')
diff --git a/extra/vim/PKGBUILD b/extra/vim/PKGBUILD
index a429579a1..f60db7804 100644
--- a/extra/vim/PKGBUILD
+++ b/extra/vim/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 157798 2012-04-29 16:19:15Z tdziedzic $
+# $Id: PKGBUILD 158968 2012-05-13 20:52:23Z tdziedzic $
# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
# Maintainer: tobias [ tobias at archlinux org ]
# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
@@ -6,20 +6,23 @@
pkgbase=vim
pkgname=('vim' 'gvim' 'vim-runtime')
_topver=7.3
-_patchlevel=495
-__hgrev=a104dae7f903
+_patchlevel=515
+__hgrev=8201108e9cf0
_versiondir="vim${_topver//./}"
pkgver=${_topver}.${_patchlevel}
-pkgrel=3
+pkgrel=1
arch=('i686' 'x86_64')
license=('custom:vim')
url="http://www.vim.org"
makedepends=('gpm' 'python2' 'ruby' 'libxt' 'desktop-file-utils' 'gtk2' 'lua')
-source=(ftp://ftp.archlinux.org/other/vim/${pkgname}-${pkgver}.tar.xz{,.sig}
- pythoncomplete.vim::http://www.vim.org/scripts/download_script.php\?src_id=10872
- vimrc archlinux.vim gvim.desktop)
-sha1sums=('4181e211d0150cda9b3dbd815ec4aa14a6d28196'
- '039f92d62556a7ccc48ef4ded3c5e02578470b05'
+source=("ftp://ftp.archlinux.org/other/vim/vim-${pkgver}.tar.xz"
+ "ftp://ftp.archlinux.org/other/vim/vim-${pkgver}.tar.xz.sig"
+ 'pythoncomplete.vim::http://www.vim.org/scripts/download_script.php?src_id=10872'
+ 'vimrc'
+ 'archlinux.vim'
+ 'gvim.desktop')
+sha1sums=('10d7642d5062effdb51f53952622f9338003bbbf'
+ '0c1c584c1a2a2a279507f793cd5eff82863c625b'
'4d9dcfb32874aa5467e6f06e418aeb4e675daaf2'
'3494baf53a63581ba69f86a81293640ff681c5c5'
'25dd3c2ce436e73a367c8f73b68f7f6889682437'
@@ -48,11 +51,12 @@ mksource() {
rm ${pkgname}-${pkgver}/{.hgignore,.hgtags}
tar -cJf ${pkgname}-${pkgver}.tar.xz ${pkgname}-${pkgver}/*
rm -r ${pkgname}-${pkgver}
-# gpg --detach-sign --use-agent -u ${GPGKEY} ${pkgname}-${pkgver}.tar.xz
+ #gpg --detach-sign --use-agent -u ${GPGKEY} ${pkgname}-${pkgver}.tar.xz
}
build() {
# remove -O2 because there is a crash with python because of it
+ # fedora br: https://bugzilla.redhat.com/show_bug.cgi?id=817196
export CFLAGS="${CFLAGS/-O2 /}"
cd "${srcdir}"
diff --git a/extra/watchdog/PKGBUILD b/extra/watchdog/PKGBUILD
index cb4c36d88..4c45af820 100644
--- a/extra/watchdog/PKGBUILD
+++ b/extra/watchdog/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 141081 2011-10-23 14:16:24Z thomas $
+# $Id: PKGBUILD 158941 2012-05-13 14:21:11Z thomas $
# Maintainer: Thomas Bächler <thomas@archlinux.org>
pkgname=watchdog
-pkgver=5.9
-pkgrel=2
+pkgver=5.12
+pkgrel=1
pkgdesc="Watchdog daemon"
arch=(i686 x86_64)
url="http://sourceforge.net/projects/watchdog"
@@ -15,16 +15,16 @@ backup=(etc/watchdog.conf
source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz
watchdog.sh
watchdog.cf
- watchdog-5.9-use-oom_score_adj.patch)
-md5sums=('d7cae3c9829f5d9a680764f314234867'
+ watchdog-5.12-fix-oom-in-wd_keepalive.patch)
+md5sums=('cea28bea70e54f3625062bc808aef9af'
'854451f554718b55186599faaa8d85f6'
'01c1e2e13f515131180b4ebe9b8b7cc3'
- '9a1ab454e42a7f2969ef6bf2da8a4543')
+ 'c90c2686975b5254f82b3de683f1f442')
build() {
cd "${srcdir}"/${pkgname}-${pkgver}
- patch -p1 -i "${srcdir}"/watchdog-5.9-use-oom_score_adj.patch
+ patch -p1 -i "${srcdir}"/watchdog-5.12-fix-oom-in-wd_keepalive.patch
./configure \
--prefix=/usr \
--mandir=/usr/share/man \
diff --git a/extra/watchdog/watchdog-5.12-fix-oom-in-wd_keepalive.patch b/extra/watchdog/watchdog-5.12-fix-oom-in-wd_keepalive.patch
new file mode 100644
index 000000000..dfc06b867
--- /dev/null
+++ b/extra/watchdog/watchdog-5.12-fix-oom-in-wd_keepalive.patch
@@ -0,0 +1,11 @@
+diff -Nur watchdog-5.12.orig/src/wd_keepalive.c watchdog-5.12/src/wd_keepalive.c
+--- watchdog-5.12.orig/src/wd_keepalive.c 2012-04-05 12:16:33.000000000 +0200
++++ watchdog-5.12/src/wd_keepalive.c 2012-05-13 16:15:36.786543263 +0200
+@@ -26,6 +26,7 @@
+ #include <sys/mman.h>
+ #include <sys/ioctl.h>
+ #include <sys/wait.h>
++#include <linux/oom.h>
+ #include <linux/watchdog.h>
+ #include <libgen.h>
+ #include <string.h>
diff --git a/extra/xf86-video-intel/PKGBUILD b/extra/xf86-video-intel/PKGBUILD
index ad44b5329..b0459b075 100644
--- a/extra/xf86-video-intel/PKGBUILD
+++ b/extra/xf86-video-intel/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 156183 2012-04-15 12:22:45Z jgc $
+# $Id: PKGBUILD 158952 2012-05-13 15:44:53Z andyrtr $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-intel
-pkgver=2.18.0
-pkgrel=3
+pkgver=2.19.0
+pkgrel=1
pkgdesc="X.org Intel i810/i830/i915/945G/G965+ video drivers"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
@@ -13,26 +13,11 @@ makedepends=('xorg-server-devel>=1.12.0' 'libx11' 'libdrm' 'xf86driproto' 'glpro
conflicts=('xorg-server<1.12.0' 'xf86-video-i810' 'xf86-video-intel-legacy')
options=('!libtool')
groups=('xorg-drivers' 'xorg')
-source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
- 0001-uxa-gen3-Remove-special-casing-of-solid-pictures.patch
- 0002-uxa-Defer-the-call-to-EnterVT-till-after-outputs-are.patch
- 0003-uxa-Remove-hook-for-CompositeRectangles.patch
- 0004-uxa-Remove-broken-render-glyphs-to-dst.patch
- 0005-uxa-Fix-leak-of-glyph-mask-for-unhandled-glyph-compo.patch)
-sha1sums=('77fae98e73414140bf214dca5da32bcf079c4463'
- '8b46a5120c8c0b94fcd75801e5ce91d6baccd1ac'
- 'd959c66ab40f521bfe4df66b6f43c98b13f59283'
- '5525715f1bbf80edfc34d55946b0528f6b8dbf75'
- '3e54a4b3911e004d29b6a8e07adb7c16eba5bc4f'
- '32e2e5a53926ce29290bf6454e7dcdbd18e91d5e')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('131934cf5e90bd48c883804cc644c4cb8b1de100')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
- patch -Np1 -i "${srcdir}/0001-uxa-gen3-Remove-special-casing-of-solid-pictures.patch"
- patch -Np1 -i "${srcdir}/0002-uxa-Defer-the-call-to-EnterVT-till-after-outputs-are.patch"
- patch -Np1 -i "${srcdir}/0003-uxa-Remove-hook-for-CompositeRectangles.patch"
- patch -Np1 -i "${srcdir}/0004-uxa-Remove-broken-render-glyphs-to-dst.patch"
- patch -Np1 -i "${srcdir}/0005-uxa-Fix-leak-of-glyph-mask-for-unhandled-glyph-compo.patch"
./configure --prefix=/usr --enable-dri
make
}
diff --git a/extra/xf86-video-nouveau/PKGBUILD b/extra/xf86-video-nouveau/PKGBUILD
index 048771a53..8e2dffd5d 100644
--- a/extra/xf86-video-nouveau/PKGBUILD
+++ b/extra/xf86-video-nouveau/PKGBUILD
@@ -1,23 +1,23 @@
-# $Id: PKGBUILD 153350 2012-03-12 20:53:45Z andyrtr $
+# $Id: PKGBUILD 158956 2012-05-13 15:53:05Z ibiru $
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
# Contributor: buddabrod <buddabrod@gmail.com>
pkgname=xf86-video-nouveau
-_gitdate=20120210
+_gitdate=20120512
pkgver=0.0.16_git${_gitdate} # see configure.ac
pkgrel=1
pkgdesc="Open Source 3D acceleration driver for nVidia cards (experimental)"
arch=('i686' 'x86_64')
url="http://nouveau.freedesktop.org/wiki/"
license=('GPL') #and MIT, not yet a license file, see http://nouveau.freedesktop.org/wiki/FAQ#head-09f75d03eb30011c754038a3893119a70745de4e
-depends=('libdrm' 'udev')
-optdepends=('nouveau-dri: experimental gallium3d features')
-makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto')
+depends=('libdrm-nouveau' 'udev')
+optdepends=('nouveau-dri: experimental gallium3d features')
+makedepends=('xorg-server-devel' 'libdrm-new' 'xf86driproto')
conflicts=('xorg-server<1.11.99.902')
options=('!libtool')
install=$pkgname.install
source=(ftp://ftp.archlinux.org/other/$pkgname/xf86-video-nouveau-${_gitdate}.tar.bz2)
-md5sums=('f35c12d64542d0ea792a9e5af63a2e5a')
+md5sums=('3e27e283219936d64c194eca24cd81cd')
# source PKGBUILD && mksource
mksource() {
diff --git a/extra/xf86-video-s3virge/PKGBUILD b/extra/xf86-video-s3virge/PKGBUILD
index d49bde15d..31239166c 100644
--- a/extra/xf86-video-s3virge/PKGBUILD
+++ b/extra/xf86-video-s3virge/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 155419 2012-04-03 11:32:17Z jgc $
+# $Id: PKGBUILD 158928 2012-05-13 11:52:51Z andyrtr $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Alexander Baldeck <alexander@archlinux.org>
pkgname=xf86-video-s3virge
-pkgver=1.10.4
-pkgrel=8
+pkgver=1.10.5
+pkgrel=1
pkgdesc="X.org S3 Virge video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
@@ -14,15 +14,15 @@ makedepends=('pkgconfig' 'xorg-server-devel>=1.12.0')
conflicts=('xorg-server<1.12.0')
options=(!libtool)
groups=('xorg-drivers' 'xorg')
-source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
- git-fixes.patch)
-md5sums=('6517bbbf808c700502d51acdc44662f8'
- '2dba8e574d08c71c9f748ff341358050')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+ #git-fixes.patch)
+sha1sums=('ca8aa877ae118b017d5b06951bc1c3b7690ba709')
+
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
- patch -Np1 -i "${srcdir}/git-fixes.patch"
- autoreconf -fi
+ #patch -Np1 -i "${srcdir}/git-fixes.patch"
+ #autoreconf -fi
./configure --prefix=/usr
make
}
diff --git a/extra/xterm/PKGBUILD b/extra/xterm/PKGBUILD
index d9a74afbd..95fd807dc 100644
--- a/extra/xterm/PKGBUILD
+++ b/extra/xterm/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 147119 2012-01-22 10:53:02Z andyrtr $
+# $Id: PKGBUILD 158920 2012-05-13 08:00:04Z andyrtr $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Alexander Baldeck <alexander@archlinux.org>
pkgname=xterm
-pkgver=278
+pkgver=279
pkgrel=1
pkgdesc="X Terminal Emulator"
arch=('i686' 'x86_64')
@@ -12,7 +12,7 @@ license=('custom')
depends=('libxft' 'libxaw' 'ncurses' 'xorg-luit' 'xbitmaps')
source=(ftp://invisible-island.net/${pkgname}/${pkgname}-${pkgver}.tgz
LICENSE)
-md5sums=('3eeddfe35cb0a2db1924cfe0c20be443'
+md5sums=('42a76a871c1d640719702801a0795d72'
'10ecc3f8ee91e3189863a172f68282d2')
build() {
@@ -55,4 +55,6 @@ package() {
install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
install -m644 "${srcdir}/LICENSE" \
"${pkgdir}/usr/share/licenses/${pkgname}/"
+ install -m755 -d ${pkgdir}/usr/share/applications
+ install -m644 ${srcdir}/${pkgname}-${pkgver}/{xterm,uxterm}.desktop ${pkgdir}/usr/share/applications/
}
diff --git a/multilib/lib32-atk/PKGBUILD b/multilib/lib32-atk/PKGBUILD
index 89fdf434c..eacc6e69e 100644
--- a/multilib/lib32-atk/PKGBUILD
+++ b/multilib/lib32-atk/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 56310 2011-10-05 14:32:13Z bluewind $
+# $Id: PKGBUILD 70627 2012-05-13 11:29:51Z bluewind $
# Contributor: Pierre Schmitz <pierre@archlinux.de>
# Maintainer: Mikko Seppälä <t-r-a-y@mbnet.fi>
_pkgbasename=atk
pkgname=lib32-$_pkgbasename
-pkgver=2.2.0
+pkgver=2.4.0
pkgrel=1
pkgdesc="A library providing a set of interfaces for accessibility (32-bit)"
arch=('x86_64')
@@ -13,7 +13,7 @@ makedepends=('gcc-multilib')
options=('!libtool')
source=(http://ftp.gnome.org/pub/gnome/sources/${_pkgbasename}/${pkgver%.*}/${_pkgbasename}-${pkgver}.tar.xz)
url='http://www.gtk.org/'
-sha256sums=('8b22f0e7803dd3734c676ccd68ea999ff1156ca49d99c3de5c1d269ad0c3739d')
+sha256sums=('091e9ce975a9fbbc7cd8fa64c9c389ffb7fa6cdde58b6d5c01b2c267093d888d')
build() {
export CC="gcc -m32"
diff --git a/multilib/lib32-openssl/PKGBUILD b/multilib/lib32-openssl/PKGBUILD
index f813ecd25..0d40ef4e2 100644
--- a/multilib/lib32-openssl/PKGBUILD
+++ b/multilib/lib32-openssl/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 69916 2012-04-26 15:22:19Z pschmitz $
+# $Id: PKGBUILD 70629 2012-05-13 11:43:00Z bluewind $
# Maintainer: Pierre Schmitz <pierre@archlinux.de>
_pkgbasename=openssl
pkgname=lib32-$_pkgbasename
-_ver=1.0.1b
+_ver=1.0.1c
# use a pacman compatible version scheme
pkgver=${_ver/[a-z]/.${_ver//[0-9.]/}}
#pkgver=$_ver
@@ -20,8 +20,8 @@ source=("https://www.openssl.org/source/${_pkgbasename}-${_ver}.tar.gz"
"https://www.openssl.org/source/${_pkgbasename}-${_ver}.tar.gz.asc"
'no-rpath.patch'
'ca-dir.patch')
-md5sums=('a1da58ce63baef3812004714fa302c47'
- 'ca6bcd8641957df69c6c0bb4b93785aa'
+md5sums=('ae412727c8c15b67880aef7bd2999b2e'
+ 'a3d90bc42253def61cd1c4237f1ce5f7'
'dc78d3d06baffc16217519242ce92478'
'3bf51be3a1bbd262be46dc619f92aa90')
diff --git a/staging/cups-filters/PKGBUILD b/staging/cups-filters/PKGBUILD
new file mode 100644
index 000000000..62cbe9a91
--- /dev/null
+++ b/staging/cups-filters/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 158958 2012-05-13 16:11:10Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
+pkgname=cups-filters
+pkgver=1.0.17
+pkgrel=2
+pkgdesc="OpenPrinting CUPS Filters"
+arch=('i686' 'x86_64')
+url="http://www.linuxfoundation.org/collaborate/workgroups/openprinting"
+license=('GPL')
+groups=()
+depends=('ghostscript' 'lcms2' 'poppler') # bc ? https://bugs.archlinux.org/task/29808
+makedepends=()
+optdepends=()
+provides=()
+conflicts=()
+replaces=()
+backup=()
+#options=(!makeflags)
+install=
+source=(http://www.openprinting.org/download/cups-filters/$pkgname-$pkgver.tar.gz)
+md5sums=('5132b018cc503e9338fbd029acf56e55')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc
+ make
+}
+
+#check() {
+# cd "$srcdir/$pkgname-$pkgver"
+# make -k check
+#}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ #make DESTDIR="$pkgdir/" install
+ make install BUILDROOT="$pkgdir/"
+ # drop static lib
+ rm -f ${pkgdir}/usr/lib/*.a
+}
diff --git a/staging/inkscape/PKGBUILD b/staging/inkscape/PKGBUILD
new file mode 100644
index 000000000..fbecbdc23
--- /dev/null
+++ b/staging/inkscape/PKGBUILD
@@ -0,0 +1,59 @@
+# $Id: PKGBUILD 158964 2012-05-13 20:05:21Z bisson $
+# Contributor: tobias <tobias@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=inkscape
+pkgver=0.48.3.1
+pkgrel=3
+pkgdesc='Vector graphics editor using the SVG file format'
+url='http://inkscape.sourceforge.net/'
+license=('GPL' 'LGPL')
+arch=('i686' 'x86_64')
+makedepends=('boost' 'intltool')
+depends=('gc' 'gsl' 'gtkmm' 'gtkspell' 'imagemagick' 'libxslt' 'poppler-glib' 'popt'
+ 'python2' 'desktop-file-utils' 'hicolor-icon-theme')
+optdepends=('pstoedit: latex formulas'
+ 'texlive-core: latex formulas'
+ 'python2-numpy: some extensions'
+ 'python2-lxml: some extensions and filters'
+ 'pyxml: some extensions'
+ 'uniconvertor: reading/writing to some proprietary formats')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/project/${pkgname}/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.gz"
+ 'poppler20.patch'
+ 'libpng15.patch')
+sha1sums=('9a09a97d184e09c2ee7f9956bfe073b7313e919e'
+ '7316c2903c157781838cce289a709d100dc40fec'
+ 'd6512f3cb38ca8e2436dc485aa652490d17b3a52')
+
+install=install
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sed -i 's|/usr/bin/python\>|/usr/bin/python2|g' cxxtest/*.py
+ sed -i 's|/usr/bin/env python\>|/usr/bin/env python2|g' share/*/{test/,}*.py
+ sed -i 's|"python" },|"python2" },|g' src/extension/implementation/script.cpp
+ sed -i 's|python -c|python2 -c|g' configure share/extensions/uniconv*.py
+ sed -i 's|"python"|"python2"|g' src/main.cpp
+
+ patch -p1 -i ../poppler20.patch
+ patch -p1 -i ../libpng15.patch
+
+ ./configure \
+ --prefix=/usr \
+ --with-python \
+ --with-perl \
+ --enable-lcms \
+ --enable-poppler-cairo \
+ --disable-dependency-tracking \
+
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/staging/inkscape/install b/staging/inkscape/install
new file mode 100644
index 000000000..6e803bf1d
--- /dev/null
+++ b/staging/inkscape/install
@@ -0,0 +1,13 @@
+post_install() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install
+}
+
+
+post_remove() {
+ post_install
+}
diff --git a/staging/inkscape/libpng15.patch b/staging/inkscape/libpng15.patch
new file mode 100644
index 000000000..e24913ed6
--- /dev/null
+++ b/staging/inkscape/libpng15.patch
@@ -0,0 +1,40 @@
+--- inkscape-0.48.1/src/extension/internal/pdfinput/svg-builder.cpp
++++ inkscape-0.48.1-mod//src/extension/internal/pdfinput/svg-builder.cpp
+@@ -1443,7 +1443,7 @@
+ return NULL;
+ }
+ // Set error handler
+- if (setjmp(png_ptr->jmpbuf)) {
++ if (setjmp(png_jmpbuf(png_ptr))) {
+ png_destroy_write_struct(&png_ptr, &info_ptr);
+ return NULL;
+ }
+--- inkscape-0.48.1/src/helper/png-write.cpp
++++ inkscape-0.48.1-mod//src/helper/png-write.cpp
+@@ -165,7 +165,7 @@
+ /* Set error handling. REQUIRED if you aren't supplying your own
+ * error hadnling functions in the png_create_write_struct() call.
+ */
+- if (setjmp(png_ptr->jmpbuf)) {
++ if (setjmp(png_jmpbuf(png_ptr))) {
+ /* If we get here, we had a problem reading the file */
+ fclose(fp);
+ png_destroy_write_struct(&png_ptr, &info_ptr);
+--- inkscape-0.48.1/src/sp-image.cpp
++++ inkscape-0.48.1-mod//src/sp-image.cpp
+@@ -386,9 +386,13 @@
+
+ #if defined(PNG_iCCP_SUPPORTED)
+ {
+- char* name = 0;
++ png_charp name = 0;
+ int compression_type = 0;
+- char* profile = 0;
++#if (PNG_LIBPNG_VER < 10500)
++ png_charp profile = 0;
++#else
++ png_bytep profile = 0;
++#endif
+ png_uint_32 proflen = 0;
+ if ( png_get_iCCP(pngPtr, infoPtr, &name, &compression_type, &profile, &proflen) ) {
+ // g_message("Found an iCCP chunk named [%s] with %d bytes and comp %d", name, proflen, compression_type);
diff --git a/staging/inkscape/poppler20.patch b/staging/inkscape/poppler20.patch
new file mode 100644
index 000000000..ecb74603f
--- /dev/null
+++ b/staging/inkscape/poppler20.patch
@@ -0,0 +1,642 @@
+diff -Naur old/src/extension/internal/pdfinput/pdf-parser.cpp new/src/extension/internal/pdfinput/pdf-parser.cpp
+--- old/src/extension/internal/pdfinput/pdf-parser.cpp 2011-07-08 20:25:09.468790000 +0200
++++ new/src/extension/internal/pdfinput/pdf-parser.cpp 2012-05-13 21:07:11.334781215 +0200
+@@ -367,14 +367,14 @@
+ for (i = 0; i < obj->arrayGetLength(); ++i) {
+ obj->arrayGet(i, &obj2);
+ if (!obj2.isStream()) {
+- error(-1, const_cast<char*>("Weird page contents"));
++ error(errInternal, -1, const_cast<char*>("Weird page contents"));
+ obj2.free();
+ return;
+ }
+ obj2.free();
+ }
+ } else if (!obj->isStream()) {
+- error(-1, const_cast<char*>("Weird page contents"));
++ error(errInternal, -1, const_cast<char*>("Weird page contents"));
+ return;
+ }
+ parser = new Parser(xref, new Lexer(xref, obj), gFalse);
+@@ -419,7 +419,7 @@
+
+ // too many arguments - something is wrong
+ } else {
+- error(getPos(), const_cast<char*>("Too many args in content stream"));
++ error(errInternal, getPos(), const_cast<char*>("Too many args in content stream"));
+ if (printCommands) {
+ printf("throwing away arg: ");
+ obj.print(stdout);
+@@ -436,7 +436,7 @@
+
+ // args at end with no command
+ if (numArgs > 0) {
+- error(getPos(), const_cast<char*>("Leftover args in content stream"));
++ error(errInternal, getPos(), const_cast<char*>("Leftover args in content stream"));
+ if (printCommands) {
+ printf("%d leftovers:", numArgs);
+ for (i = 0; i < numArgs; ++i) {
+@@ -502,7 +502,7 @@
+ name = cmd->getCmd();
+ if (!(op = findOp(name))) {
+ if (ignoreUndef == 0)
+- error(getPos(), const_cast<char*>("Unknown operator '%s'"), name);
++ error(errInternal, getPos(), const_cast<char*>("Unknown operator '%s'"), name);
+ return;
+ }
+
+@@ -510,26 +510,26 @@
+ argPtr = args;
+ if (op->numArgs >= 0) {
+ if (numArgs < op->numArgs) {
+- error(getPos(), const_cast<char*>("Too few (%d) args to '%s' operator"), numArgs, name);
++ error(errInternal, getPos(), const_cast<char*>("Too few (%d) args to '%s' operator"), numArgs, name);
+ return;
+ }
+ if (numArgs > op->numArgs) {
+ #if 0
+- error(getPos(), "Too many (%d) args to '%s' operator", numArgs, name);
++ error(errInternal, getPos(), "Too many (%d) args to '%s' operator", numArgs, name);
+ #endif
+ argPtr += numArgs - op->numArgs;
+ numArgs = op->numArgs;
+ }
+ } else {
+ if (numArgs > -op->numArgs) {
+- error(getPos(), const_cast<char*>("Too many (%d) args to '%s' operator"),
++ error(errInternal, getPos(), const_cast<char*>("Too many (%d) args to '%s' operator"),
+ numArgs, name);
+ return;
+ }
+ }
+ for (i = 0; i < numArgs; ++i) {
+ if (!checkArg(&argPtr[i], op->tchk[i])) {
+- error(getPos(), const_cast<char*>("Arg #%d to '%s' operator is wrong type (%s)"),
++ error(errInternal, getPos(), const_cast<char*>("Arg #%d to '%s' operator is wrong type (%s)"),
+ i, name, argPtr[i].getTypeName());
+ return;
+ }
+@@ -690,7 +690,7 @@
+ return;
+ }
+ if (!obj1.isDict()) {
+- error(getPos(), const_cast<char*>("ExtGState '%s' is wrong type"), args[0].getName());
++ error(errInternal, getPos(), const_cast<char*>("ExtGState '%s' is wrong type"), args[0].getName());
+ obj1.free();
+ return;
+ }
+@@ -705,7 +705,7 @@
+ if (state->parseBlendMode(&obj2, &mode)) {
+ state->setBlendMode(mode);
+ } else {
+- error(getPos(), const_cast<char*>("Invalid blend mode in ExtGState"));
++ error(errInternal, getPos(), const_cast<char*>("Invalid blend mode in ExtGState"));
+ }
+ }
+ obj2.free();
+@@ -764,7 +764,7 @@
+ state->setTransfer(funcs);
+ }
+ } else if (!obj2.isNull()) {
+- error(getPos(), const_cast<char*>("Invalid transfer function in ExtGState"));
++ error(errInternal, getPos(), const_cast<char*>("Invalid transfer function in ExtGState"));
+ }
+ obj2.free();
+
+@@ -784,7 +784,7 @@
+ funcs[0] = Function::parse(&obj3);
+ if (funcs[0]->getInputSize() != 1 ||
+ funcs[0]->getOutputSize() != 1) {
+- error(getPos(),
++ error(errInternal, getPos(),
+ const_cast<char*>("Invalid transfer function in soft mask in ExtGState"));
+ delete funcs[0];
+ funcs[0] = NULL;
+@@ -809,11 +809,7 @@
+ blendingColorSpace = NULL;
+ isolated = knockout = gFalse;
+ if (!obj4.dictLookup(const_cast<char*>("CS"), &obj5)->isNull()) {
+-#ifdef POPPLER_NEW_COLOR_SPACE_API
+ blendingColorSpace = GfxColorSpace::parse(&obj5, NULL);
+-#else
+- blendingColorSpace = GfxColorSpace::parse(&obj5);
+-#endif
+ }
+ obj5.free();
+ if (obj4.dictLookup(const_cast<char*>("I"), &obj5)->isBool()) {
+@@ -840,15 +836,15 @@
+ delete funcs[0];
+ }
+ } else {
+- error(getPos(), const_cast<char*>("Invalid soft mask in ExtGState - missing group"));
++ error(errInternal, getPos(), const_cast<char*>("Invalid soft mask in ExtGState - missing group"));
+ }
+ obj4.free();
+ } else {
+- error(getPos(), const_cast<char*>("Invalid soft mask in ExtGState - missing group"));
++ error(errInternal, getPos(), const_cast<char*>("Invalid soft mask in ExtGState - missing group"));
+ }
+ obj3.free();
+ } else if (!obj2.isNull()) {
+- error(getPos(), const_cast<char*>("Invalid soft mask in ExtGState"));
++ error(errInternal, getPos(), const_cast<char*>("Invalid soft mask in ExtGState"));
+ }
+ }
+ obj2.free();
+@@ -876,7 +872,7 @@
+ // check form type
+ dict->lookup(const_cast<char*>("FormType"), &obj1);
+ if (!(obj1.isNull() || (obj1.isInt() && obj1.getInt() == 1))) {
+- error(getPos(), const_cast<char*>("Unknown form type"));
++ error(errInternal, getPos(), const_cast<char*>("Unknown form type"));
+ }
+ obj1.free();
+
+@@ -884,7 +880,7 @@
+ dict->lookup(const_cast<char*>("BBox"), &obj1);
+ if (!obj1.isArray()) {
+ obj1.free();
+- error(getPos(), const_cast<char*>("Bad form bounding box"));
++ error(errInternal, getPos(), const_cast<char*>("Bad form bounding box"));
+ return;
+ }
+ for (i = 0; i < 4; ++i) {
+@@ -1012,19 +1008,11 @@
+
+ state->setFillPattern(NULL);
+ res->lookupColorSpace(args[0].getName(), &obj);
+-#ifdef POPPLER_NEW_COLOR_SPACE_API
+ if (obj.isNull()) {
+ colorSpace = GfxColorSpace::parse(&args[0], NULL);
+ } else {
+ colorSpace = GfxColorSpace::parse(&obj, NULL);
+ }
+-#else
+- if (obj.isNull()) {
+- colorSpace = GfxColorSpace::parse(&args[0]);
+- } else {
+- colorSpace = GfxColorSpace::parse(&obj);
+- }
+-#endif
+ obj.free();
+ if (colorSpace) {
+ state->setFillColorSpace(colorSpace);
+@@ -1032,7 +1020,7 @@
+ state->setFillColor(&color);
+ builder->updateStyle(state);
+ } else {
+- error(getPos(), const_cast<char*>("Bad color space (fill)"));
++ error(errInternal, getPos(), const_cast<char*>("Bad color space (fill)"));
+ }
+ }
+
+@@ -1043,19 +1031,11 @@
+
+ state->setStrokePattern(NULL);
+ res->lookupColorSpace(args[0].getName(), &obj);
+-#ifdef POPPLER_NEW_COLOR_SPACE_API
+ if (obj.isNull()) {
+ colorSpace = GfxColorSpace::parse(&args[0], NULL);
+ } else {
+ colorSpace = GfxColorSpace::parse(&obj, NULL);
+ }
+-#else
+- if (obj.isNull()) {
+- colorSpace = GfxColorSpace::parse(&args[0]);
+- } else {
+- colorSpace = GfxColorSpace::parse(&obj);
+- }
+-#endif
+ obj.free();
+ if (colorSpace) {
+ state->setStrokeColorSpace(colorSpace);
+@@ -1063,7 +1043,7 @@
+ state->setStrokeColor(&color);
+ builder->updateStyle(state);
+ } else {
+- error(getPos(), const_cast<char*>("Bad color space (stroke)"));
++ error(errInternal, getPos(), const_cast<char*>("Bad color space (stroke)"));
+ }
+ }
+
+@@ -1072,7 +1052,7 @@
+ int i;
+
+ if (numArgs != state->getFillColorSpace()->getNComps()) {
+- error(getPos(), const_cast<char*>("Incorrect number of arguments in 'sc' command"));
++ error(errInternal, getPos(), const_cast<char*>("Incorrect number of arguments in 'sc' command"));
+ return;
+ }
+ state->setFillPattern(NULL);
+@@ -1088,7 +1068,7 @@
+ int i;
+
+ if (numArgs != state->getStrokeColorSpace()->getNComps()) {
+- error(getPos(), const_cast<char*>("Incorrect number of arguments in 'SC' command"));
++ error(errInternal, getPos(), const_cast<char*>("Incorrect number of arguments in 'SC' command"));
+ return;
+ }
+ state->setStrokePattern(NULL);
+@@ -1109,7 +1089,7 @@
+ if (!((GfxPatternColorSpace *)state->getFillColorSpace())->getUnder() ||
+ numArgs - 1 != ((GfxPatternColorSpace *)state->getFillColorSpace())
+ ->getUnder()->getNComps()) {
+- error(getPos(), const_cast<char*>("Incorrect number of arguments in 'scn' command"));
++ error(errInternal, getPos(), const_cast<char*>("Incorrect number of arguments in 'scn' command"));
+ return;
+ }
+ for (i = 0; i < numArgs - 1 && i < gfxColorMaxComps; ++i) {
+@@ -1120,23 +1100,15 @@
+ state->setFillColor(&color);
+ builder->updateStyle(state);
+ }
+-#ifdef POPPLER_NEW_COLOR_SPACE_API
+ if (args[numArgs-1].isName() &&
+ (pattern = res->lookupPattern(args[numArgs-1].getName(), NULL))) {
+ state->setFillPattern(pattern);
+ builder->updateStyle(state);
+ }
+-#else
+- if (args[numArgs-1].isName() &&
+- (pattern = res->lookupPattern(args[numArgs-1].getName()))) {
+- state->setFillPattern(pattern);
+- builder->updateStyle(state);
+- }
+-#endif
+
+ } else {
+ if (numArgs != state->getFillColorSpace()->getNComps()) {
+- error(getPos(), const_cast<char*>("Incorrect number of arguments in 'scn' command"));
++ error(errInternal, getPos(), const_cast<char*>("Incorrect number of arguments in 'scn' command"));
+ return;
+ }
+ state->setFillPattern(NULL);
+@@ -1161,7 +1133,7 @@
+ ->getUnder() ||
+ numArgs - 1 != ((GfxPatternColorSpace *)state->getStrokeColorSpace())
+ ->getUnder()->getNComps()) {
+- error(getPos(), const_cast<char*>("Incorrect number of arguments in 'SCN' command"));
++ error(errInternal, getPos(), const_cast<char*>("Incorrect number of arguments in 'SCN' command"));
+ return;
+ }
+ for (i = 0; i < numArgs - 1 && i < gfxColorMaxComps; ++i) {
+@@ -1172,23 +1144,15 @@
+ state->setStrokeColor(&color);
+ builder->updateStyle(state);
+ }
+-#ifdef POPPLER_NEW_COLOR_SPACE_API
+ if (args[numArgs-1].isName() &&
+ (pattern = res->lookupPattern(args[numArgs-1].getName(), NULL))) {
+ state->setStrokePattern(pattern);
+ builder->updateStyle(state);
+ }
+-#else
+- if (args[numArgs-1].isName() &&
+- (pattern = res->lookupPattern(args[numArgs-1].getName()))) {
+- state->setStrokePattern(pattern);
+- builder->updateStyle(state);
+- }
+-#endif
+
+ } else {
+ if (numArgs != state->getStrokeColorSpace()->getNComps()) {
+- error(getPos(), const_cast<char*>("Incorrect number of arguments in 'SCN' command"));
++ error(errInternal, getPos(), const_cast<char*>("Incorrect number of arguments in 'SCN' command"));
+ return;
+ }
+ state->setStrokePattern(NULL);
+@@ -1212,7 +1176,7 @@
+
+ void PdfParser::opLineTo(Object args[], int numArgs) {
+ if (!state->isCurPt()) {
+- error(getPos(), const_cast<char*>("No current point in lineto"));
++ error(errInternal, getPos(), const_cast<char*>("No current point in lineto"));
+ return;
+ }
+ state->lineTo(args[0].getNum(), args[1].getNum());
+@@ -1222,7 +1186,7 @@
+ double x1, y1, x2, y2, x3, y3;
+
+ if (!state->isCurPt()) {
+- error(getPos(), const_cast<char*>("No current point in curveto"));
++ error(errInternal, getPos(), const_cast<char*>("No current point in curveto"));
+ return;
+ }
+ x1 = args[0].getNum();
+@@ -1238,7 +1202,7 @@
+ double x1, y1, x2, y2, x3, y3;
+
+ if (!state->isCurPt()) {
+- error(getPos(), const_cast<char*>("No current point in curveto1"));
++ error(errInternal, getPos(), const_cast<char*>("No current point in curveto1"));
+ return;
+ }
+ x1 = state->getCurX();
+@@ -1254,7 +1218,7 @@
+ double x1, y1, x2, y2, x3, y3;
+
+ if (!state->isCurPt()) {
+- error(getPos(), const_cast<char*>("No current point in curveto2"));
++ error(errInternal, getPos(), const_cast<char*>("No current point in curveto2"));
+ return;
+ }
+ x1 = args[0].getNum();
+@@ -1282,7 +1246,7 @@
+
+ void PdfParser::opClosePath(Object args[], int numArgs) {
+ if (!state->isCurPt()) {
+- error(getPos(), const_cast<char*>("No current point in closepath"));
++ error(errInternal, getPos(), const_cast<char*>("No current point in closepath"));
+ return;
+ }
+ state->closePath();
+@@ -1298,7 +1262,7 @@
+
+ void PdfParser::opStroke(Object args[], int numArgs) {
+ if (!state->isCurPt()) {
+- //error(getPos(), const_cast<char*>("No path in stroke"));
++ //error(errInternal, getPos(), const_cast<char*>("No path in stroke"));
+ return;
+ }
+ if (state->isPath()) {
+@@ -1314,7 +1278,7 @@
+
+ void PdfParser::opCloseStroke(Object * /*args[]*/, int /*numArgs*/) {
+ if (!state->isCurPt()) {
+- //error(getPos(), const_cast<char*>("No path in closepath/stroke"));
++ //error(errInternal, getPos(), const_cast<char*>("No path in closepath/stroke"));
+ return;
+ }
+ state->closePath();
+@@ -1331,7 +1295,7 @@
+
+ void PdfParser::opFill(Object args[], int numArgs) {
+ if (!state->isCurPt()) {
+- //error(getPos(), const_cast<char*>("No path in fill"));
++ //error(errInternal, getPos(), const_cast<char*>("No path in fill"));
+ return;
+ }
+ if (state->isPath()) {
+@@ -1347,7 +1311,7 @@
+
+ void PdfParser::opEOFill(Object args[], int numArgs) {
+ if (!state->isCurPt()) {
+- //error(getPos(), const_cast<char*>("No path in eofill"));
++ //error(errInternal, getPos(), const_cast<char*>("No path in eofill"));
+ return;
+ }
+ if (state->isPath()) {
+@@ -1363,7 +1327,7 @@
+
+ void PdfParser::opFillStroke(Object args[], int numArgs) {
+ if (!state->isCurPt()) {
+- //error(getPos(), const_cast<char*>("No path in fill/stroke"));
++ //error(errInternal, getPos(), const_cast<char*>("No path in fill/stroke"));
+ return;
+ }
+ if (state->isPath()) {
+@@ -1376,7 +1340,7 @@
+
+ void PdfParser::opCloseFillStroke(Object args[], int numArgs) {
+ if (!state->isCurPt()) {
+- //error(getPos(), const_cast<char*>("No path in closepath/fill/stroke"));
++ //error(errInternal, getPos(), const_cast<char*>("No path in closepath/fill/stroke"));
+ return;
+ }
+ if (state->isPath()) {
+@@ -1388,7 +1352,7 @@
+
+ void PdfParser::opEOFillStroke(Object args[], int numArgs) {
+ if (!state->isCurPt()) {
+- //error(getPos(), const_cast<char*>("No path in eofill/stroke"));
++ //error(errInternal, getPos(), const_cast<char*>("No path in eofill/stroke"));
+ return;
+ }
+ if (state->isPath()) {
+@@ -1399,7 +1363,7 @@
+
+ void PdfParser::opCloseEOFillStroke(Object args[], int numArgs) {
+ if (!state->isCurPt()) {
+- //error(getPos(), const_cast<char*>("No path in closepath/eofill/stroke"));
++ //error(errInternal, getPos(), const_cast<char*>("No path in closepath/eofill/stroke"));
+ return;
+ }
+ if (state->isPath()) {
+@@ -1440,7 +1404,7 @@
+ doShadingPatternFillFallback((GfxShadingPattern *)pattern, gFalse, eoFill);
+ break;
+ default:
+- error(getPos(), const_cast<char*>("Unimplemented pattern type (%d) in fill"),
++ error(errInternal, getPos(), const_cast<char*>("Unimplemented pattern type (%d) in fill"),
+ pattern->getType());
+ break;
+ }
+@@ -1459,7 +1423,7 @@
+ doShadingPatternFillFallback((GfxShadingPattern *)pattern, gTrue, gFalse);
+ break;
+ default:
+- error(getPos(), const_cast<char*>("Unimplemented pattern type (%d) in stroke"),
++ error(errInternal, getPos(), const_cast<char*>("Unimplemented pattern type (%d) in stroke"),
+ pattern->getType());
+ break;
+ }
+@@ -1579,15 +1543,9 @@
+ double *matrix = NULL;
+ GBool savedState = gFalse;
+
+-#ifdef POPPLER_NEW_COLOR_SPACE_API
+ if (!(shading = res->lookupShading(args[0].getName(), NULL))) {
+ return;
+ }
+-#else
+- if (!(shading = res->lookupShading(args[0].getName()))) {
+- return;
+- }
+-#endif
+
+ // save current graphics state
+ if (shading->getType() != 2 && shading->getType() != 3) {
+@@ -2156,7 +2114,7 @@
+
+ void PdfParser::opShowText(Object args[], int numArgs) {
+ if (!state->getFont()) {
+- error(getPos(), const_cast<char*>("No font in show"));
++ error(errInternal, getPos(), const_cast<char*>("No font in show"));
+ return;
+ }
+ if (fontChanged) {
+@@ -2170,7 +2128,7 @@
+ double tx, ty;
+
+ if (!state->getFont()) {
+- error(getPos(), const_cast<char*>("No font in move/show"));
++ error(errInternal, getPos(), const_cast<char*>("No font in move/show"));
+ return;
+ }
+ if (fontChanged) {
+@@ -2188,7 +2146,7 @@
+ double tx, ty;
+
+ if (!state->getFont()) {
+- error(getPos(), const_cast<char*>("No font in move/set/show"));
++ error(errInternal, getPos(), const_cast<char*>("No font in move/set/show"));
+ return;
+ }
+ if (fontChanged) {
+@@ -2211,7 +2169,7 @@
+ int i;
+
+ if (!state->getFont()) {
+- error(getPos(), const_cast<char*>("No font in show/space"));
++ error(errInternal, getPos(), const_cast<char*>("No font in show/space"));
+ return;
+ }
+ if (fontChanged) {
+@@ -2236,7 +2194,7 @@
+ } else if (obj.isString()) {
+ doShowText(obj.getString());
+ } else {
+- error(getPos(), const_cast<char*>("Element of show/space array must be number or string"));
++ error(errInternal, getPos(), const_cast<char*>("Element of show/space array must be number or string"));
+ }
+ obj.free();
+ }
+@@ -2334,7 +2292,7 @@
+ if (charProc.isStream()) {
+ //parse(&charProc, gFalse); // TODO: parse into SVG font
+ } else {
+- error(getPos(), const_cast<char*>("Missing or bad Type3 CharProc entry"));
++ error(errInternal, getPos(), const_cast<char*>("Missing or bad Type3 CharProc entry"));
+ }
+ //out->endType3Char(state);
+ if (resDict) {
+@@ -2410,7 +2368,7 @@
+ return;
+ }
+ if (!obj1.isStream()) {
+- error(getPos(), const_cast<char*>("XObject '%s' is wrong type"), name);
++ error(errInternal, getPos(), const_cast<char*>("XObject '%s' is wrong type"), name);
+ obj1.free();
+ return;
+ }
+@@ -2426,9 +2384,9 @@
+ /* out->psXObject(obj1.getStream(),
+ obj3.isStream() ? obj3.getStream() : (Stream *)NULL);*/
+ } else if (obj2.isName()) {
+- error(getPos(), const_cast<char*>("Unknown XObject subtype '%s'"), obj2.getName());
++ error(errInternal, getPos(), const_cast<char*>("Unknown XObject subtype '%s'"), obj2.getName());
+ } else {
+- error(getPos(), const_cast<char*>("XObject subtype is missing or wrong type"));
++ error(errInternal, getPos(), const_cast<char*>("XObject subtype is missing or wrong type"));
+ }
+ obj2.free();
+ obj1.free();
+@@ -2559,11 +2517,7 @@
+ }
+ }
+ if (!obj1.isNull()) {
+-#ifdef POPPLER_NEW_COLOR_SPACE_API
+ colorSpace = GfxColorSpace::parse(&obj1, NULL);
+-#else
+- colorSpace = GfxColorSpace::parse(&obj1);
+-#endif
+ } else if (csMode == streamCSDeviceGray) {
+ colorSpace = new GfxDeviceGrayColorSpace();
+ } else if (csMode == streamCSDeviceRGB) {
+@@ -2648,11 +2602,7 @@
+ obj2.free();
+ }
+ }
+-#ifdef POPPLER_NEW_COLOR_SPACE_API
+ maskColorSpace = GfxColorSpace::parse(&obj1, NULL);
+-#else
+- maskColorSpace = GfxColorSpace::parse(&obj1);
+-#endif
+ obj1.free();
+ if (!maskColorSpace || maskColorSpace->getMode() != csDeviceGray) {
+ goto err1;
+@@ -2758,7 +2708,7 @@
+ err2:
+ obj1.free();
+ err1:
+- error(getPos(), const_cast<char*>("Bad image parameters"));
++ error(errInternal, getPos(), const_cast<char*>("Bad image parameters"));
+ }
+
+ void PdfParser::doForm(Object *str) {
+@@ -2783,7 +2733,7 @@
+ // check form type
+ dict->lookup(const_cast<char*>("FormType"), &obj1);
+ if (!(obj1.isNull() || (obj1.isInt() && obj1.getInt() == 1))) {
+- error(getPos(), const_cast<char*>("Unknown form type"));
++ error(errInternal, getPos(), const_cast<char*>("Unknown form type"));
+ }
+ obj1.free();
+
+@@ -2791,7 +2741,7 @@
+ dict->lookup(const_cast<char*>("BBox"), &bboxObj);
+ if (!bboxObj.isArray()) {
+ bboxObj.free();
+- error(getPos(), const_cast<char*>("Bad form bounding box"));
++ error(errInternal, getPos(), const_cast<char*>("Bad form bounding box"));
+ return;
+ }
+ for (i = 0; i < 4; ++i) {
+@@ -2827,11 +2777,7 @@
+ if (obj1.dictLookup(const_cast<char*>("S"), &obj2)->isName(const_cast<char*>("Transparency"))) {
+ transpGroup = gTrue;
+ if (!obj1.dictLookup(const_cast<char*>("CS"), &obj3)->isNull()) {
+-#ifdef POPPLER_NEW_COLOR_SPACE_API
+ blendingColorSpace = GfxColorSpace::parse(&obj3, NULL);
+-#else
+- blendingColorSpace = GfxColorSpace::parse(&obj3);
+-#endif
+ }
+ obj3.free();
+ if (obj1.dictLookup(const_cast<char*>("I"), &obj3)->isBool()) {
+@@ -2990,7 +2936,7 @@
+ parser->getObj(&obj);
+ while (!obj.isCmd(const_cast<char*>("ID")) && !obj.isEOF()) {
+ if (!obj.isName()) {
+- error(getPos(), const_cast<char*>("Inline image dictionary key must be a name object"));
++ error(errInternal, getPos(), const_cast<char*>("Inline image dictionary key must be a name object"));
+ obj.free();
+ } else {
+ key = copyString(obj.getName());
+@@ -3005,7 +2951,7 @@
+ parser->getObj(&obj);
+ }
+ if (obj.isEOF()) {
+- error(getPos(), const_cast<char*>("End of file in inline image"));
++ error(errInternal, getPos(), const_cast<char*>("End of file in inline image"));
+ obj.free();
+ dict.free();
+ return NULL;
+@@ -3020,11 +2966,11 @@
+ }
+
+ void PdfParser::opImageData(Object args[], int numArgs) {
+- error(getPos(), const_cast<char*>("Internal: got 'ID' operator"));
++ error(errInternal, getPos(), const_cast<char*>("Internal: got 'ID' operator"));
+ }
+
+ void PdfParser::opEndImage(Object args[], int numArgs) {
+- error(getPos(), const_cast<char*>("Internal: got 'EI' operator"));
++ error(errInternal, getPos(), const_cast<char*>("Internal: got 'EI' operator"));
+ }
+
+ //------------------------------------------------------------------------
+diff -Naur old/src/extension/internal/pdfinput/svg-builder.cpp new/src/extension/internal/pdfinput/svg-builder.cpp
+--- old/src/extension/internal/pdfinput/svg-builder.cpp 2011-07-08 20:25:09.468790000 +0200
++++ new/src/extension/internal/pdfinput/svg-builder.cpp 2012-05-13 20:45:22.303804308 +0200
+@@ -961,9 +961,7 @@
+ _font_style = sp_repr_css_attr_new();
+ GfxFont *font = state->getFont();
+ // Store original name
+- if (font->getOrigName()) {
+- _font_specification = font->getOrigName()->getCString();
+- } else if (font->getName()) {
++ if (font->getName()) {
+ _font_specification = font->getName()->getCString();
+ } else {
+ _font_specification = (char*) "Arial";
diff --git a/staging/kdegraphics-okular/PKGBUILD b/staging/kdegraphics-okular/PKGBUILD
new file mode 100644
index 000000000..ac50aeb7b
--- /dev/null
+++ b/staging/kdegraphics-okular/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 158978 2012-05-13 22:30:24Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=kdegraphics-okular
+pkgver=4.8.3
+pkgrel=2
+pkgdesc='Document Viewer'
+arch=('i686' 'x86_64')
+url="http://kde.org/applications/graphics/okular/"
+license=('GPL' 'LGPL' 'FDL')
+groups=('kde' 'kdegraphics')
+depends=('kdebase-runtime' 'qimageblitz' 'poppler-qt' 'chmlib' 'djvulibre'
+ 'ebook-tools' 'libspectre')
+makedepends=('cmake' 'automoc4')
+optdepends=('kdegraphics-mobipocket: mobipocket support')
+install=${pkgname}.install
+source=("http://download.kde.org/stable/${pkgver}/src/okular-${pkgver}.tar.xz")
+sha1sums=('7c43076df3e9d6217e2a5cbb8ef6d8af89f8ae37')
+
+build() {
+ cd "${srcdir}"
+ mkdir build
+ cd build
+ cmake ../okular-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}"/build
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/staging/kdegraphics-okular/kdegraphics-okular.install b/staging/kdegraphics-okular/kdegraphics-okular.install
new file mode 100644
index 000000000..81ce5c4b0
--- /dev/null
+++ b/staging/kdegraphics-okular/kdegraphics-okular.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/staging/poppler/PKGBUILD b/staging/poppler/PKGBUILD
new file mode 100644
index 000000000..139184dd8
--- /dev/null
+++ b/staging/poppler/PKGBUILD
@@ -0,0 +1,80 @@
+# $Id: PKGBUILD 158950 2012-05-13 15:25:14Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=poppler
+pkgname=('poppler' 'poppler-glib' 'poppler-qt')
+pkgver=0.20.0
+pkgrel=1
+arch=(i686 x86_64)
+license=('GPL')
+makedepends=('libjpeg' 'gcc-libs' 'cairo' 'fontconfig' 'openjpeg' 'gtk2' 'qt' 'pkgconfig' 'lcms' 'gobject-introspection')
+options=('!libtool' '!emptydirs')
+url="http://poppler.freedesktop.org/"
+_testtag=0d2bfd4af4c76a3bac27ccaff793d9129df7b57a
+source=(http://poppler.freedesktop.org/${pkgbase}-${pkgver}.tar.gz
+ http://cgit.freedesktop.org/poppler/test/snapshot/test-${_testtag}.tar.bz2)
+md5sums=('5bca54b9561bf5b14d9344efce2cd4f3'
+ '9dc64c254a31e570507bdd4ad4ba629a')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ sed -i -e '/AC_PATH_XTRA/d' configure.ac
+
+ autoreconf -fi
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --enable-cairo-output \
+ --enable-xpdf-headers \
+ --enable-libjpeg --enable-zlib \
+ --enable-poppler-qt4 \
+ --enable-poppler-glib
+ make
+}
+
+check() {
+ cd "${srcdir}"
+ ln -sf test-${_testtag} test
+ cd ${pkgbase}-${pkgver}
+ LANG=en_US.UTF8 make check
+}
+
+package_poppler() {
+ pkgdesc="PDF rendering library based on xpdf 3.0"
+ depends=('libjpeg' 'gcc-libs' 'cairo' 'fontconfig' 'openjpeg' 'lcms' 'poppler-data')
+ conflicts=("poppler-qt3<${pkgver}")
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ sed -e 's/^glib_subdir =.*/glib_subdir =/' \
+ -e 's/^qt4_subdir =.*/qt4_subdir =/' -i Makefile
+ make DESTDIR="${pkgdir}" install
+
+ rm -f "${pkgdir}"/usr/lib/pkgconfig/poppler-{glib,qt4}.pc
+}
+
+package_poppler-glib() {
+ pkgdesc="Poppler glib bindings"
+ depends=("poppler=${pkgver}" 'glib2')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/poppler"
+ make DESTDIR="${pkgdir}" install-libLTLIBRARIES
+ cd "${srcdir}/${pkgbase}-${pkgver}/glib"
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/lib/pkgconfig"
+ install -m644 ../poppler-glib.pc "${pkgdir}/usr/lib/pkgconfig/"
+ rm -f "${pkgdir}"/usr/lib/libpoppler.*
+ rm -f "${pkgdir}/usr/bin/poppler-glib-demo"
+}
+
+package_poppler-qt() {
+ pkgdesc="Poppler Qt bindings"
+ depends=("poppler=${pkgver}" 'qt')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/poppler"
+ make DESTDIR="${pkgdir}" install-libLTLIBRARIES
+ cd "${srcdir}/${pkgbase}-${pkgver}/qt4"
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/lib/pkgconfig"
+ install -m644 ../poppler-qt4.pc "${pkgdir}/usr/lib/pkgconfig/"
+ rm -f "${pkgdir}"/usr/lib/libpoppler.*
+}
diff --git a/staging/xpdf/PKGBUILD b/staging/xpdf/PKGBUILD
new file mode 100644
index 000000000..7545e3692
--- /dev/null
+++ b/staging/xpdf/PKGBUILD
@@ -0,0 +1,64 @@
+# $Id: PKGBUILD 158960 2012-05-13 16:58:43Z bisson $
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Contributor: tobias <tobias@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgname=xpdf
+#pkgver=3.03_pl1
+pkgver=3.03
+pkgrel=2
+pkgdesc='Viewer for Portable Document Format (PDF) files'
+url='http://www.foolabs.com/xpdf/'
+license=('GPL2')
+arch=('i686' 'x86_64')
+depends=('lesstif' 'gsfonts' 'libxt')
+optdepends=('poppler: tools that used to be included in xpdf'
+ 'desktop-file-utils: for desktop environments')
+# "ftp://ftp.foolabs.com/pub/${pkgname}/${pkgname}-${pkgver%_*}pl1.patch"
+source=("ftp://ftp.foolabs.com/pub/${pkgname}/${pkgname}-${pkgver%_*}.tar.gz"
+ 'char.patch'
+ 'desktop')
+sha1sums=('499423e8a795e0efd76ca798239eb4d0d52fe248'
+ '5c471944685a6b24a2b0c0e000562d1a3263aeeb'
+ '3b6fe01636253676ffa0efe1b237a75af4721f6d')
+
+install=install
+backup=('etc/xpdfrc')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver%_*}"
+
+# patch -p1 -i "../${pkgname}-${_srcver}pl1.patch"
+ patch -p1 -i ../char.patch
+
+ sed -i 's:/usr/share/fonts/type1/gsfonts:/usr/share/fonts/Type1:' xpdf/GlobalParams.cc
+ sed -i 's:times-medium-r-normal--16:times-medium-r-normal--14:' xpdf/XPDFViewer.cc # FS#14217
+
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --enable-multithreaded \
+ --enable-wordlist \
+ --with-freetype2-library=/usr/lib \
+ --with-freetype2-includes=/usr/include/freetype2 \
+ --x-includes=/usr/include \
+ --with-Xm-library=/usr/lib \
+ --with-Xm-includes=/usr/include \
+
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver%_*}"
+
+ make DESTDIR="${pkgdir}" install
+
+ install -Dm644 ../desktop "${pkgdir}/usr/share/applications/xpdf.desktop"
+ install -Dm644 xpdf/xpdfIcon.xpm "${pkgdir}/usr/share/pixmaps/xpdf.xpm"
+
+ # stuff provided by poppler
+ for tool in pdfdetach pdffonts pdfimages pdfinfo pdftoppm pdftops pdftotext; do
+ rm "${pkgdir}/usr/bin/${tool}" "${pkgdir}/usr/share/man/man1/${tool}.1"
+ done
+}
diff --git a/staging/xpdf/char.patch b/staging/xpdf/char.patch
new file mode 100644
index 000000000..8e49393a6
--- /dev/null
+++ b/staging/xpdf/char.patch
@@ -0,0 +1,12 @@
+diff -aur old/xpdf/XPDFViewer.cc new/xpdf/XPDFViewer.cc
+--- old/xpdf/XPDFViewer.cc 2011-08-15 14:08:53.000000000 -0700
++++ new/xpdf/XPDFViewer.cc 2011-08-17 11:05:55.739431215 -0700
+@@ -1803,7 +1803,7 @@
+ menuPane = XmCreatePulldownMenu(toolBar, "zoomMenuPane", args, n);
+ for (i = 0; i < nZoomMenuItems; ++i) {
+ n = 0;
+- s = XmStringCreateLocalized(zoomMenuInfo[i].label);
++ s = XmStringCreateLocalized((char *)zoomMenuInfo[i].label);
+ XtSetArg(args[n], XmNlabelString, s); ++n;
+ XtSetArg(args[n], XmNuserData, (XtPointer)i); ++n;
+ sprintf(buf, "zoom%d", i);
diff --git a/staging/xpdf/desktop b/staging/xpdf/desktop
new file mode 100644
index 000000000..06830ecda
--- /dev/null
+++ b/staging/xpdf/desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=Xpdf
+Comment=Views Adobe PDF (acrobat) files
+Exec=xpdf
+Terminal=false
+Type=Application
+Icon=xpdf
+Categories=Office;
+MimeType=application/pdf;
diff --git a/staging/xpdf/install b/staging/xpdf/install
new file mode 100644
index 000000000..c6cf149dd
--- /dev/null
+++ b/staging/xpdf/install
@@ -0,0 +1,11 @@
+post_install() {
+ [[ -x /usr/bin/update-desktop-database ]] && update-desktop-database -q || true
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/testing/cryptsetup/PKGBUILD b/testing/cryptsetup/PKGBUILD
new file mode 100644
index 000000000..e2292ebc6
--- /dev/null
+++ b/testing/cryptsetup/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 158938 2012-05-13 13:45:53Z thomas $
+# Maintainer: Thomas Bächler <thomas@archlinux.org>
+pkgname=cryptsetup
+pkgver=1.4.2
+pkgrel=1
+pkgdesc="Userspace setup tool for transparent encryption of block devices using dm-crypt"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://code.google.com/p/cryptsetup/"
+groups=('base')
+depends=('device-mapper>=2.02.85-2' 'libgcrypt' 'popt')
+conflicts=('mkinitcpio<0.7')
+options=('!libtool' '!emptydirs')
+source=(http://cryptsetup.googlecode.com/files/${pkgname}-${pkgver}.tar.bz2
+ http://cryptsetup.googlecode.com/files/${pkgname}-${pkgver}.tar.bz2.asc
+ encrypt_hook
+ encrypt_install)
+sha256sums=('1fe80d7b19d24b3f65d2e446decfed859e2c4d17fdf7c19289d82dc7cd60dfe7'
+ '4e6dbece8d1baad861479aca70d0cf30887420da9b5eab45d65d064c656893ed'
+ 'e4c00e2da274bf4cab3f72a0de779790a11a946d36b83144e74d3791e230b262'
+ 'cba1dc38ff6cc4d3740d0badfb2b151bb03d19e8e9fa497569ac2fb6f4196e0e')
+
+build() {
+ cd "${srcdir}"/$pkgname-${pkgver}
+ ./configure --prefix=/usr --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}"/$pkgname-${pkgver}
+ make DESTDIR="${pkgdir}" install
+ # install hook
+ install -D -m644 "${srcdir}"/encrypt_hook "${pkgdir}"/usr/lib/initcpio/hooks/encrypt
+ install -D -m644 "${srcdir}"/encrypt_install "${pkgdir}"/usr/lib/initcpio/install/encrypt
+}
diff --git a/testing/cryptsetup/encrypt_hook b/testing/cryptsetup/encrypt_hook
new file mode 100644
index 000000000..0f35782c6
--- /dev/null
+++ b/testing/cryptsetup/encrypt_hook
@@ -0,0 +1,137 @@
+#!/usr/bin/ash
+
+run_hook() {
+ modprobe -a -q dm-crypt >/dev/null 2>&1
+ [ "${quiet}" = "y" ] && CSQUIET=">/dev/null"
+
+ # Get keyfile if specified
+ ckeyfile="/crypto_keyfile.bin"
+ if [ -n "$cryptkey" ]; then
+ IFS=: read ckdev ckarg1 ckarg2 <<EOF
+$cryptkey
+EOF
+ if poll_device "${ckdev}" ${rootdelay}; then
+ case ${ckarg1} in
+ *[!0-9]*)
+ # Use a file on the device
+ # ckarg1 is not numeric: ckarg1=filesystem, ckarg2=path
+ mkdir /ckey
+ mount -r -t "$ckarg1" "$ckdev" /ckey
+ dd if="/ckey/$ckarg2" of="$ckeyfile" >/dev/null 2>&1
+ umount /ckey
+ ;;
+ *)
+ # Read raw data from the block device
+ # ckarg1 is numeric: ckarg1=offset, ckarg2=length
+ dd if="$ckdev" of="$ckeyfile" bs=1 skip="$ckarg1" count="$ckarg2" >/dev/null 2>&1
+ ;;
+ esac
+ fi
+ [ ! -f ${ckeyfile} ] && echo "Keyfile could not be opened. Reverting to passphrase."
+ fi
+
+ if [ -n "${cryptdevice}" ]; then
+ DEPRECATED_CRYPT=0
+ IFS=: read cryptdev cryptname cryptoptions <<EOF
+$cryptdevice
+EOF
+ else
+ DEPRECATED_CRYPT=1
+ cryptdev="${root}"
+ cryptname="root"
+ fi
+
+ warn_deprecated() {
+ echo "The syntax 'root=${root}' where '${root}' is an encrypted volume is deprecated"
+ echo "Use 'cryptdevice=${root}:root root=/dev/mapper/root' instead."
+ }
+
+ for cryptopt in ${cryptoptions//,/ }; do
+ case ${cryptopt} in
+ allow-discards)
+ echo "Enabling TRIM/discard support."
+ cryptargs="${cryptargs} --allow-discards"
+ ;;
+ *)
+ echo "Encryption option '${cryptopt}' not known, ignoring." >&2
+ ;;
+ esac
+ done
+
+ if poll_device "${cryptdev}" ${rootdelay}; then
+ if cryptsetup isLuks ${cryptdev} >/dev/null 2>&1; then
+ [ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
+ dopassphrase=1
+ # If keyfile exists, try to use that
+ if [ -f ${ckeyfile} ]; then
+ if eval cryptsetup --key-file ${ckeyfile} luksOpen ${cryptdev} ${cryptname} ${cryptargs} ${CSQUIET}; then
+ dopassphrase=0
+ else
+ echo "Invalid keyfile. Reverting to passphrase."
+ fi
+ fi
+ # Ask for a passphrase
+ if [ ${dopassphrase} -gt 0 ]; then
+ echo ""
+ echo "A password is required to access the ${cryptname} volume:"
+
+ #loop until we get a real password
+ while ! eval cryptsetup luksOpen ${cryptdev} ${cryptname} ${cryptargs} ${CSQUIET}; do
+ sleep 2;
+ done
+ fi
+ if [ -e "/dev/mapper/${cryptname}" ]; then
+ if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
+ export root="/dev/mapper/root"
+ fi
+ else
+ err "Password succeeded, but ${cryptname} creation failed, aborting..."
+ exit 1
+ fi
+ elif [ -n "${crypto}" ]; then
+ [ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
+ msg "Non-LUKS encrypted device found..."
+ if echo "$crypto" | awk -F: '{ exit(NF == 5) }'; then
+ err "Verify parameter format: crypto=hash:cipher:keysize:offset:skip"
+ err "Non-LUKS decryption not attempted..."
+ return 1
+ fi
+ exe="cryptsetup create $cryptname $cryptdev $cryptargs"
+ IFS=: read c_hash c_cipher c_keysize c_offset c_skip <<EOF
+$crypto
+EOF
+ [ -n "$c_hash" ] && exe="$exe --hash '$c_hash'"
+ [ -n "$c_cipher" ] && exe="$exe --cipher '$c_cipher'"
+ [ -n "$c_keysize" ] && exe="$exe --key-size '$c_keysize'"
+ [ -n "$c_offset" ] && exe="$exe --offset '$c_offset'"
+ [ -n "$c_skip" ] && exe="$exe --skip '$c_skip'"
+ if [ -f "$ckeyfile" ]; then
+ exe="$exe --key-file $ckeyfile"
+ else
+ exe="$exe --verify-passphrase"
+ echo ""
+ echo "A password is required to access the ${cryptname} volume:"
+ fi
+ eval "$exe $CSQUIET"
+
+ if [ $? -ne 0 ]; then
+ err "Non-LUKS device decryption failed. verify format: "
+ err " crypto=hash:cipher:keysize:offset:skip"
+ exit 1
+ fi
+ if [ -e "/dev/mapper/${cryptname}" ]; then
+ if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
+ export root="/dev/mapper/root"
+ fi
+ else
+ err "Password succeeded, but ${cryptname} creation failed, aborting..."
+ exit 1
+ fi
+ else
+ err "Failed to open encryption mapping: The device ${cryptdev} is not a LUKS volume and the crypto= paramater was not specified."
+ fi
+ fi
+ rm -f ${ckeyfile}
+}
+
+# vim: set ft=sh ts=4 sw=4 et:
diff --git a/testing/cryptsetup/encrypt_install b/testing/cryptsetup/encrypt_install
new file mode 100644
index 000000000..79d2f3e4b
--- /dev/null
+++ b/testing/cryptsetup/encrypt_install
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+build() {
+ if [ -z "${CRYPTO_MODULES}" ]; then
+ MODULES=" dm-crypt $(all_modules "/crypto/")"
+ else
+ MODULES=" dm-crypt $CRYPTO_MODULES"
+ fi
+ FILES=""
+ SCRIPT="encrypt"
+
+ add_binary "cryptsetup"
+ add_binary "dmsetup"
+ add_file "/usr/lib/udev/rules.d/10-dm.rules"
+ add_file "/usr/lib/udev/rules.d/13-dm-disk.rules"
+ add_file "/usr/lib/udev/rules.d/95-dm-notify.rules"
+ add_file "/usr/lib/initcpio/udev/11-dm-initramfs.rules" "/usr/lib/udev/rules.d/11-dm-initramfs.rules"
+}
+
+help() {
+ cat <<HELPEOF
+This hook allows for an encrypted root device. Users should specify the device
+to be unlocked using 'cryptdevice=device:dmname' on the kernel command line,
+where 'device' is the path to the raw device, and 'dmname' is the name given to
+the device after unlocking, and will be available as /dev/mapper/dmname.
+
+For unlocking via keyfile, 'cryptkey=device:fstype:path' should be specified on
+the kernel cmdline, where 'device' represents the raw block device where the key
+exists, 'fstype' is the filesystem type of 'device' (or auto), and 'path' is
+the absolute path of the keyfile within the device.
+
+Without specifying a keyfile, you will be prompted for the password at runtime.
+This means you must have a keyboard available to input it, and you may need
+the keymap hook as well to ensure that the keyboard is using the layout you
+expect.
+HELPEOF
+}
+
+# vim: set ft=sh ts=4 sw=4 et:
diff --git a/testing/iw/PKGBUILD b/testing/iw/PKGBUILD
new file mode 100644
index 000000000..4b4d5d723
--- /dev/null
+++ b/testing/iw/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 158934 2012-05-13 13:15:10Z thomas $
+# Maintainer: Thomas Bächler <thomas@archlinux.org>
+
+pkgname=iw
+pkgver=3.4
+pkgrel=1
+pkgdesc="nl80211 based CLI configuration utility for wireless devices"
+arch=("i686" "x86_64")
+url="http://wireless.kernel.org/en/users/Documentation/iw"
+license=("GPL")
+depends=("libnl")
+makedepends=("kernel-headers")
+source=(http://wireless.kernel.org/download/$pkgname/$pkgname-$pkgver.tar.bz2)
+sha256sums=('989b5677588e32de6eda97bf978810b366a7620f78f26f9cc61c15bdb434218a')
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ make
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
+}
diff --git a/testing/libnl/PKGBUILD b/testing/libnl/PKGBUILD
new file mode 100644
index 000000000..461397764
--- /dev/null
+++ b/testing/libnl/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 158932 2012-05-13 13:10:53Z thomas $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=libnl
+pkgver=3.2.9
+pkgrel=1
+pkgdesc="Library for applications dealing with netlink sockets"
+arch=(i686 x86_64)
+url="http://www.infradead.org/~tgr/libnl/"
+license=(GPL)
+depends=(glibc)
+backup=(etc/libnl/classid etc/libnl/pktloc)
+options=(!libtool)
+source=("$url/files/$pkgname-$pkgver.tar.gz")
+sha256sums=('9f23e9460bd9bb7fbe09af5eb281e4a43a26fa245ea864ed5e28fe4e8118af63')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --sbindir=/usr/bin \
+ --disable-static
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}