diff options
98 files changed, 4432 insertions, 290 deletions
diff --git a/community/apvlv/PKGBUILD b/community/apvlv/PKGBUILD index 041f5a102..335b36144 100644 --- a/community/apvlv/PKGBUILD +++ b/community/apvlv/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 52879 2011-07-29 15:22:56Z shusmann $ +# $Id: PKGBUILD 55080 2011-09-02 08:40:53Z andrea $ # Maintainer: Brad Fanella <bradfanella@archlinux.us> # Contributor: Stefan Husmann <stefan-husmann@t-online.de> # Contributor: tocer.deng <tocer.deng@gmail.com> diff --git a/community/calibre/PKGBUILD b/community/calibre/PKGBUILD index 49082b8df..7098aea82 100644 --- a/community/calibre/PKGBUILD +++ b/community/calibre/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 54884 2011-08-27 10:26:35Z giovanni $ +# $Id: PKGBUILD 55124 2011-09-02 23:27:00Z giovanni $ # Maintainer: Giovanni Scafora <giovanni@archlinux.org> # Contributor: Petrov Roman <nwhisper@gmail.com> # Contributor: Andrea Fagiani <andfagiani _at_ gmail dot com> pkgname=calibre -pkgver=0.8.16 +pkgver=0.8.17 pkgrel=1 pkgdesc="Ebook management application" arch=('i686' 'x86_64') @@ -20,7 +20,7 @@ optdepends=('ipython: to use calibre-debug') install=calibre.install source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz desktop_integration.patch) -md5sums=('f3a1d015e0e518e9759b4e7714158e4b' +md5sums=('dbd9acc24367d099725dfc4461298738' '253ce4fe5d01f8ff76b63cd3825755ea') build() { diff --git a/community/dar/PKGBUILD b/community/dar/PKGBUILD index ab27e1625..d013f771f 100644 --- a/community/dar/PKGBUILD +++ b/community/dar/PKGBUILD @@ -1,6 +1,7 @@ -# $Id: PKGBUILD 52259 2011-07-22 16:01:25Z shusmann $ -# Contributor: Aaron Schaefer <aaron@elasticdog.com> +# $Id: PKGBUILD 55079 2011-09-02 08:39:46Z andrea $ # Maintainer: Stefan Husmann <stefan-husmann@t-online.de> +# Contributor: Aaron Schaefer <aaron@elasticdog.com> + pkgname=dar pkgver=2.4.1 pkgrel=1 @@ -10,6 +11,7 @@ url='http://dar.linux.free.fr/' license=('GPL') depends=('bzip2' 'lzo2' 'libgcrypt') optdepends=('perl: for running some samples') +makedepends=('doxygen') source=("http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz") md5sums=('727e0b266d761e4dfd48a6af759413cb') options=('!libtool') @@ -20,6 +22,7 @@ build() { ./configure --prefix=/usr --sysconfdir=/etc make } + package() { cd "$srcdir/$pkgname-$pkgver" install -d $pkgdir/usr/share/doc/$pkgname diff --git a/community/fotoxx/PKGBUILD b/community/fotoxx/PKGBUILD index 116ebfe93..817aa32b2 100644 --- a/community/fotoxx/PKGBUILD +++ b/community/fotoxx/PKGBUILD @@ -1,6 +1,6 @@ # Maintainer: Stefan Husmann <stefan-husmann@t-online.de> pkgname=fotoxx -pkgver=11.08.1 +pkgver=11.09 pkgrel=1 pkgdesc="A program for improving image files made with a digital camera" url="http://kornelix.squarespace.com/fotoxx" @@ -9,11 +9,12 @@ license=('GPL3') depends=('gimp-ufraw' 'perl-exiftool' 'xdg-utils' 'desktop-file-utils') optdepends=('mashup: for composing pages to print from within fotoxx' 'brasero: for burning') source=("http://kornelix.squarespace.com/storage/downloads/$pkgname-$pkgver.tar.gz") +md5sums=('dd851af4ce6e9d900fbf0afd65270ae8') install=fotoxx.install -md5sums=('95aab93caf87dc24e5e6dd9abef2bc73') build() { cd $srcdir/$pkgname-$pkgver + sed -i 's+xdg-deskto+#xdg-deskto+' Makefile make PREFIX=/usr \ CFLAGS+="-c `pkg-config --cflags gtk+-2.0`" \ LFLAGS+="`pkg-config --libs gtk+-2.0 gthread-2.0`" diff --git a/community/mashup/PKGBUILD b/community/mashup/PKGBUILD index 6428453bb..51d32eadb 100644 --- a/community/mashup/PKGBUILD +++ b/community/mashup/PKGBUILD @@ -2,7 +2,7 @@ # Maintainer: Stefan Husmann <stefan-husmann@t-online.de> pkgname=mashup -pkgver=2.9 +pkgver=3.0 pkgrel=1 pkgdesc="Adjusting images on a sheet of paper for printing" url="http://kornelix.squarespace.com/printoxx" @@ -11,20 +11,22 @@ license=('GPL3') depends=('gtk2') replaces=('printoxx') source=("http://kornelix.squarespace.com/storage/downloads/$pkgname-$pkgver.tar.gz") -md5sums=('dc4c02063d8f9fa4a6d4806aaa5a2b07') +md5sums=('feb7f5557fce1a00c377d2c6b8a9e2fc') build() { cd $srcdir/$pkgname-$pkgver + sed -i 's+xdg-deskto+#xdg-deskto+' Makefile make PREFIX=/usr \ CFLAGS+="-c `pkg-config --cflags gtk+-2.0`" \ LFLAGS+="`pkg-config --libs gtk+-2.0 gthread-2.0`" - sed -i 's#/local##' desktop - sed -i 's+# ++' desktop + sed -i 's#/local##' data/desktop + sed -i 's+# ++' data/desktop } package() { cd $srcdir/$pkgname-$pkgver - install -Dm644 desktop \ + install -Dm644 data/desktop \ $pkgdir/usr/share/applications/$pkgname.desktop make DESTDIR=$pkgdir PREFIX=/usr install + rm $pkgdir/usr/share/applications/kornelix-$pkgname.desktop } diff --git a/community/nginx/PKGBUILD b/community/nginx/PKGBUILD index 237acf780..7507f3eb4 100644 --- a/community/nginx/PKGBUILD +++ b/community/nginx/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 55022 2011-08-31 13:26:24Z spupykin $ +# $Id: PKGBUILD 55082 2011-09-02 09:21:05Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Contributor: Miroslaw Szot <mss@czlug.icis.pcz.pl> @@ -12,10 +12,12 @@ _group=http pkgname=nginx pkgver=1.0.6 -pkgrel=2 +pkgrel=3 pkgdesc="lightweight HTTP server and IMAP/POP3 proxy server" arch=('i686' 'x86_64') depends=('pcre' 'zlib' 'openssl') +makedepends=('passenger') +optdepends=('passenger') url="http://nginx.org" license=('custom') backup=("etc/nginx/conf/fastcgi.conf" @@ -52,7 +54,8 @@ build() { --with-http_stub_status_module \ --with-http_dav_module \ --with-http_gzip_static_module \ - --with-ipv6 + --with-ipv6 \ + --add-module=/usr/lib/passenger/ext/nginx make } diff --git a/community/passenger/PKGBUILD b/community/passenger/PKGBUILD new file mode 100644 index 000000000..7ebf7fd69 --- /dev/null +++ b/community/passenger/PKGBUILD @@ -0,0 +1,30 @@ +# $Id: PKGBUILD 55084 2011-09-02 09:22:31Z spupykin $ +# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> + +pkgname=passenger +pkgver=3.0.8 +pkgrel=1 +pkgdlnr=75219 +pkgdesc="mod_rails passenger" +arch=('i686' 'x86_64') +url="http://www.modrails.com" +license=('GPL') +depends=('apache' 'ruby' 'ruby-rack' 'curl') +install=$pkgname.install +options=('!emptydirs') +source=(http://rubyforge.org/frs/download.php/$pkgdlnr/$pkgname-$pkgver.tar.gz + $pkgname-install-apache2-module.patch) +md5sums=('b283f3be6bbbc93a94cc30f99ab0263e' + '3d04eba10c55a955c378678d5df8497f') + +build(){ + cd $srcdir/$pkgname-$pkgver + patch bin/passenger-install-apache2-module <$srcdir/passenger-install-apache2-module.patch + ./bin/passenger-install-apache2-module + mkdir -p $pkgdir/etc/httpd/modules/ + cp ext/apache2/mod_passenger.so $pkgdir/etc/httpd/modules/mod_passenger.so + mkdir -p $pkgdir/usr/lib/passenger/ + cp -R * $pkgdir/usr/lib/passenger/ + mkdir -p $pkgdir/usr/lib/httpd + mv $pkgdir/etc/httpd/modules $pkgdir/usr/lib/httpd/modules +} diff --git a/community/passenger/passenger-install-apache2-module.patch b/community/passenger/passenger-install-apache2-module.patch new file mode 100644 index 000000000..ee6080c1a --- /dev/null +++ b/community/passenger/passenger-install-apache2-module.patch @@ -0,0 +1,5 @@ +105d104 +< wait +179,180d177 +< else +< wait diff --git a/community/passenger/passenger.install b/community/passenger/passenger.install new file mode 100644 index 000000000..9c683e7cd --- /dev/null +++ b/community/passenger/passenger.install @@ -0,0 +1,32 @@ +post_install() { + echo "Please edit your Apache configuration file, and add these lines:" + echo "" + echo "LoadModule passenger_module /var/aur/passenger3/src/passenger-3.0.0/ext/apache2/mod_passenger.so" + echo "PassengerRoot /var/aur/passenger3/src/passenger-3.0.0" + echo "PassengerRuby /opt/ruby1.8/bin/ruby" + echo "" + echo "After you restart Apache, you are ready to deploy any number of Ruby on Rails" + echo "applications on Apache, without any further Ruby on Rails-specific" + echo "configuration!" + echo "" + echo "" + echo "Deploying a Ruby on Rails application: an example" + echo "" + echo "Suppose you have a Ruby on Rails application in /somewhere. Add a virtual host" + echo "to your Apache configuration file, and set its DocumentRoot to" + echo "/somewhere/public, like this:" + echo "" + echo "<VirtualHost *:80>" + echo " ServerName www.yourhost.com" + echo " DocumentRoot /somewhere/public # <-- be sure to point to 'public'!" + echo " <Directory /somewhere/public>" + echo " AllowOverride all # <-- relax Apache security settings" + echo " Options -MultiViews # <-- MultiViews must be turned off" + echo " </Directory>" + echo "</VirtualHost>" + echo "" + echo "And that's it! You may also want to check the Users Guide for security and" + echo "optimization tips, troubleshooting and other useful information:" + echo "" + echo "/var/aur/passenger3/src/passenger-3.0.0/doc/Users guide Apache.html" +} diff --git a/community/perl-datetime/PKGBUILD b/community/perl-datetime/PKGBUILD index b5c86bd7f..c4e8f7235 100644 --- a/community/perl-datetime/PKGBUILD +++ b/community/perl-datetime/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 47498 2011-05-23 16:01:46Z tdziedzic $ +# $Id: PKGBUILD 55077 2011-09-02 08:37:50Z andrea $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Contributor: François Charette <firmicus ατ gmx δοτ net> pkgname=perl-datetime pkgver=0.70 -pkgrel=2 +pkgrel=3 pkgdesc="A complete, easy to use date and time object" arch=('i686' 'x86_64') url="http://search.cpan.org/dist/DateTime" diff --git a/community/sigil/PKGBUILD b/community/sigil/PKGBUILD index d1cb2bd19..d42a7df02 100644 --- a/community/sigil/PKGBUILD +++ b/community/sigil/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 54816 2011-08-26 15:37:25Z giovanni $ +# $Id: PKGBUILD 55126 2011-09-02 23:39:52Z giovanni $ # Maintainer: Giovanni Scafora <giovanni@archlinux.org> # Contributor: Larry Hajali <larryhaja [at] gmail [dot] com> pkgname=sigil -pkgver=0.4.1 +pkgver=0.4.2 pkgrel=1 pkgdesc="A WYSIWYG ebook editor" arch=('i686' 'x86_64') @@ -14,7 +14,7 @@ makedepends=('cmake') install=sigil.install source=(http://sigil.googlecode.com/files/Sigil-${pkgver}-Code.zip ${pkgname}.desktop) -md5sums=('b0ae292aea366fe6eb3f3392232ba9a6' +md5sums=('ce27976254236f8b11b787fd05be9acb' 'fef6aa492af487ccccd6b133635cee5a') build() { diff --git a/community/tor/PKGBUILD b/community/tor/PKGBUILD index db528f365..72b5419cc 100644 --- a/community/tor/PKGBUILD +++ b/community/tor/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 41034 2011-03-03 11:05:31Z lfleischer $ +# $Id: PKGBUILD 55094 2011-09-02 11:01:01Z lfleischer $ # Maintainer: Lukas Fleischer <archlinux at cryptocrack dot de> # Contributor: simo <simo@archlinux.org> pkgname=tor -pkgver=0.2.1.30 +pkgver=0.2.2.32 pkgrel=1 pkgdesc='Anonymizing overlay network.' arch=('i686' 'x86_64') @@ -20,7 +20,7 @@ source=("http://www.torproject.org/dist/${pkgname}-${pkgver}.tar.gz" 'torrc' 'tor' 'tor.conf.d') -md5sums=('6c6d61e053af5969a245d025c4cfce9d' +md5sums=('6d70db8da9513453d520168e017a272c' '56c75d4e8a66f34167d31e38c43793dd' 'f8e6868a389877346e7eebaacd1078bb' '5c7c6834064b3530c442def6079ac3aa') diff --git a/community/vtk/PKGBUILD b/community/vtk/PKGBUILD index 5ca8bca0f..6d3d8a7bc 100644 --- a/community/vtk/PKGBUILD +++ b/community/vtk/PKGBUILD @@ -7,8 +7,8 @@ # Contributor: djscholl pkgname=vtk -pkgver=5.6.1 -pkgrel=7 +pkgver=5.8.0 +pkgrel=1 pkgdesc='A software system for 3D computer graphics, image processing, and visualization which supports a wide variety of visualization algorithms and advanced modeling techniques.' arch=('i686' 'x86_64') url='http://www.vtk.org' @@ -17,21 +17,19 @@ depends=('libpng' 'libtiff' 'freetype2' 'python2' 'java-runtime' 'tk' 'boost' 'f optdepends=('gnuplot: plotting tools' 'graphviz: drawing tools') makedepends=('cmake' 'java-environment' 'doxygen' 'gnuplot' 'mesa') -source=("http://www.vtk.org/files/release/${pkgver:0:3}/${pkgname}-${pkgver}.tar.gz" +source=("http://www.vtk.org/files/release/${pkgver:0:3}/vtk-${pkgver}.tar.gz" "http://www.vtk.org/files/release/${pkgver:0:3}/vtkdata-${pkgver}.tar.gz" - 'missingheader.diff') -md5sums=('b80a76435207c5d0f74dfcab15b75181' - '67263bd972f923d39a60f01104368779' - 'f7c60ac3ccaf61c41ca508e53d895d3e') + 'fixkernelversioncheck.diff') +md5sums=('37b7297d02d647cc6ca95b38174cb41f' + 'a05295b81930e894fc0e31866f399151' + '9e137af23701f76fc727222ebac23389') build() { cd VTK - # remove next time version bump - patch -Np1 -i ${srcdir}/missingheader.diff - - # remove next time version bump - sed -i '31 i#include <vtksys/cstddef>' Common/vtkPythonUtil.cxx + # fix compilation error: http://vtk.org/Bug/view.php?id=12568 + # remove next bunp + patch -Np1 -i ${srcdir}/fixkernelversioncheck.diff # fix for libpng 1.4 - remove next time version bump for _FILE in `grep -Rl "png_set_gray_1_2_4_to_8" *` @@ -83,7 +81,8 @@ build() { ${srcdir}/VTK # j1 is used because of a bug in building with multiple threads - make -j1 + #make -j1 + make } package() { @@ -92,16 +91,16 @@ package() { make DESTDIR=${pkgdir} install # Move the vtk.jar to the arch-specific location - install -dv ${pkgdir}/usr/share/java/${pkgname} - mv -v ${pkgdir}/usr/lib/${pkgname}-${pkgver:0:3}/java/${pkgname}.jar \ - ${pkgdir}/usr/share/java/${pkgname} + install -dv ${pkgdir}/usr/share/java/vtk + mv -v ${pkgdir}/usr/lib/vtk-${pkgver:0:3}/java/vtk.jar \ + ${pkgdir}/usr/share/java/vtk # Install license - install -dv ${pkgdir}/usr/share/licenses/${pkgname} + install -dv ${pkgdir}/usr/share/licenses/vtk install -m644 ${srcdir}/VTK/Copyright.txt \ - ${pkgdir}/usr/share/licenses/${pkgname} + ${pkgdir}/usr/share/licenses/vtk # Put an entry in /etc/ld.so.conf.d install -dv ${pkgdir}/etc/ld.so.conf.d - echo "/usr/lib/${pkgname}-${pkgver:0:3}" > ${pkgdir}/etc/ld.so.conf.d/${pkgname}.conf + echo "/usr/lib/vtk-${pkgver:0:3}" > ${pkgdir}/etc/ld.so.conf.d/vtk.conf } diff --git a/community/vtk/fixkernelversioncheck.diff b/community/vtk/fixkernelversioncheck.diff new file mode 100644 index 000000000..165f07366 --- /dev/null +++ b/community/vtk/fixkernelversioncheck.diff @@ -0,0 +1,19 @@ +--- a/Utilities/vtkhdf5/ConfigureChecks.cmake ++++ b/Utilities/vtkhdf5/ConfigureChecks.cmake +@@ -75,14 +75,14 @@ IF (HDF5_WANT_DCONV_EXCEPTION) + ENDIF (HDF5_WANT_DCONV_EXCEPTION) + + SET (LINUX_LFS 0) +-IF (CMAKE_SYSTEM MATCHES "Linux-([3-9]\\.[0-9]|2\\.[4-9])\\.") ++IF (CMAKE_SYSTEM MATCHES "Linux") + # Linux Specific flags + ADD_DEFINITIONS (-D_POSIX_SOURCE -D_BSD_SOURCE) + OPTION (HDF5_ENABLE_LARGE_FILE "Enable support for large (64-bit) files on Linux." ON) + IF (HDF5_ENABLE_LARGE_FILE) + SET (LARGEFILE 1) + ENDIF (HDF5_ENABLE_LARGE_FILE) +-ENDIF (CMAKE_SYSTEM MATCHES "Linux-([3-9]\\.[0-9]|2\\.[4-9])\\.") ++ENDIF (CMAKE_SYSTEM MATCHES "Linux") + SET (HDF5_EXTRA_FLAGS) + IF (LINUX_LFS) + SET (HDF5_EXTRA_FLAGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE) diff --git a/extra/amule/PKGBUILD b/extra/amule/PKGBUILD index a85e67cc7..14309c383 100644 --- a/extra/amule/PKGBUILD +++ b/extra/amule/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 135112 2011-08-10 10:56:40Z giovanni $ +# $Id: PKGBUILD 136921 2011-09-02 23:48:57Z 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=10598 +pkgver=10602 pkgrel=1 pkgdesc="An eMule-like client for ed2k p2p network" arch=('i686' 'x86_64') @@ -13,7 +13,7 @@ url="http://www.amule.org" license=('GPL') depends=('wxgtk' 'gd' 'geoip' 'libupnp' 'crypto++' 'libsm') source=("http://amule.sourceforge.net/tarballs/aMule-SVN-r${pkgver}.tar.bz2") -md5sums=('3ba206bd0c43c6fb3247e76141fcf148') +md5sums=('17e61b690fa52b7ee5a4e7bf350967a0') build() { cd "${srcdir}/aMule-SVN-r${pkgver}" diff --git a/extra/cups/PKGBUILD b/extra/cups/PKGBUILD index 8b48c8681..46ece794b 100644 --- a/extra/cups/PKGBUILD +++ b/extra/cups/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 135776 2011-08-18 15:04:02Z andyrtr $ +# $Id: PKGBUILD 136886 2011-09-02 16:22:36Z andyrtr $ # Maintainer: Andreas Radke <andyrtr@archlinux.org> pkgbase="cups" pkgname=('libcups' 'cups') -pkgver=1.4.8 -pkgrel=2 +pkgver=1.5.0 +pkgrel=1 arch=('i686' 'x86_64') license=('GPL') url="http://www.cups.org/" @@ -16,10 +16,10 @@ source=(ftp://ftp.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.bz2 cups-no-gcrypt.patch cups cups.logrotate cups.pam) #options=('!emptydirs') -md5sums=('0ec52d3f3c69bc2ab5ed70c594edbce6' - '8ebd390197501ffd709f0ee546937fd5' +md5sums=('e54ed09ede2340fc3014913333520fe4' + 'e0843e8d8c345792ac73a185260e69fe' '9b8467a1e51d360096b70e2c3c081e6c' - 'c9ede95cfc8e76571bd8156f0a573e3b' + '3733c23e77eb503bd94cc368e02830dc' '9657daa21760bb0b5fa3d8b51d5e01a1' 'f861b18f4446c43918c8643dcbbd7f6d' '96f82c38f3f540b53f3e5144900acf17') @@ -28,7 +28,7 @@ md5sums=('0ec52d3f3c69bc2ab5ed70c594edbce6' build() { cd ${srcdir}/${pkgbase}-${pkgver} - # Avahi support in the dnssd backend. patch from Fedora + # Avahi support in the dnssd backend. patch from Debian based on the Fedora work but brings it in a single file http://patch-tracker.debian.org/package/cups patch -Np1 -i ${srcdir}/cups-avahi.patch # Do not export SSL libs in cups-config @@ -51,15 +51,11 @@ build() { --enable-raw-printing \ --enable-dbus --with-dbusdir=/etc/dbus-1 \ --enable-ssl=yes --enable-gnutls \ - --disable-threads \ + --enable-threads \ --enable-avahi\ --with-php=/usr/bin/php-cgi \ --with-pdftops=pdftops \ --with-optim="$CFLAGS" - - #reminder - #Restored support for GNU TLS and OpenSSL with threading enabled (STR #3605) in cups 1.5b1 - make } diff --git a/extra/cups/cups-avahi.patch b/extra/cups/cups-avahi.patch index cf1056a75..7e9c8ecea 100644 --- a/extra/cups/cups-avahi.patch +++ b/extra/cups/cups-avahi.patch @@ -1,15 +1,33 @@ -diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c ---- cups-1.4.5/backend/dnssd.c.avahi 2009-08-08 00:27:12.000000000 +0200 -+++ cups-1.4.5/backend/dnssd.c 2010-11-12 13:13:31.000000000 +0100 -@@ -22,6 +22,7 @@ +Description: Avahi support +Bug: http://www.cups.org/str.php?L3066 +Author: Tim Waugh +Origin: git clone http://twaugh.fedorapeople.org/cups-avahi.git (Aug 11, 2011) + +--- a/backend/dnssd.c ++++ b/backend/dnssd.c +@@ -15,14 +15,21 @@ + * + * Contents: + * ++ * next_txt_record() - Get next TXT record from a cups_txt_records_t. ++ * parse_txt_record_pair() - Read key/value pair in cups_txt_records_t. + * main() - Browse for printers. + * browse_callback() - Browse devices. + * browse_local_callback() - Browse local devices. + * compare_devices() - Compare two devices. * exec_backend() - Execute the backend that corresponds to the * resolved service name. ++ * device_type() - Get DNS-SD type enumeration from string. * get_device() - Create or update a device. -+* find_device() * query_callback() - Process query data. ++ * avahi_client_callback() - Avahi client callback function. ++ * avahi_query_callback() - Avahi query callback function. ++ * avahi_browse_callback() - Avahi browse callback function. ++ * find_device() - Find a device from its name and domain. * sigterm_handler() - Handle termination signals... * unquote() - Unquote a name string. -@@ -33,7 +34,18 @@ + */ +@@ -33,7 +40,18 @@ #include "backend-private.h" #include <cups/array.h> @@ -29,7 +47,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c /* -@@ -52,7 +64,12 @@ typedef enum +@@ -53,7 +71,12 @@ typedef struct { @@ -42,7 +60,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c char *name, /* Service name */ *domain, /* Domain name */ *fullName, /* Full name */ -@@ -64,6 +81,20 @@ typedef struct +@@ -65,6 +88,20 @@ sent; /* Did we list the device? */ } cups_device_t; @@ -63,7 +81,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c /* * Local globals... -@@ -77,6 +108,7 @@ static int job_canceled = 0; +@@ -78,6 +115,7 @@ * Local functions... */ @@ -71,7 +89,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c static void browse_callback(DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, -@@ -92,12 +124,6 @@ static void browse_local_callback(DNSSe +@@ -93,12 +131,6 @@ const char *regtype, const char *replyDomain, void *context); @@ -84,7 +102,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c static void query_callback(DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, -@@ -106,9 +132,111 @@ static void query_callback(DNSServiceRe +@@ -107,9 +139,118 @@ uint16_t rrclass, uint16_t rdlen, const void *rdata, uint32_t ttl, void *context); @@ -123,8 +141,9 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c + + +/* -+ * cups_txt_records_t access functions ++ * 'next_txt_record()' - Get next TXT record from a cups_txt_records_t. + */ ++ +static cups_txt_records_t * +next_txt_record (cups_txt_records_t *txt) +{ @@ -139,6 +158,11 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c + return txt; +} + ++ ++/* ++ * 'parse_txt_record_pair()' - Read key/value pair in cups_txt_records_t. ++ */ ++ +static int +parse_txt_record_pair (cups_txt_records_t *txt) +{ @@ -193,10 +217,11 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c + + return 0; +} ++ /* * 'main()' - Browse for printers. -@@ -119,6 +247,13 @@ main(int argc, /* I - Number of comm +@@ -120,6 +261,13 @@ char *argv[]) /* I - Command-line arguments */ { const char *name; /* Backend name */ @@ -210,7 +235,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c DNSServiceRef main_ref, /* Main service reference */ fax_ipp_ref, /* IPP fax service reference */ ipp_ref, /* IPP service reference */ -@@ -130,12 +265,11 @@ main(int argc, /* I - Number of comm +@@ -133,12 +281,11 @@ pdl_datastream_ref, /* AppSocket service reference */ printer_ref, /* LPD service reference */ riousbprint_ref; /* Remote IO service reference */ @@ -228,7 +253,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c #if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET) struct sigaction action; /* Actions for POSIX signals */ #endif /* HAVE_SIGACTION && !HAVE_SIGSET */ -@@ -194,6 +328,49 @@ main(int argc, /* I - Number of comm +@@ -198,6 +345,49 @@ * Browse for different kinds of printers... */ @@ -243,8 +268,8 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c + 0, avahi_client_callback, NULL, &error); + if (!client) + { -+ perror ("ERROR: Unable to create avahi client"); -+ return (1); ++ perror ("DEBUG: Unable to create avahi client"); ++ return (0); + } + + avahi_service_browser_new (client, AVAHI_IF_UNSPEC, @@ -278,7 +303,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c if (DNSServiceCreateConnection(&main_ref) != kDNSServiceErr_NoError) { perror("ERROR: Unable to create service connection"); -@@ -245,6 +422,7 @@ main(int argc, /* I - Number of comm +@@ -258,6 +448,7 @@ riousbprint_ref = main_ref; DNSServiceBrowse(&riousbprint_ref, kDNSServiceFlagsShareConnection, 0, "_riousbprint._tcp", NULL, browse_callback, devices); @@ -286,7 +311,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c /* * Loop until we are killed... -@@ -252,6 +430,9 @@ main(int argc, /* I - Number of comm +@@ -265,6 +456,9 @@ while (!job_canceled) { @@ -296,7 +321,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c FD_ZERO(&input); FD_SET(fd, &input); -@@ -271,11 +452,35 @@ main(int argc, /* I - Number of comm +@@ -284,11 +478,35 @@ } else { @@ -332,15 +357,15 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c cups_device_t *best; /* Best matching device */ char device_uri[1024]; /* Device URI */ int count; /* Number of queries */ -@@ -285,6 +490,7 @@ main(int argc, /* I - Number of comm - best = NULL, count = 0; - device; - device = (cups_device_t *)cupsArrayNext(devices)) +@@ -302,6 +520,7 @@ + if (device->sent) + sent ++; + +#ifdef HAVE_DNSSD - if (!device->ref && !device->sent) - { - /* -@@ -313,14 +519,23 @@ main(int argc, /* I - Number of comm + if (device->ref) + count ++; + +@@ -333,14 +552,23 @@ count ++; } } @@ -365,30 +390,15 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c if (!best) best = device; -@@ -372,6 +587,7 @@ main(int argc, /* I - Number of comm - * 'browse_callback()' - Browse devices. - */ - -+#ifdef HAVE_DNSSD - static void - browse_callback( - DNSServiceRef sdRef, /* I - Service reference */ -@@ -405,12 +621,14 @@ browse_callback( - - get_device((cups_array_t *)context, serviceName, regtype, replyDomain); +@@ -401,6 +629,7 @@ } -+#endif /* HAVE_DNSSD */ ++#ifdef HAVE_DNSSD /* - * 'browse_local_callback()' - Browse local devices. + * 'browse_callback()' - Browse devices. */ - -+#ifdef HAVE_DNSSD - static void - browse_local_callback( - DNSServiceRef sdRef, /* I - Service reference */ -@@ -456,6 +674,7 @@ browse_local_callback( +@@ -489,6 +718,7 @@ device->fullName); device->sent = 1; } @@ -396,25 +406,32 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c /* -@@ -528,6 +747,32 @@ exec_backend(char **argv) /* I - Comman - exit(CUPS_BACKEND_STOP); - } +@@ -569,6 +799,41 @@ + + /* ++ * 'device_type()' - Get DNS-SD type enumeration from string. ++ */ ++ +static int +device_type (const char *regtype) +{ +#ifdef HAVE_AVAHI -+ if (!strcmp(regtype, "_ipp._tcp") || -+ !strcmp(regtype, "_ipp-tls._tcp")) ++ if (!strcmp(regtype, "_ipp._tcp")) + return (CUPS_DEVICE_IPP); ++ else if (!strcmp(regtype, "_ipps._tcp") || ++ !strcmp(regtype, "_ipp-tls._tcp")) ++ return (CUPS_DEVICE_IPPS); + else if (!strcmp(regtype, "_fax-ipp._tcp")) + return (CUPS_DEVICE_FAX_IPP); + else if (!strcmp(regtype, "_printer._tcp")) + return (CUPS_DEVICE_PDL_DATASTREAM); +#else -+ if (!strcmp(regtype, "_ipp._tcp.") || -+ !strcmp(regtype, "_ipp-tls._tcp.")) ++ if (!strcmp(regtype, "_ipp._tcp.")) + return (CUPS_DEVICE_IPP); ++ else if (!strcmp(regtype, "_ipps._tcp.") || ++ !strcmp(regtype, "_ipp-tls._tcp.")) ++ return (CUPS_DEVICE_IPPS); + else if (!strcmp(regtype, "_fax-ipp._tcp.")) + return (CUPS_DEVICE_FAX_IPP); + else if (!strcmp(regtype, "_printer._tcp.")) @@ -426,17 +443,21 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c + return (CUPS_DEVICE_RIOUSBPRINT); +} + - - /* ++ ++/* * 'get_device()' - Create or update a device. -@@ -550,18 +795,7 @@ get_device(cups_array_t *devices, /* I - + */ + +@@ -589,20 +854,7 @@ */ key.name = (char *)serviceName; - -- if (!strcmp(regtype, "_ipp._tcp.") || -- !strcmp(regtype, "_ipp-tls._tcp.")) +- if (!strcmp(regtype, "_ipp._tcp.")) - key.type = CUPS_DEVICE_IPP; +- else if (!strcmp(regtype, "_ipps._tcp.") || +- !strcmp(regtype, "_ipp-tls._tcp.")) +- key.type = CUPS_DEVICE_IPPS; - else if (!strcmp(regtype, "_fax-ipp._tcp.")) - key.type = CUPS_DEVICE_FAX_IPP; - else if (!strcmp(regtype, "_printer._tcp.")) @@ -449,7 +470,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c for (device = cupsArrayFind(devices, &key); device; -@@ -581,8 +815,14 @@ get_device(cups_array_t *devices, /* I - +@@ -622,8 +874,14 @@ free(device->domain); device->domain = strdup(replyDomain); @@ -464,7 +485,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c free(device->fullName); device->fullName = strdup(fullName); } -@@ -602,6 +842,9 @@ get_device(cups_array_t *devices, /* I - +@@ -643,6 +901,9 @@ device->domain = strdup(replyDomain); device->type = key.type; device->priority = 50; @@ -474,7 +495,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c cupsArrayAdd(devices, device); -@@ -609,7 +852,13 @@ get_device(cups_array_t *devices, /* I - +@@ -650,13 +911,20 @@ * Set the "full name" of this service, which is used for queries... */ @@ -488,15 +509,14 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c device->fullName = strdup(fullName); return (device); -@@ -620,6 +869,7 @@ get_device(cups_array_t *devices, /* I - - * 'query_callback()' - Process query data. - */ + } + +#ifdef HAVE_DNSSD - static void - query_callback( - DNSServiceRef sdRef, /* I - Service reference */ -@@ -639,7 +889,7 @@ query_callback( + /* + * 'query_callback()' - Process query data. + */ +@@ -680,7 +948,7 @@ *ptr; /* Pointer into string */ cups_device_t dkey, /* Search key */ *device; /* Device */ @@ -505,13 +525,15 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c fprintf(stderr, "DEBUG2: query_callback(sdRef=%p, flags=%x, " "interfaceIndex=%d, errorCode=%d, fullName=\"%s\", " -@@ -673,84 +923,212 @@ query_callback( +@@ -714,94 +982,233 @@ if ((ptr = strstr(name, "._")) != NULL) *ptr = '\0'; -- if (strstr(fullName, "_ipp._tcp.") || -- strstr(fullName, "_ipp-tls._tcp.")) +- if (strstr(fullName, "_ipp._tcp.")) - dkey.type = CUPS_DEVICE_IPP; +- else if (strstr(fullName, "_ipps._tcp.") || +- strstr(fullName, "_ipp-tls._tcp.")) +- dkey.type = CUPS_DEVICE_IPPS; - else if (strstr(fullName, "_fax-ipp._tcp.")) - dkey.type = CUPS_DEVICE_FAX_IPP; - else if (strstr(fullName, "_printer._tcp.")) @@ -528,7 +550,12 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c +} +#endif /* HAVE_DNSSD */ + ++ +#ifdef HAVE_AVAHI ++/* ++ * 'avahi_client_callback()' - Avahi client callback function. ++ */ ++ +static void +avahi_client_callback(AvahiClient *client, + AvahiClientState state, @@ -545,6 +572,11 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c + } +} + ++ ++/* ++ * 'avahi_query_callback()' - Avahi query callback function. ++ */ ++ +static void +avahi_query_callback(AvahiServiceResolver *resolver, + AvahiIfIndex interface, @@ -614,6 +646,11 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c + avahi_service_resolver_free (resolver); +} + ++ ++/* ++ * 'avahi_browse_callback()' - Avahi browse callback function. ++ */ ++ +static void +avahi_browse_callback(AvahiServiceBrowser *browser, + AvahiIfIndex interface, @@ -671,16 +708,21 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c + } + + break; - -- for (device = cupsArrayFind(devices, &dkey); ++ + case AVAHI_BROWSER_REMOVE: + case AVAHI_BROWSER_ALL_FOR_NOW: + case AVAHI_BROWSER_CACHE_EXHAUSTED: + break; -+ } ++ } +} +#endif /* HAVE_AVAHI */ + + +- for (device = cupsArrayFind(devices, &dkey); ++/* ++ * 'find_device()' - Find a device from its name and domain. ++ */ ++ +static cups_device_t * +find_device (cups_array_t *devices, + cups_txt_records_t *txt, @@ -693,10 +735,10 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c device; device = cupsArrayNext(devices)) { -- if (strcasecmp(device->name, dkey.name) || -- strcasecmp(device->domain, dkey.domain)) -+ if (strcasecmp(device->name, dkey->name) || -+ strcasecmp(device->domain, dkey->domain)) +- if (_cups_strcasecmp(device->name, dkey.name) || +- _cups_strcasecmp(device->domain, dkey.domain)) ++ if (_cups_strcasecmp(device->name, dkey->name) || ++ _cups_strcasecmp(device->domain, dkey->domain)) { device = NULL; break; @@ -745,13 +787,13 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c - break; - - datanext = data + datalen; -+ char *key; -+ char *value; - +- - for (ptr = key; data < datanext && *data != '='; data ++) - *ptr++ = *data; - *ptr = '\0'; -- ++ char *key; ++ char *value; + - if (data < datanext && *data == '=') - { - data ++; @@ -759,18 +801,27 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c - if (data < datanext) - memcpy(value, data, datanext - data); - value[datanext - data] = '\0'; -- } -- else -- continue; + if (parse_txt_record_pair (txt)) + goto next; +- fprintf(stderr, "DEBUG2: query_callback: \"%s=%s\".\n", +- key, value); +- } +- else +- { +- fprintf(stderr, "DEBUG2: query_callback: \"%s\" with no value.\n", +- key); +- continue; +- } +- +- if (!_cups_strncasecmp(key, "usb_", 4)) + key = txt->key; + value = txt->value; - if (!strncasecmp(key, "usb_", 4)) ++ if (!strncasecmp(key, "usb_", 4)) { /* -@@ -805,6 +1183,10 @@ query_callback( + * Add USB device ID information... +@@ -856,6 +1263,10 @@ if (device->type == CUPS_DEVICE_PRINTER) device->sent = 1; } @@ -781,7 +832,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c } if (device->device_id) -@@ -854,11 +1236,9 @@ query_callback( +@@ -905,11 +1316,9 @@ } } @@ -794,27 +845,9 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c /* * 'sigterm_handler()' - Handle termination signals... */ -diff -up cups-1.4.5/config.h.in.avahi cups-1.4.5/config.h.in ---- cups-1.4.5/config.h.in.avahi 2010-08-13 06:11:46.000000000 +0200 -+++ cups-1.4.5/config.h.in 2010-11-12 13:13:31.000000000 +0100 -@@ -344,6 +344,13 @@ - - - /* -+ * Do we have Avahi for DNS Service Discovery? -+ */ -+ -+#undef HAVE_AVAHI -+ -+ -+/* - * Do we have <sys/ioctl.h>? - */ - -diff -up cups-1.4.5/config-scripts/cups-dnssd.m4.avahi cups-1.4.5/config-scripts/cups-dnssd.m4 ---- cups-1.4.5/config-scripts/cups-dnssd.m4.avahi 2009-08-29 00:54:34.000000000 +0200 -+++ cups-1.4.5/config-scripts/cups-dnssd.m4 2010-11-12 13:13:31.000000000 +0100 -@@ -27,6 +27,21 @@ AC_ARG_WITH(dnssd-includes, [ --with-dn +--- a/config-scripts/cups-dnssd.m4 ++++ b/config-scripts/cups-dnssd.m4 +@@ -23,6 +23,21 @@ DNSSDLIBS="" DNSSD_BACKEND="" @@ -836,12 +869,38 @@ diff -up cups-1.4.5/config-scripts/cups-dnssd.m4.avahi cups-1.4.5/config-scripts if test x$enable_dnssd != xno; then AC_CHECK_HEADER(dns_sd.h, [ case "$uname" in -diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c ---- cups-1.4.5/cups/http-support.c.avahi 2010-10-02 00:40:38.000000000 +0200 -+++ cups-1.4.5/cups/http-support.c 2010-11-12 13:28:45.000000000 +0100 -@@ -55,6 +55,11 @@ - # include <dns_sd.h> - # include <poll.h> +--- a/config.h.in ++++ b/config.h.in +@@ -390,6 +390,13 @@ + + + /* ++ * Do we have Avahi for DNS Service Discovery? ++ */ ++ ++#undef HAVE_AVAHI ++ ++ ++/* + * Do we have <sys/ioctl.h>? + */ + +--- a/cups/http-support.c ++++ b/cups/http-support.c +@@ -43,6 +43,10 @@ + * http_copy_decode() - Copy and decode a URI. + * http_copy_encode() - Copy and encode a URI. + * http_resolve_cb() - Build a device URI for the given service name. ++ * avahi_resolve_uri_client_cb() ++ * - Avahi client callback for resolving URI. ++ * avahi_resolve_uri_resolver_cb() ++ * - Avahi resolver callback for resolving URI. + */ + + /* +@@ -60,6 +64,11 @@ + # include <sys/select.h> + # endif /* WIN32 */ #endif /* HAVE_DNSSD */ +#ifdef HAVE_AVAHI +# include <avahi-client/client.h> @@ -851,8 +910,8 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c /* -@@ -121,6 +126,24 @@ static void resolve_callback(DNSService - void *context); +@@ -127,6 +136,24 @@ + void *context); #endif /* HAVE_DNSSD */ +#ifdef HAVE_AVAHI @@ -876,7 +935,7 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c /* * 'httpAssembleURI()' - Assemble a uniform resource identifier from its -@@ -1351,16 +1374,27 @@ _httpResolveURI( +@@ -1431,6 +1458,9 @@ if (strstr(hostname, "._tcp")) { @@ -884,15 +943,12 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c + char *regtype, /* Pointer to type in hostname */ + *domain; /* Pointer to domain in hostname */ #ifdef HAVE_DNSSD - DNSServiceRef ref, /* DNS-SD master service reference */ - domainref, /* DNS-SD service reference for domain */ - localref; /* DNS-SD service reference for .local */ - int domainsent = 0, /* Send the domain resolve? */ - offline = 0; /* offline-report state set? */ -- char *regtype, /* Pointer to type in hostname */ -- *domain; /* Pointer to domain in hostname */ - _http_uribuf_t uribuf; /* URI buffer */ - struct pollfd polldata; /* Polling data */ + # ifdef WIN32 + # pragma comment(lib, "dnssd.lib") +@@ -1449,6 +1479,17 @@ + fd_set input_set; /* Input set for select() */ + struct timeval stimeout; /* Timeout value for select() */ + #endif /* HAVE_POLL */ +#else /* HAVE_AVAHI */ + AvahiSimplePoll *simple_poll; + AvahiClient *client; @@ -903,24 +959,28 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c + _http_uribuf_t uribuf; + } user_data; +#endif /* HAVE_DNSSD */ ++ - - if (logit) -@@ -1398,8 +1432,13 @@ _httpResolveURI( + if (options & _HTTP_RESOLVE_STDERR) + fprintf(stderr, "DEBUG: Resolving \"%s\"...\n", hostname); +@@ -1485,9 +1526,16 @@ if (domain) *domain++ = '\0'; +#ifdef HAVE_DNSSD - uribuf.buffer = resolved_uri; - uribuf.bufsize = resolved_size; + uribuf.buffer = resolved_uri; + uribuf.bufsize = resolved_size; + uribuf.options = options; +#else + user_data.uribuf.buffer = resolved_uri; + user_data.uribuf.bufsize = resolved_size; ++ user_data.uribuf.options = options; +#endif - ++ resolved_uri[0] = '\0'; -@@ -1414,6 +1453,7 @@ _httpResolveURI( + DEBUG_printf(("6_httpResolveURI: Resolving hostname=\"%s\", regtype=\"%s\", " +@@ -1501,6 +1549,7 @@ uri = NULL; @@ -928,7 +988,7 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c if (DNSServiceCreateConnection(&ref) == kDNSServiceErr_NoError) { localref = ref; -@@ -1500,6 +1540,36 @@ _httpResolveURI( +@@ -1608,6 +1657,36 @@ DNSServiceRefDeallocate(ref); } @@ -963,9 +1023,9 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c + } +#endif /* HAVE_DNSSD */ - if (logit) + if (options & _HTTP_RESOLVE_STDERR) { -@@ -1511,13 +1581,13 @@ _httpResolveURI( +@@ -1619,13 +1698,13 @@ fputs("STATE: -connecting-to-device,offline-report\n", stderr); } @@ -979,13 +1039,17 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c -#endif /* HAVE_DNSSD */ +#endif /* HAVE_DNSSD || HAVE_AVAHI */ - if (logit && !uri) - _cupsLangPuts(stderr, _("Unable to find printer!\n")); -@@ -1722,6 +1792,105 @@ resolve_callback( - } + if ((options & _HTTP_RESOLVE_STDERR) && !uri) + _cupsLangPrintFilter(stderr, "ERROR", _("Unable to find printer.")); +@@ -1895,6 +1974,116 @@ #endif /* HAVE_DNSSD */ + +#ifdef HAVE_AVAHI ++/* ++ * 'avahi_resolve_uri_client_cb()' - Avahi client callback for resolving URI. ++ */ ++ +static void +avahi_resolve_uri_client_cb (AvahiClient *client, + AvahiClientState state, @@ -1002,6 +1066,12 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c + avahi_simple_poll_quit (simple_poll); +} + ++ ++/* ++ * 'avahi_resolve_uri_resolver_cb()' - Avahi resolver callback for resolving ++ * URI. ++ */ ++ +static void +avahi_resolve_uri_resolver_cb (AvahiServiceResolver *resolver, + AvahiIfIndex interface, @@ -1084,6 +1154,2003 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c +} +#endif /* HAVE_AVAHI */ + ++ + /* + * End of "$Id: http-support.c 9820 2011-06-10 22:06:26Z mike $". + */ +--- a/scheduler/Makefile ++++ b/scheduler/Makefile +@@ -17,6 +17,7 @@ + + CUPSDOBJS = \ + auth.o \ ++ avahi.o \ + banners.o \ + cert.o \ + classes.o \ +@@ -39,7 +40,8 @@ + server.o \ + statbuf.o \ + subscriptions.o \ +- sysman.o ++ sysman.o \ ++ timeout.o + LIBOBJS = \ + filter.o \ + mime.o \ +--- /dev/null ++++ b/scheduler/avahi.c +@@ -0,0 +1,445 @@ ++/* ++ * "$Id$" ++ * ++ * Avahi poll implementation for the CUPS scheduler. ++ * ++ * Copyright (C) 2010 Red Hat, Inc. ++ * Authors: ++ * Tim Waugh <twaugh@redhat.com> ++ * ++ * Distribution and use rights are outlined in the file "LICENSE.txt" ++ * "LICENSE" which should have been included with this file. If this ++ * file is missing or damaged, see the license at "http://www.cups.org/". ++ * ++ * Contents: ++ * ++ * watch_read_cb - Read callback for file descriptor ++ * watch_write_cb - Write callback for file descriptor ++ * watched_fd_add_select() - Call cupsdAddSelect() as needed ++ * watch_new() - Create a new file descriptor watch ++ * watch_free() - Free a file descriptor watch ++ * watch_update() - Update watched events for a file descriptor ++ * watch_get_events() - Get events that happened for a file descriptor ++ * timeout_cb() - Run a timed Avahi callback ++ * timeout_new() - Set a wakeup time ++ * timeout_update() - Update the expiration time for a timeout ++ * timeout_free() - Free a timeout ++ * compare_watched_fds() - Compare watched file descriptors for array sorting ++ * compare_timeouts() - Compare timeouts for array sorting ++ * avahi_cups_poll_new() - Create a new Avahi main loop object for CUPS ++ * avahi_cups_poll_free() - Free an Avahi main loop object for CUPS ++ * avahi_cups_poll_get() - Get the abstract poll API structure ++ */ ++ ++#include <config.h> ++ ++#ifdef HAVE_AVAHI /* Applies to entire file... */ ++ ++/* ++ * Include necessary headers... ++ */ ++ ++#include "cupsd.h" ++ ++#if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO) ++# include <malloc.h> ++#endif /* HAVE_MALLOC_H && HAVE_MALLINFO */ ++ ++#ifdef HAVE_AVAHI ++# include <avahi-common/timeval.h> ++#endif /* HAVE_AVAHI */ ++ ++ ++typedef struct ++{ ++ AvahiCupsPoll *cups_poll; ++ ++ int fd; ++ AvahiWatchEvent occurred; ++ cups_array_t *watches; ++} cupsd_watched_fd_t; ++ ++struct AvahiWatch ++{ ++ cupsd_watched_fd_t *watched_fd; ++ ++ AvahiWatchEvent events; ++ AvahiWatchCallback callback; ++ void *userdata; ++}; ++ ++struct AvahiTimeout ++{ ++ AvahiCupsPoll *cups_poll; ++ AvahiTimeoutCallback callback; ++ void *userdata; ++ cupsd_timeout_t *cupsd_timeout; ++}; ++ ++/* ++ * Local functions... ++ */ ++ ++static AvahiWatch * watch_new(const AvahiPoll *api, ++ int fd, ++ AvahiWatchEvent events, ++ AvahiWatchCallback callback, ++ void *userdata); ++static void watch_free(AvahiWatch *watch); ++static void watch_update(AvahiWatch *watch, ++ AvahiWatchEvent events); ++static AvahiWatchEvent watch_get_events(AvahiWatch *watch); ++static int compare_watches(AvahiWatch *p0, ++ AvahiWatch *p1); ++ ++ ++/* ++ * 'watch_read_cb' - Read callback for file descriptor ++ */ ++ ++static void ++watch_read_cb (void *userdata) ++{ ++ AvahiWatch *watch; ++ cupsd_watched_fd_t *watched_fd = userdata; ++ watched_fd->occurred |= AVAHI_WATCH_IN; ++ for (watch = (AvahiWatch *)cupsArrayFirst(watched_fd->watches); ++ watch; ++ watch = (AvahiWatch *)cupsArrayNext(watched_fd->watches)) { ++ if (watch->events & watched_fd->occurred) { ++ (watch->callback) (watch, watched_fd->fd, ++ AVAHI_WATCH_IN, watch->userdata); ++ watched_fd->occurred &= ~AVAHI_WATCH_IN; ++ break; ++ } ++ } ++} ++ ++ ++/* ++ * 'watch_write_cb' - Write callback for file descriptor ++ */ ++ ++static void ++watch_write_cb (void *userdata) ++{ ++ AvahiWatch *watch; ++ cupsd_watched_fd_t *watched_fd = userdata; ++ watched_fd->occurred |= AVAHI_WATCH_OUT; ++ for (watch = (AvahiWatch *)cupsArrayFirst(watched_fd->watches); ++ watch; ++ watch = (AvahiWatch *)cupsArrayNext(watched_fd->watches)) { ++ if (watch->events & watched_fd->occurred) { ++ (watch->callback) (watch, watched_fd->fd, ++ AVAHI_WATCH_OUT, watch->userdata); ++ watched_fd->occurred &= ~AVAHI_WATCH_OUT; ++ break; ++ } ++ } ++} ++ ++ ++/* ++ * 'watched_fd_add_select' - Call cupsdAddSelect() as needed ++ */ ++ ++static int /* O - Watches? */ ++watched_fd_add_select (cupsd_watched_fd_t *watched_fd) ++{ ++ AvahiWatch *watch; ++ cupsd_selfunc_t read_cb = NULL, write_cb = NULL; ++ ++ for (watch = (AvahiWatch *)cupsArrayFirst(watched_fd->watches); ++ watch; ++ watch = (AvahiWatch *)cupsArrayNext(watched_fd->watches)) { ++ if (watch->events & (AVAHI_WATCH_IN | ++ AVAHI_WATCH_ERR | ++ AVAHI_WATCH_HUP)) { ++ read_cb = (cupsd_selfunc_t)watch_read_cb; ++ if (write_cb != NULL) ++ break; ++ } ++ ++ if (watch->events & AVAHI_WATCH_OUT) { ++ write_cb = (cupsd_selfunc_t)watch_write_cb; ++ if (read_cb != NULL) ++ break; ++ } ++ } ++ ++ if (read_cb || write_cb) ++ cupsdAddSelect (watched_fd->fd, read_cb, write_cb, watched_fd); ++ else ++ cupsdRemoveSelect (watched_fd->fd); ++ ++ return (read_cb || write_cb); ++} ++ ++/* ++ * 'watch_new' - Create a new file descriptor watch ++ */ ++ ++static AvahiWatch * ++watch_new (const AvahiPoll *api, ++ int fd, ++ AvahiWatchEvent events, ++ AvahiWatchCallback callback, ++ void *userdata) ++{ ++ cupsd_watched_fd_t key, *watched_fd; ++ AvahiCupsPoll *cups_poll = api->userdata; ++ AvahiWatch *watch = malloc(sizeof(AvahiWatch)); ++ if (watch == NULL) ++ return (NULL); ++ ++ watch->events = events; ++ watch->callback = callback; ++ watch->userdata = userdata; ++ ++ key.fd = fd; ++ watched_fd = cupsArrayFind (cups_poll->watched_fds, &key); ++ if (watched_fd == NULL) { ++ watched_fd = malloc(sizeof(cupsd_watched_fd_t)); ++ if (watched_fd == NULL) { ++ free (watch); ++ return (NULL); ++ } ++ ++ watched_fd->fd = fd; ++ watched_fd->occurred = 0; ++ watched_fd->cups_poll = cups_poll; ++ watched_fd->watches = cupsArrayNew ((cups_array_func_t)compare_watches, ++ NULL); ++ } ++ ++ watch->watched_fd = watched_fd; ++ cupsArrayAdd(watched_fd->watches, watch); ++ watched_fd_add_select (watched_fd); ++ return (watch); ++} ++ ++ ++/* ++ * 'watch_free' - Free a file descriptor watch ++ */ ++ ++static void ++watch_free (AvahiWatch *watch) ++{ ++ cupsd_watched_fd_t *watched_fd = watch->watched_fd; ++ AvahiCupsPoll *cups_poll = watched_fd->cups_poll; ++ ++ cupsArrayRemove (watched_fd->watches, watch); ++ free (watch); ++ ++ if (!watched_fd_add_select (watched_fd)) { ++ /* No more watches */ ++ cupsArrayRemove (cups_poll->watched_fds, watched_fd); ++ free (watched_fd); ++ } ++} ++ ++ ++/* ++ * 'watch_update' - Update watched events for a file descriptor ++ */ ++ ++static void ++watch_update (AvahiWatch *watch, ++ AvahiWatchEvent events) ++{ ++ watch->events = events; ++ watched_fd_add_select (watch->watched_fd); ++} ++ ++ ++/* ++ * 'watch_get_events' - Get events that happened for a file descriptor ++ */ ++ ++static AvahiWatchEvent ++watch_get_events (AvahiWatch *watch) ++{ ++ return (watch->watched_fd->occurred); ++} ++ ++ ++/* ++ * 'compare_watches' - Compare watches for array sorting ++ */ ++ ++static int ++compare_watches (AvahiWatch *p0, ++ AvahiWatch *p1) ++{ ++ if (p0->watched_fd->fd < p1->watched_fd->fd) ++ return (-1); ++ ++ return ((p0->watched_fd->fd == p1->watched_fd->fd) ? 0 : 1); ++} ++ ++ ++/* ++ * 'timeout_cb()' - Run a timed Avahi callback ++ */ ++ ++static void ++timeout_cb (cupsd_timeout_t *cupsd_timeout, void *userdata) ++{ ++ AvahiTimeout *timeout = userdata; ++ (timeout->callback) (timeout, timeout->userdata); ++} ++ ++ ++/* ++ * 'timeout_new' - Set a wakeup time ++ */ ++ ++static AvahiTimeout * ++timeout_new (const AvahiPoll *api, ++ const struct timeval *tv, ++ AvahiTimeoutCallback callback, ++ void *userdata) ++{ ++ AvahiTimeout *timeout; ++ AvahiCupsPoll *cups_poll = api->userdata; ++ ++ timeout = malloc(sizeof(AvahiTimeout)); ++ if (timeout == NULL) ++ return (NULL); ++ ++ timeout->cups_poll = cups_poll; ++ timeout->callback = callback; ++ timeout->userdata = userdata; ++ timeout->cupsd_timeout = cupsdAddTimeout (tv, ++ (cupsd_timeoutfunc_t)timeout_cb, ++ timeout); ++ cupsArrayAdd (cups_poll->timeouts, timeout); ++ return (timeout); ++} ++ ++ ++/* ++ * 'timeout_update' - Update the expiration time for a timeout ++ */ ++ ++static void ++timeout_update (AvahiTimeout *timeout, ++ const struct timeval *tv) ++{ ++ cupsdUpdateTimeout (timeout->cupsd_timeout, tv); ++} ++ ++ ++/* ++ * ' timeout_free' - Free a timeout ++ */ ++ ++static void ++timeout_free (AvahiTimeout *timeout) ++{ ++ cupsArrayRemove (timeout->cups_poll->timeouts, timeout); ++ cupsdRemoveTimeout (timeout->cupsd_timeout); ++ free (timeout); ++} ++ ++ ++/* ++ * 'compare_watched_fds' - Compare watched file descriptors for array sorting ++ */ ++static int ++compare_watched_fds(cupsd_watched_fd_t *p0, ++ cupsd_watched_fd_t *p1) ++{ ++ if (p0->fd != p1->fd) ++ return (p0->fd < p1->fd ? -1 : 1); ++ ++ if (p0 == p1) ++ return (0); ++ ++ return (p0 < p1 ? -1 : 1); ++} ++ ++ ++/* ++ * 'compare_timeouts' - Compare timeouts for array sorting ++ */ ++static int ++compare_timeouts(AvahiTimeout *p0, ++ AvahiTimeout *p1) ++{ ++ /* ++ * Just compare pointers to make it a stable sort. ++ */ ++ ++ if (p0->cupsd_timeout < p1->cupsd_timeout) ++ return (-1); ++ return ((p0->cupsd_timeout == p1->cupsd_timeout) ? 0 : 1); ++} ++ ++ ++/* ++ * 'avahi_cups_poll_new' - Create a new Avahi main loop object for CUPS ++ */ ++ ++AvahiCupsPoll * ++avahi_cups_poll_new (void) ++{ ++ AvahiCupsPoll *cups_poll = malloc(sizeof(AvahiCupsPoll)); ++ if (cups_poll == NULL) ++ return (NULL); ++ ++ cups_poll->watched_fds = cupsArrayNew ((cups_array_func_t)compare_watched_fds, ++ NULL); ++ cups_poll->timeouts = cupsArrayNew ((cups_array_func_t)compare_timeouts, ++ NULL); ++ ++ cups_poll->api.userdata = cups_poll; ++ cups_poll->api.watch_new = watch_new; ++ cups_poll->api.watch_free = watch_free; ++ cups_poll->api.watch_update = watch_update; ++ cups_poll->api.watch_get_events = watch_get_events; ++ ++ cups_poll->api.timeout_new = timeout_new; ++ cups_poll->api.timeout_update = timeout_update; ++ cups_poll->api.timeout_free = timeout_free; ++ ++ return (cups_poll); ++} ++ ++ ++/* ++ * 'avahi_cups_poll_free' - Free an Avahi main loop object for CUPS ++ */ ++void ++avahi_cups_poll_free (AvahiCupsPoll *cups_poll) ++{ ++ cupsd_watched_fd_t *watched_fd; ++ ++ for (watched_fd = (cupsd_watched_fd_t*)cupsArrayFirst(cups_poll->watched_fds); ++ watched_fd; ++ watched_fd = (cupsd_watched_fd_t*)cupsArrayNext(cups_poll->watched_fds)){ ++ cupsArrayClear (watched_fd->watches); ++ } ++ ++ cupsArrayClear (cups_poll->watched_fds); ++ cupsArrayClear (cups_poll->timeouts); ++} ++ ++ ++/* ++ * 'avahi_cups_poll_get' - Get the abstract poll API structure ++ */ ++ ++const AvahiPoll * ++avahi_cups_poll_get (AvahiCupsPoll *cups_poll) ++{ ++ return (&cups_poll->api); ++} ++ ++ ++#endif /* HAVE_AVAHI ... from top of file */ ++ ++/* ++ * End of "$Id$". ++ */ +--- /dev/null ++++ b/scheduler/avahi.h +@@ -0,0 +1,49 @@ ++/* ++ * "$Id$" ++ * ++ * Avahi poll implementation for the CUPS scheduler. ++ * ++ * Copyright (C) 2010 Red Hat, Inc. ++ * Authors: ++ * Tim Waugh <twaugh@redhat.com> ++ * ++ * Distribution and use rights are outlined in the file "LICENSE.txt" ++ * which should have been included with this file. If this file is ++ * file is missing or damaged, see the license at "http://www.cups.org/". ++ */ ++ ++#include <config.h> ++ ++#ifdef HAVE_AVAHI ++# include <avahi-client/client.h> ++# include <avahi-client/publish.h> ++#endif /* HAVE_AVAHI */ ++ ++#ifdef HAVE_AUTHORIZATION_H ++# include <Security/Authorization.h> ++#endif /* HAVE_AUTHORIZATION_H */ ++ ++ ++#ifdef HAVE_AVAHI ++typedef struct ++{ ++ AvahiPoll api; ++ cups_array_t *watched_fds; ++ cups_array_t *timeouts; ++} AvahiCupsPoll; ++#endif /* HAVE_AVAHI */ ++ ++/* ++ * Prototypes... ++ */ ++ ++#ifdef HAVE_AVAHI ++extern AvahiCupsPoll * avahi_cups_poll_new(void); ++extern void avahi_cups_poll_free(AvahiCupsPoll *cups_poll); ++extern const AvahiPoll *avahi_cups_poll_get(AvahiCupsPoll *cups_poll); ++#endif /* HAVE_AVAHI */ ++ ++ ++/* ++ * End of "$Id$". ++ */ +--- a/scheduler/cupsd.h ++++ b/scheduler/cupsd.h +@@ -140,6 +140,15 @@ + + typedef void (*cupsd_selfunc_t)(void *data); + ++#ifdef HAVE_AVAHI ++/* ++ * Timeout callback function type... ++ */ ++ ++typedef struct _cupsd_timeout_s cupsd_timeout_t; ++typedef void (*cupsd_timeoutfunc_t)(cupsd_timeout_t *timeout, void *data); ++#endif /* HAVE_AVAHI */ ++ + + /* + * Globals... +@@ -173,6 +182,11 @@ + /* Running from launchd */ + #endif /* HAVE_LAUNCH_H */ + ++#ifdef HAVE_AVAHI ++VAR cups_array_t *Timeouts; /* Timed callbacks for main loop */ ++#endif /* HAVE_AVAHI */ ++ ++ + + /* + * Prototypes... +@@ -242,6 +256,20 @@ + extern void cupsdStartServer(void); + extern void cupsdStopServer(void); + ++#ifdef HAVE_AVAHI ++extern void cupsdInitTimeouts(void); ++extern cupsd_timeout_t *cupsdAddTimeout (const struct timeval *tv, ++ cupsd_timeoutfunc_t cb, ++ void *data); ++extern cupsd_timeout_t *cupsdNextTimeout (long *delay); ++extern void cupsdRunTimeout (cupsd_timeout_t *timeout); ++extern void cupsdUpdateTimeout (cupsd_timeout_t *timeout, ++ const struct timeval *tv); ++extern void cupsdRemoveTimeout (cupsd_timeout_t *timeout); ++#endif /* HAVE_AVAHI */ ++ ++extern int cupsdRemoveFile(const char *filename); ++ + + /* + * End of "$Id: cupsd.h 9766 2011-05-11 22:17:34Z mike $". +--- a/scheduler/main.c ++++ b/scheduler/main.c +@@ -122,6 +122,10 @@ + cupsd_listener_t *lis; /* Current listener */ + time_t current_time, /* Current time */ + activity, /* Client activity timer */ ++#ifdef HAVE_AVAHI ++ avahi_client_time, /* Time for next Avahi client ++ check */ ++#endif /* HAVE_AVAHI */ + browse_time, /* Next browse send time */ + senddoc_time, /* Send-Document time */ + expire_time, /* Subscription expire time */ +@@ -148,6 +152,10 @@ + int launchd_idle_exit; + /* Idle exit on select timeout? */ + #endif /* HAVE_LAUNCHD */ ++#ifdef HAVE_AVAHI ++ cupsd_timeout_t *tmo; /* Next scheduled timed callback */ ++ long tmo_delay; /* Time before it must be called */ ++#endif /* HAVE_AVAHI */ + + + #ifdef HAVE_GETEUID +@@ -527,6 +535,14 @@ + + httpInitialize(); + ++#ifdef HAVE_AVAHI ++ /* ++ * Initialize timed callback structures. ++ */ ++ ++ cupsdInitTimeouts(); ++#endif /* HAVE_AVAHI */ ++ + cupsdStartServer(); + + /* +@@ -657,6 +673,9 @@ + */ + + current_time = time(NULL); ++#ifdef HAVE_AVAHI ++ avahi_client_time = current_time; ++#endif /* HAVE_AVAHI */ + browse_time = current_time; + event_time = current_time; + expire_time = current_time; +@@ -871,6 +890,26 @@ + } + #endif /* __APPLE__ */ + ++#ifdef HAVE_AVAHI ++ /* ++ * If a timed callback is due, run it. ++ */ ++ ++ tmo = cupsdNextTimeout (&tmo_delay); ++ if (tmo && tmo_delay == 0) ++ cupsdRunTimeout (tmo); ++ ++ /* ++ * Try to restart the Avahi client every 10 seconds if needed... ++ */ ++ ++ if ((current_time - avahi_client_time) >= 10) ++ { ++ avahi_client_time = current_time; ++ cupsdStartAvahiClient(); ++ } ++#endif /* HAVE_AVAHI */ ++ + #ifndef __APPLE__ + /* + * Update the network interfaces once a minute... +@@ -1815,6 +1854,10 @@ + cupsd_job_t *job; /* Job information */ + cupsd_subscription_t *sub; /* Subscription information */ + const char *why; /* Debugging aid */ ++#ifdef HAVE_AVAHI ++ cupsd_timeout_t *tmo; /* Timed callback */ ++ long tmo_delay; /* Seconds before calling it */ ++#endif /* HAVE_AVAHI */ + + + /* +@@ -1857,6 +1900,19 @@ + } + #endif /* __APPLE__ */ + ++#ifdef HAVE_AVAHI ++ /* ++ * See if there are any scheduled timed callbacks to run. ++ */ ++ ++ tmo = cupsdNextTimeout (&tmo_delay); ++ if (tmo) ++ { ++ timeout = tmo_delay; ++ why = "run a timed callback"; ++ } ++#endif /* HAVE_AVAHI */ ++ + /* + * Check whether we are accepting new connections... + */ +--- /dev/null ++++ b/scheduler/timeout.c +@@ -0,0 +1,195 @@ ++/* ++ * "$Id$" ++ * ++ * Timeout functions for the Common UNIX Printing System (CUPS). ++ * ++ * Copyright (C) 2010 Red Hat, Inc. ++ * Authors: ++ * Tim Waugh <twaugh@redhat.com> ++ * ++ * Distribution and use rights are outlined in the file "LICENSE.txt" ++ * which should have been included with this file. If this file is ++ * file is missing or damaged, see the license at "http://www.cups.org/". ++ * ++ * Contents: ++ * ++ * cupsdInitTimeouts() - Initialise timeout structure. ++ * cupsdAddTimeout() - Add a timed callback. ++ * cupsdNextTimeout() - Find the next enabled timed callback. ++ * cupsdUpdateTimeout() - Adjust the time of a timed callback or disable it. ++ * cupsdRemoveTimeout() - Discard a timed callback. ++ * compare_timeouts() - Compare timed callbacks for array sorting. ++ */ ++ ++#include <config.h> ++ ++#ifdef HAVE_AVAHI /* Applies to entire file... */ ++ ++/* ++ * Include necessary headers... ++ */ ++ ++#include "cupsd.h" ++ ++#if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO) ++# include <malloc.h> ++#endif /* HAVE_MALLOC_H && HAVE_MALLINFO */ ++ ++#ifdef HAVE_AVAHI ++# include <avahi-common/timeval.h> ++#endif /* HAVE_AVAHI */ ++ ++ ++struct _cupsd_timeout_s ++{ ++ struct timeval when; ++ int enabled; ++ cupsd_timeoutfunc_t callback; ++ void *data; ++}; ++ ++/* ++ * Local functions... ++ */ ++ ++/* ++ * 'compare_timeouts()' - Compare timed callbacks for array sorting. ++ */ ++ ++static int ++compare_timeouts (cupsd_timeout_t *p0, cupsd_timeout_t *p1) ++{ ++ if (!p0->enabled || !p1->enabled) ++ { ++ if (!p0->enabled && !p1->enabled) ++ return (0); ++ ++ return (p0->enabled ? -1 : 1); ++ } ++ ++ return (avahi_timeval_compare (&p0->when, &p1->when)); ++} ++ ++ ++/* ++ * 'cupsdInitTimeouts()' - Initialise timeout structures. ++ */ ++ ++void ++cupsdInitTimeouts(void) ++{ ++ Timeouts = cupsArrayNew ((cups_array_func_t)compare_timeouts, NULL); ++} ++ ++ ++/* ++ * 'cupsdAddTimeout()' - Add a timed callback. ++ */ ++ ++cupsd_timeout_t * /* O - Timeout handle */ ++cupsdAddTimeout(const struct timeval *tv, /* I - Absolute time */ ++ cupsd_timeoutfunc_t cb, /* I - Callback function */ ++ void *data) /* I - User data */ ++{ ++ cupsd_timeout_t *timeout; ++ ++ timeout = malloc (sizeof(cupsd_timeout_t)); ++ if (timeout != NULL) ++ { ++ timeout->enabled = (tv != NULL); ++ if (tv) ++ { ++ timeout->when.tv_sec = tv->tv_sec; ++ timeout->when.tv_usec = tv->tv_usec; ++ } ++ ++ timeout->callback = cb; ++ timeout->data = data; ++ cupsArrayAdd (Timeouts, timeout); ++ } ++ ++ return timeout; ++} ++ ++ ++/* ++ * 'cupsdNextTimeout()' - Find the next enabled timed callback. ++ */ ++ ++cupsd_timeout_t * /* O - Next enabled timeout or NULL */ ++cupsdNextTimeout(long *delay) /* O - Seconds before scheduled */ ++{ ++ cupsd_timeout_t *first = cupsArrayFirst (Timeouts); ++ struct timeval curtime; ++ ++ if (first && !first->enabled) ++ first = NULL; ++ ++ if (first && delay) ++ { ++ gettimeofday (&curtime, NULL); ++ if (avahi_timeval_compare (&curtime, &first->when) > 0) ++ { ++ *delay = 0; ++ } else { ++ *delay = 1 + first->when.tv_sec - curtime.tv_sec; ++ if (first->when.tv_usec < curtime.tv_usec) ++ (*delay)--; ++ } ++ } ++ ++ return (first); ++} ++ ++ ++/* ++ * 'cupsdRunTimeout()' - Run a timed callback. ++ */ ++ ++void ++cupsdRunTimeout(cupsd_timeout_t *timeout) /* I - Timeout */ ++{ ++ if (!timeout) ++ return; ++ timeout->enabled = 0; ++ if (!timeout->callback) ++ return; ++ timeout->callback (timeout, timeout->data); ++} ++ ++/* ++ * 'cupsdUpdateTimeout()' - Adjust the time of a timed callback or disable it. ++ */ ++ ++void ++cupsdUpdateTimeout(cupsd_timeout_t *timeout, /* I - Timeout */ ++ const struct timeval *tv) /* I - Absolute time or NULL */ ++{ ++ cupsArrayRemove (Timeouts, timeout); ++ timeout->enabled = (tv != NULL); ++ if (tv) ++ { ++ timeout->when.tv_sec = tv->tv_sec; ++ timeout->when.tv_usec = tv->tv_usec; ++ } ++ cupsArrayAdd (Timeouts, timeout); ++} ++ ++ ++/* ++ * 'cupsdRemoveTimeout()' - Discard a timed callback. ++ */ ++ ++void ++cupsdRemoveTimeout(cupsd_timeout_t *timeout) /* I - Timeout */ ++{ ++ cupsArrayRemove (Timeouts, timeout); ++ free (timeout); ++} ++ ++ ++#endif /* HAVE_AVAHI ... from top of file */ ++ ++/* ++ * End of "$Id$". ++ */ +--- a/cgi-bin/admin.c ++++ b/cgi-bin/admin.c +@@ -1643,7 +1643,7 @@ + else + local_protocols[0] = '\0'; + +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + if (cgiGetVariable("BROWSE_LOCAL_DNSSD")) + { + if (local_protocols[0]) +@@ -1651,7 +1651,7 @@ + else + strcat(local_protocols, "dnssd"); + } +-#endif /* HAVE_DNSSD */ ++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */ + + #ifdef HAVE_LDAP + if (cgiGetVariable("BROWSE_LOCAL_LDAP")) +@@ -2718,9 +2718,9 @@ + #endif /* HAVE_GSSAPI */ + cgiSetVariable("KERBEROS", ""); + +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + cgiSetVariable("HAVE_DNSSD", "1"); +-#endif /* HAVE_DNSSD */ ++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */ + + #ifdef HAVE_LDAP + cgiSetVariable("HAVE_LDAP", "1"); +--- a/scheduler/client.c ++++ b/scheduler/client.c +@@ -4987,7 +4987,7 @@ + !strncmp(host, "[::1]:", 6)); + } + +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + /* + * Check if the hostname is something.local (Bonjour); if so, allow it. + */ +@@ -4996,7 +4996,7 @@ + (!_cups_strcasecmp(end, ".local") || !_cups_strncasecmp(end, ".local:", 7) || + !_cups_strcasecmp(end, ".local.") || !_cups_strncasecmp(end, ".local.:", 8))) + return (1); +-#endif /* HAVE_DNSSD */ ++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */ + + /* + * Check if the hostname is an IP address... +--- a/scheduler/dirsvc.c ++++ b/scheduler/dirsvc.c +@@ -27,6 +27,7 @@ + * ldap_connect() - Start new LDAP connection + * ldap_reconnect() - Reconnect to LDAP Server + * ldap_disconnect() - Disconnect from LDAP Server ++ * cupsdStartAvahiClient() - Start an Avahi client if needed + * cupsdStartBrowsing() - Start sending and receiving broadcast + * information. + * cupsdStartPolling() - Start polling servers as needed. +@@ -45,6 +46,8 @@ + * printer. + * dnssdPackTxtRecord() - Pack an array of key/value pairs into the TXT + * record format. ++ * avahiPackTxtRecord() - Pack an array of key/value pairs into an ++ * AvahiStringList. + * dnssdRegisterCallback() - DNSServiceRegister callback. + * dnssdRegisterPrinter() - Start sending broadcast information for a + * printer or update the broadcast contents. +@@ -83,6 +86,7 @@ + */ + + #include "cupsd.h" ++#include <assert.h> + #include <grp.h> + + #ifdef HAVE_DNSSD +@@ -97,6 +101,17 @@ + # endif /* HAVE_SYSTEMCONFIGURATION */ + # endif /* __APPLE__ */ + #endif /* HAVE_DNSSD */ ++#ifdef HAVE_AVAHI ++# include <avahi-common/domain.h> ++#endif /* HAVE_AVAHI */ ++ ++ ++#ifdef HAVE_DNSSD ++typedef char *cupsd_txt_record_t; ++#endif /* HAVE_DNSSD */ ++#ifdef HAVE_AVAHI ++typedef AvahiStringList *cupsd_txt_record_t; ++#endif /* HAVE_AVAHI */ + + + /* +@@ -159,27 +174,39 @@ + static void update_smb(int onoff); + + ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) ++static cupsd_txt_record_t dnssdBuildTxtRecord(int *txt_len, cupsd_printer_t *p, ++ int for_lpd); ++static int dnssdComparePrinters(cupsd_printer_t *a, cupsd_printer_t *b); ++static void dnssdDeregisterPrinter(cupsd_printer_t *p); ++static void dnssdRegisterPrinter(cupsd_printer_t *p); ++static void dnssdStop(void); ++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */ ++ + #ifdef HAVE_DNSSD + # ifdef HAVE_COREFOUNDATION + static void dnssdAddAlias(const void *key, const void *value, + void *context); + # endif /* HAVE_COREFOUNDATION */ +-static char *dnssdBuildTxtRecord(int *txt_len, cupsd_printer_t *p, +- int for_lpd); +-static int dnssdComparePrinters(cupsd_printer_t *a, cupsd_printer_t *b); +-static void dnssdDeregisterPrinter(cupsd_printer_t *p); +-static char *dnssdPackTxtRecord(int *txt_len, char *keyvalue[][2], +- int count); + static void dnssdRegisterCallback(DNSServiceRef sdRef, + DNSServiceFlags flags, + DNSServiceErrorType errorCode, + const char *name, const char *regtype, + const char *domain, void *context); +-static void dnssdRegisterPrinter(cupsd_printer_t *p); +-static void dnssdStop(void); + static void dnssdUpdate(void); + #endif /* HAVE_DNSSD */ + ++#ifdef HAVE_AVAHI ++static AvahiStringList *avahiPackTxtRecord(char *keyvalue[][2], ++ int count); ++static void avahi_entry_group_cb (AvahiEntryGroup *group, ++ AvahiEntryGroupState state, ++ void *userdata); ++static void avahi_client_cb (AvahiClient *client, ++ AvahiClientState state, ++ void *userdata); ++#endif /* HAVE_AVAHI */ ++ + #ifdef HAVE_LDAP + static const char * const ldap_attrs[] =/* CUPS LDAP attributes */ + { +@@ -283,10 +310,10 @@ + ldap_dereg_printer(p); + #endif /* HAVE_LDAP */ + +-#ifdef HAVE_DNSSD +- if (removeit && (BrowseLocalProtocols & BROWSE_DNSSD) && DNSSDRef) ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) ++ if (removeit && (BrowseLocalProtocols & BROWSE_DNSSD)) + dnssdDeregisterPrinter(p); +-#endif /* HAVE_DNSSD */ ++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */ + } + + +@@ -702,10 +729,10 @@ + slpRegisterPrinter(p); */ + #endif /* HAVE_LIBSLP */ + +-#ifdef HAVE_DNSSD +- if ((BrowseLocalProtocols & BROWSE_DNSSD) && DNSSDRef) ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) ++ if ((BrowseLocalProtocols & BROWSE_DNSSD)) + dnssdRegisterPrinter(p); +-#endif /* HAVE_DNSSD */ ++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */ + } + + +@@ -1419,6 +1446,27 @@ + #endif /* HAVE_LDAP */ + + ++#ifdef HAVE_AVAHI ++/* ++ * 'cupsdStartAvahiClient()' - Start an Avahi client if needed ++ */ ++ ++void ++cupsdStartAvahiClient(void) ++{ ++ if (!AvahiCupsClient && !AvahiCupsClientConnecting) ++ { ++ if (!AvahiCupsPollHandle) ++ AvahiCupsPollHandle = avahi_cups_poll_new (); ++ ++ if (AvahiCupsPollHandle) ++ avahi_client_new (avahi_cups_poll_get (AvahiCupsPollHandle), ++ AVAHI_CLIENT_NO_FAIL, avahi_client_cb, NULL, NULL); ++ } ++} ++#endif /* HAVE_AVAHI */ ++ ++ + /* + * 'cupsdStartBrowsing()' - Start sending and receiving broadcast information. + */ +@@ -1542,13 +1590,16 @@ + else + BrowseSocket = -1; + +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + if ((BrowseLocalProtocols | BrowseRemoteProtocols) & BROWSE_DNSSD) + { ++#ifdef HAVE_DNSSD + DNSServiceErrorType error; /* Error from service creation */ ++#endif /* HAVE_DNSSD */ + cupsd_listener_t *lis; /* Current listening socket */ + + ++#ifdef HAVE_DNSSD + /* + * First create a "master" connection for all registrations... + */ +@@ -1573,6 +1624,7 @@ + fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); + + cupsdAddSelect(fd, (cupsd_selfunc_t)dnssdUpdate, NULL, NULL); ++#endif /* HAVE_DNSSD */ + + /* + * Then get the port we use for registrations. If we are not listening +@@ -1606,9 +1658,16 @@ + */ + + cupsdUpdateDNSSDName(); ++ ++#ifdef HAVE_AVAHI ++ cupsdStartAvahiClient (); ++#endif /* HAVE_AVAHI */ ++ ++#ifdef HAVE_DNSSD + } +- } + #endif /* HAVE_DNSSD */ ++ } ++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */ + + #ifdef HAVE_LIBSLP + if ((BrowseLocalProtocols | BrowseRemoteProtocols) & BROWSE_SLP) +@@ -1834,10 +1893,10 @@ + BrowseSocket = -1; + } + +-#ifdef HAVE_DNSSD +- if ((BrowseLocalProtocols & BROWSE_DNSSD) && DNSSDRef) ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) ++ if ((BrowseLocalProtocols & BROWSE_DNSSD)) + dnssdStop(); +-#endif /* HAVE_DNSSD */ ++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */ + + #ifdef HAVE_LIBSLP + if (((BrowseLocalProtocols | BrowseRemoteProtocols) & BROWSE_SLP) && +@@ -1902,7 +1961,7 @@ + } + + +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + /* + * 'cupsdUpdateDNSSDName()' - Update the computer name we use for browsing... + */ +@@ -1910,8 +1969,14 @@ + void + cupsdUpdateDNSSDName(void) + { ++#ifdef HAVE_DNSSD + DNSServiceErrorType error; /* Error from service creation */ + char webif[1024]; /* Web interface share name */ ++#endif /* HAVE_DNSSD */ ++#ifdef HAVE_AVAHI ++ int ret; /* Error from service creation */ ++ char webif[AVAHI_LABEL_MAX]; /* Web interface share name */ ++#endif /* HAVE_AVAHI */ + # ifdef HAVE_SYSTEMCONFIGURATION + SCDynamicStoreRef sc; /* Context for dynamic store */ + CFDictionaryRef btmm; /* Back-to-My-Mac domains */ +@@ -2042,6 +2107,7 @@ + else + strlcpy(webif, "CUPS Web Interface", sizeof(webif)); + ++#ifdef HAVE_DNSSD + if (WebIFRef) + DNSServiceRefDeallocate(WebIFRef); + +@@ -2054,9 +2120,45 @@ + NULL)) != kDNSServiceErr_NoError) + cupsdLogMessage(CUPSD_LOG_ERROR, + "DNS-SD web interface registration failed: %d", error); ++#endif /* HAVE_DNSSD */ ++ ++#ifdef HAVE_AVAHI ++ if (!AvahiCupsClient) ++ /* ++ * Client not yet running. ++ */ ++ return; ++ ++ if (AvahiWebIFGroup) ++ avahi_entry_group_reset (AvahiWebIFGroup); ++ else ++ AvahiWebIFGroup = avahi_entry_group_new (AvahiCupsClient, ++ avahi_entry_group_cb, ++ NULL); ++ ++ if (AvahiWebIFGroup) ++ { ++ ret = avahi_entry_group_add_service (AvahiWebIFGroup, ++ AVAHI_IF_UNSPEC, ++ AVAHI_PROTO_UNSPEC, ++ 0, /* flags */ ++ webif, /* name */ ++ "_http._tcp", /* type */ ++ NULL, /* domain */ ++ NULL, /* host */ ++ DNSSDPort, /* port */ ++ "path=/", NULL); ++ if (ret == 0) ++ ret = avahi_entry_group_commit (AvahiWebIFGroup); ++ ++ if (ret != 0) ++ cupsdLogMessage (CUPSD_LOG_ERROR, ++ "Avahi web interface registration failed: %d", ret); ++ } ++#endif /* HAVE_AVAHI */ + } + } +-#endif /* HAVE_DNSSD */ ++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */ + + + #ifdef HAVE_LDAP +@@ -2334,13 +2436,15 @@ + "Bad Back to My Mac domain in dynamic store!"); + } + # endif /* HAVE_COREFOUNDATION */ ++#endif /* HAVE_DNSSD */ + + ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + /* + * 'dnssdBuildTxtRecord()' - Build a TXT record from printer info. + */ + +-static char * /* O - TXT record */ ++static cupsd_txt_record_t /* O - TXT record */ + dnssdBuildTxtRecord( + int *txt_len, /* O - TXT record length */ + cupsd_printer_t *p, /* I - Printer information */ +@@ -2379,7 +2483,12 @@ + keyvalue[i ][0] = "ty"; + keyvalue[i++][1] = p->make_model ? p->make_model : "Unknown"; + +- snprintf(admin_hostname, sizeof(admin_hostname), "%s.local.", DNSSDHostName); ++ snprintf(admin_hostname, sizeof(admin_hostname), ++ "%s.local" ++#ifdef HAVE_DNSSD ++ "." /* terminating dot no good for Avahi */ ++#endif /* HAVE_DNSSD */ ++ , DNSSDHostName); + httpAssembleURIf(HTTP_URI_CODING_ALL, adminurl_str, sizeof(adminurl_str), + "http", NULL, admin_hostname, DNSSDPort, "/%s/%s", + (p->type & CUPS_PRINTER_CLASS) ? "classes" : "printers", +@@ -2462,7 +2571,12 @@ + * Then pack them into a proper txt record... + */ + ++#ifdef HAVE_DNSSD + return (dnssdPackTxtRecord(txt_len, keyvalue, i)); ++#endif /* HAVE_DNSSD */ ++#ifdef HAVE_AVAHI ++ return (avahiPackTxtRecord(keyvalue, i)); ++#endif /* HAVE_AVAHI */ + } + + +@@ -2474,7 +2588,16 @@ + dnssdComparePrinters(cupsd_printer_t *a,/* I - First printer */ + cupsd_printer_t *b)/* I - Second printer */ + { +- return (_cups_strcasecmp(a->reg_name, b->reg_name)); ++ if (!a->reg_name) ++ if (!b->reg_name) ++ return 0; ++ else ++ return -1; ++ else ++ if (!b->reg_name) ++ return 1; ++ else ++ return (_cups_strcasecmp(a->reg_name, b->reg_name)); + } + + +@@ -2489,6 +2612,10 @@ + { + cupsdLogMessage(CUPSD_LOG_DEBUG2, "dnssdDeregisterPrinter(%s)", p->name); + ++#ifdef HAVE_DNSSD ++ if (!DNSSDRef) ++ return; ++ + /* + * Closing the socket deregisters the service + */ +@@ -2524,6 +2651,24 @@ + free(p->printer_txt); + p->printer_txt = NULL; + } ++#endif /* HAVE_DNSSD */ ++ ++#ifdef HAVE_AVAHI ++ if (p->avahi_group) ++ { ++ avahi_entry_group_reset (p->avahi_group); ++ avahi_entry_group_free (p->avahi_group); ++ p->avahi_group = NULL; ++ ++ if (p->ipp_txt) ++ avahi_string_list_free (p->ipp_txt); ++ ++ if (p->printer_txt) ++ avahi_string_list_free (p->printer_txt); ++ ++ p->ipp_txt = p->printer_txt = NULL; ++ } ++#endif /* HAVE_AVAHI */ + + /* + * Remove the printer from the array of DNS-SD printers, then clear the +@@ -2533,8 +2678,10 @@ + cupsArrayRemove(DNSSDPrinters, p); + cupsdClearString(&p->reg_name); + } ++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */ + + ++#ifdef HAVE_DNSSD + /* + * 'dnssdPackTxtRecord()' - Pack an array of key/value pairs into the + * TXT record format. +@@ -2644,8 +2791,10 @@ + LastEvent |= CUPSD_EVENT_PRINTER_MODIFIED; + } + } ++#endif /* HAVE_DNSSD */ + + ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + /* + * 'dnssdRegisterPrinter()' - Start sending broadcast information for a printer + * or update the broadcast contents. +@@ -2654,20 +2803,40 @@ + static void + dnssdRegisterPrinter(cupsd_printer_t *p)/* I - Printer */ + { ++#ifdef HAVE_DNSSD + DNSServiceErrorType se; /* dnssd errors */ + char *ipp_txt, /* IPP TXT record buffer */ + *printer_txt, /* LPD TXT record buffer */ +- name[1024], /* Service name */ +- *nameptr; /* Pointer into name */ ++ name[1024]; /* Service name */ + int ipp_len, /* IPP TXT record length */ + printer_len, /* LPD TXT record length */ + printer_port; /* LPD port number */ ++#endif /* HAVE_DNSSD */ ++#ifdef HAVE_AVAHI ++ int ret; /* Error code */ ++ AvahiStringList *ipp_txt, /* IPP TXT record */ ++ *printer_txt; /* LPD TXT record */ ++ char name[AVAHI_LABEL_MAX], /* Service name */ ++ fullsubtype[AVAHI_LABEL_MAX]; /* Full subtype */ ++ char *regtype_copy, /* Writeable copy of reg type */ ++ *subtype, /* Current service sub type */ ++ *nextsubtype; /* Next service sub type */ ++#endif /* HAVE_AVAHI */ ++ char *nameptr; /* Pointer into name */ + const char *regtype; /* Registration type */ + + ++#ifdef HAVE_DNSSD ++ if (!DNSSDRef) ++ return; ++ + cupsdLogMessage(CUPSD_LOG_DEBUG2, "dnssdRegisterPrinter(%s) %s", p->name, + !p->ipp_ref ? "new" : "update"); +- ++#endif /* HAVE_DNSSD */ ++#ifdef HAVE_AVAHI ++ cupsdLogMessage(CUPSD_LOG_DEBUG2, "dnssdRegisterPrinter(%s) %s", p->name, ++ !p->avahi_group ? "new" : "update"); ++#endif /* HAVE_AVAHI */ + /* + * If per-printer sharing was just disabled make sure we're not + * registered before returning. +@@ -2686,12 +2855,36 @@ + if (p->info && strlen(p->info) > 0) + { + if (DNSSDComputerName) +- snprintf(name, sizeof(name), "%s @ %s", p->info, DNSSDComputerName); ++ { ++ /* ++ * Make sure there is room for at least 15 characters of ++ * DNSSDComputerName. ++ */ ++ ++ assert(sizeof(name) >= 15 + 4); ++ nameptr = name + strlcpy(name, p->info, ++ sizeof(name) - 4 - ++ strnlen(DNSSDComputerName, 15)); ++ nameptr += strlcpy(nameptr, " @ ", sizeof(name) - (nameptr - name)); ++ strlcpy(nameptr, DNSSDComputerName, sizeof(name) - (nameptr - name)); ++ } + else + strlcpy(name, p->info, sizeof(name)); + } + else if (DNSSDComputerName) +- snprintf(name, sizeof(name), "%s @ %s", p->name, DNSSDComputerName); ++ { ++ /* ++ * Make sure there is room for at least 15 characters of ++ * DNSSDComputerName. ++ */ ++ ++ assert(sizeof(name) >= 15 + 4); ++ nameptr = name + strlcpy(name, p->info, ++ sizeof(name) - 4 - ++ strnlen(DNSSDComputerName, 15)); ++ nameptr += strlcpy(nameptr, " @ ", sizeof(name) - (nameptr - name)); ++ strlcpy(nameptr, DNSSDComputerName, sizeof(name) - (nameptr - name)); ++ } + else + strlcpy(name, p->name, sizeof(name)); + +@@ -2712,6 +2905,7 @@ + * Register IPP and (optionally) LPD... + */ + ++#ifdef HAVE_DNSSD + ipp_len = 0; /* anti-compiler-warning-code */ + ipp_txt = dnssdBuildTxtRecord(&ipp_len, p, 0); + +@@ -2884,6 +3078,209 @@ + + if (printer_txt) + free(printer_txt); ++#endif /* HAVE_DNSSD */ ++#ifdef HAVE_AVAHI ++ if (!AvahiCupsClient) ++ /* ++ * Client not running yet. The client callback will call us again later. ++ */ ++ return; ++ ++ ipp_txt = dnssdBuildTxtRecord(NULL, p, 0); ++ printer_txt = dnssdBuildTxtRecord(NULL, p, 1); ++ regtype = (p->type & CUPS_PRINTER_FAX) ? "_fax-ipp._tcp" : DNSSDRegType; ++ ++ if (p->avahi_group && p->ipp_txt && ipp_txt && ++ !avahi_string_list_equal (p->ipp_txt, ipp_txt)) ++ { ++ /* ++ * Update the existing registration... ++ */ ++ ++ avahi_string_list_free (p->ipp_txt); ++ ++ if (p->printer_txt) ++ avahi_string_list_free (p->printer_txt); ++ ++ /* ++ * Update the service group entry. ++ */ ++ ++ regtype_copy = strdup (regtype); ++ subtype = strchr (regtype_copy, ','); ++ if (subtype) ++ *subtype = '\0'; ++ ++ cupsdLogMessage (CUPSD_LOG_DEBUG, ++ "Updating TXT record for %s (%s)", name, regtype_copy); ++ ret = avahi_entry_group_update_service_txt_strlst (p->avahi_group, ++ AVAHI_IF_UNSPEC, ++ AVAHI_PROTO_UNSPEC, ++ 0, name, ++ regtype_copy, ++ NULL, ipp_txt); ++ free (regtype_copy); ++ ++ if (ret < 0) ++ goto update_failed; ++ ++ p->ipp_txt = ipp_txt; ++ ipp_txt = NULL; ++ ++ if (BrowseLocalProtocols & BROWSE_LPD) ++ { ++ ret = avahi_entry_group_update_service_txt_strlst (p->avahi_group, ++ AVAHI_IF_UNSPEC, ++ AVAHI_PROTO_UNSPEC, ++ 0, name, ++ "_printer._tcp", NULL, ++ printer_txt); ++ if (ret < 0) ++ goto update_failed; ++ ++ p->printer_txt = printer_txt; ++ printer_txt = NULL; ++ } ++ ++ ret = avahi_entry_group_commit (p->avahi_group); ++ if (ret < 0) ++ { ++ update_failed: ++ cupsdLogMessage (CUPSD_LOG_ERROR, ++ "Failed to update TXT record for %s: %d", ++ name, ret); ++ avahi_entry_group_reset (p->avahi_group); ++ avahi_entry_group_free (p->avahi_group); ++ p->avahi_group = NULL; ++ ipp_txt = p->ipp_txt; ++ p->ipp_txt = NULL; ++ } ++ } ++ ++ if (!p->avahi_group) ++ { ++ /* ++ * Initial registration. Use the _fax subtype for fax queues... ++ */ ++ ++ p->avahi_group = avahi_entry_group_new (AvahiCupsClient, ++ avahi_entry_group_cb, ++ p); ++ ++ cupsdLogMessage(CUPSD_LOG_DEBUG, ++ "Registering Avahi printer %s with name \"%s\" and " ++ "type \"%s\"", p->name, name, regtype); ++ ++ if (!p->avahi_group) ++ { ++ ret = 0; ++ goto add_failed; ++ } ++ ++ /* ++ * Add each service type (DNSSDRegType may contain several, ++ * separated by commas). ++ */ ++ ++ subtype = regtype_copy = strdup (regtype); ++ while (subtype && *subtype) ++ { ++ nextsubtype = strchr (subtype, ','); ++ if (nextsubtype) ++ *nextsubtype++ = '\0'; ++ ++ if (subtype == regtype_copy) ++ { ++ /* ++ * Main type entry. ++ */ ++ ++ cupsdLogMessage (CUPSD_LOG_DEBUG, ++ "Adding TXT record for %s (%s)", name, regtype_copy); ++ ret = avahi_entry_group_add_service_strlst (p->avahi_group, ++ AVAHI_IF_UNSPEC, ++ AVAHI_PROTO_UNSPEC, ++ 0, name, regtype_copy, ++ NULL, NULL, ++ DNSSDPort, ++ ipp_txt); ++ } ++ else ++ { ++ /* ++ * Sub-type entry. ++ */ ++ ++ snprintf (fullsubtype, sizeof(fullsubtype), ++ "%s._sub.%s", subtype, regtype_copy); ++ cupsdLogMessage (CUPSD_LOG_DEBUG, ++ "Adding TXT record for %s (%s)", name, fullsubtype); ++ ret = avahi_entry_group_add_service_subtype (p->avahi_group, ++ AVAHI_IF_UNSPEC, ++ AVAHI_PROTO_UNSPEC, ++ 0, name, ++ regtype_copy, ++ NULL, fullsubtype); ++ } ++ ++ if (ret < 0) ++ { ++ free (regtype_copy); ++ goto add_failed; ++ } ++ ++ subtype = nextsubtype; ++ } ++ ++ free (regtype_copy); ++ p->ipp_txt = ipp_txt; ++ ipp_txt = NULL; ++ ++ if (BrowseLocalProtocols & BROWSE_LPD) ++ { ++ cupsdLogMessage(CUPSD_LOG_DEBUG, ++ "Registering Avahi printer %s with name \"%s\" and " ++ "type \"_printer._tcp\"", p->name, name); ++ ++ ret = avahi_entry_group_add_service_strlst (p->avahi_group, ++ AVAHI_IF_UNSPEC, ++ AVAHI_PROTO_UNSPEC, ++ 0, name, ++ "_printer._tcp", NULL, NULL, ++ 515, ++ printer_txt); ++ if (ret < 0) ++ goto add_failed; ++ ++ p->printer_txt = printer_txt; ++ printer_txt = NULL; ++ } ++ ++ ret = avahi_entry_group_commit (p->avahi_group); ++ ++ if (ret < 0) ++ { ++ add_failed: ++ cupsdLogMessage (CUPSD_LOG_ERROR, ++ "Failed to add Avahi entry for %s: %d", ++ name, ret); ++ if (p->avahi_group) ++ { ++ avahi_entry_group_reset (p->avahi_group); ++ avahi_entry_group_free (p->avahi_group); ++ p->avahi_group = NULL; ++ } ++ ipp_txt = p->ipp_txt; ++ p->ipp_txt = NULL; ++ } ++ } ++ ++ if (ipp_txt) ++ avahi_string_list_free (ipp_txt); ++ ++ if (printer_txt) ++ avahi_string_list_free (printer_txt); ++#endif /* HAVE_AVAHI */ + } + + +@@ -2896,6 +3293,10 @@ + { + cupsd_printer_t *p; /* Current printer */ + ++#ifdef HAVE_DNSSD ++ if (!DNSSDRef) ++ return; ++#endif /* HAVE_DNSSD */ + + /* + * De-register the individual printers +@@ -2906,6 +3307,7 @@ + p = (cupsd_printer_t *)cupsArrayNext(Printers)) + dnssdDeregisterPrinter(p); + ++#ifdef HAVE_DNSSD + /* + * Shutdown the rest of the service refs... + */ +@@ -2926,14 +3328,17 @@ + + DNSServiceRefDeallocate(DNSSDRef); + DNSSDRef = NULL; ++#endif /* HAVE_DNSSD */ + + cupsArrayDelete(DNSSDPrinters); + DNSSDPrinters = NULL; + + DNSSDPort = 0; + } ++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */ + + ++#ifdef HAVE_DNSSD + /* + * 'dnssdUpdate()' - Handle DNS-SD queries. + */ +@@ -2955,6 +3360,147 @@ + #endif /* HAVE_DNSSD */ + + ++#ifdef HAVE_AVAHI ++/* ++ * 'avahiPackTxtRecord()' - Pack an array of key/value pairs into an ++ * AvahiStringList. ++ */ ++ ++static AvahiStringList * /* O - new string list */ ++avahiPackTxtRecord(char *keyvalue[][2], /* I - Table of key value pairs */ ++ int count) /* I - Number of items in table */ ++{ ++ AvahiStringList *strlst = NULL; ++ char **elements; ++ size_t len; ++ int i = 0; ++ ++ elements = malloc ((1 + count) * sizeof (char *)); ++ if (!elements) ++ goto cleanup; ++ ++ for (i = 0; i < count; i++) ++ { ++ len = (1 + strlen (keyvalue[i][0]) + ++ (keyvalue[i][1] ? 1 + strlen (keyvalue[i][1]) : 1)); ++ elements[i] = malloc (len * sizeof (char)); ++ if (!elements[i]) ++ goto cleanup; ++ ++ snprintf (elements[i], len, "%s=%s", keyvalue[i][0], keyvalue[i][1]); ++ } ++ ++ strlst = avahi_string_list_new_from_array ((const char **) elements, count); ++ ++cleanup: ++ while (--i >= 0) ++ free (elements[i]); ++ ++ free (elements); ++ return (strlst); ++} ++ ++ ++/* ++ * 'avahi_entry_group_cb()' - Avahi entry group callback function. ++ */ ++static void ++avahi_entry_group_cb (AvahiEntryGroup *group, ++ AvahiEntryGroupState state, ++ void *userdata) ++{ ++ char *name; ++ ++ if (userdata) ++ name = ((cupsd_printer_t *) userdata)->reg_name; ++ else ++ name = "CUPS web interface"; ++ ++ switch (state) ++ { ++ case AVAHI_ENTRY_GROUP_UNCOMMITED: ++ case AVAHI_ENTRY_GROUP_REGISTERING: ++ break; ++ ++ case AVAHI_ENTRY_GROUP_ESTABLISHED: ++ cupsdLogMessage (CUPSD_LOG_DEBUG, ++ "Avahi entry group established for %s", name); ++ break; ++ ++ default: ++ cupsdLogMessage (CUPSD_LOG_DEBUG, ++ "Avahi entry group %s has state %d", ++ name, state); ++ break; ++ } ++} ++ ++ ++/* ++ * 'avahi_client_cb()' - Avahi client callback function. ++ */ ++static void ++avahi_client_cb (AvahiClient *client, ++ AvahiClientState state, ++ void *userdata) ++{ ++ cupsd_printer_t *printer; ++ switch (state) ++ { ++ case AVAHI_CLIENT_S_RUNNING: ++ /* ++ * Avahi client started successfully. ++ */ ++ AvahiCupsClient = client; ++ AvahiCupsClientConnecting = 0; ++ cupsdLogMessage (CUPSD_LOG_DEBUG, "Avahi client started"); ++ ++ cupsdUpdateDNSSDName (); ++ ++ for (printer = (cupsd_printer_t *)cupsArrayFirst(Printers); ++ printer; ++ printer = (cupsd_printer_t *)cupsArrayNext(Printers)) ++ if (Browsing && (BrowseLocalProtocols & BROWSE_DNSSD) && ++ (!(printer->type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_IMPLICIT | ++ CUPS_PRINTER_SCANNER))) && printer->shared) ++ dnssdRegisterPrinter (printer); ++ ++ break; ++ ++ case AVAHI_CLIENT_CONNECTING: ++ /* ++ * No Avahi daemon, client is waiting. ++ */ ++ AvahiCupsClientConnecting = 1; ++ cupsdLogMessage (CUPSD_LOG_DEBUG, "Avahi client connecting"); ++ break; ++ ++ case AVAHI_CLIENT_FAILURE: ++ /* ++ * Avahi client failed, close it to allow a clean restart. ++ */ ++ cupsdLogMessage (CUPSD_LOG_ERROR, ++ "Avahi client failed, " ++ "closing client to allow a clean restart"); ++ ++ for (printer = (cupsd_printer_t *)cupsArrayFirst(Printers); ++ printer; ++ printer = (cupsd_printer_t *)cupsArrayNext(Printers)) ++ dnssdDeregisterPrinter (printer); ++ ++ avahi_client_free(client); ++ AvahiCupsClientConnecting = 0; ++ AvahiCupsClient = NULL; ++ ++ break; ++ ++ default: ++ cupsdLogMessage (CUPSD_LOG_DEBUG, "Avahi client state: %d", state); ++ } ++} ++#endif /* HAVE_AVAHI */ ++ ++ + /* + * 'get_auth_info_required()' - Get the auth-info-required value to advertise. + */ +--- a/scheduler/dirsvc.h ++++ b/scheduler/dirsvc.h +@@ -31,6 +31,10 @@ + # endif /* HAVE_LDAP_SSL_H */ + #endif /* HAVE_LDAP */ ++#ifdef HAVE_AVAHI ++# include <avahi-client/publish.h> ++#endif /* HAVE_AVAHI */ ++ /* - * End of "$Id: http-support.c 9322 2010-10-01 22:40:38Z mike $". + * Browse protocols... + */ +@@ -131,19 +135,22 @@ + VAR cupsd_statbuf_t *PollStatusBuffer VALUE(NULL); + /* Status buffer for pollers */ + +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + VAR char *DNSSDComputerName VALUE(NULL), + /* Computer/server name */ + *DNSSDHostName VALUE(NULL), + /* Hostname */ + *DNSSDRegType VALUE(NULL); + /* Bonjour registration type */ +-VAR cups_array_t *DNSSDAlias VALUE(NULL); +- /* List of dynamic ServerAlias's */ + VAR int DNSSDPort VALUE(0); + /* Port number to register */ + VAR cups_array_t *DNSSDPrinters VALUE(NULL); + /* Printers we have registered */ ++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */ ++ ++#ifdef HAVE_DNSSD ++VAR cups_array_t *DNSSDAlias VALUE(NULL); ++ /* List of dynamic ServerAlias's */ + VAR DNSServiceRef DNSSDRef VALUE(NULL), + /* Master DNS-SD service reference */ + WebIFRef VALUE(NULL), +@@ -152,6 +159,17 @@ + /* Remote printer browse reference */ + #endif /* HAVE_DNSSD */ + ++#ifdef HAVE_AVAHI ++VAR AvahiCupsPoll *AvahiCupsPollHandle VALUE(NULL); ++ /* AvahiCupsPoll object */ ++VAR AvahiClient *AvahiCupsClient VALUE(NULL); ++ /* AvahiClient object */ ++VAR int AvahiCupsClientConnecting VALUE(0); ++ /* Is AvahiClient object connecting? */ ++VAR AvahiEntryGroup *AvahiWebIFGroup VALUE(NULL); ++ /* Web interface entry group */ ++#endif /* HAVE_AVAHI */ ++ + #ifdef HAVE_LIBSLP + VAR SLPHandle BrowseSLPHandle VALUE(NULL); + /* SLP API handle */ +@@ -195,13 +213,14 @@ + extern void cupsdRestartPolling(void); + extern void cupsdSaveRemoteCache(void); + extern void cupsdSendBrowseList(void); ++extern void cupsdStartAvahiClient(void); + extern void cupsdStartBrowsing(void); + extern void cupsdStartPolling(void); + extern void cupsdStopBrowsing(void); + extern void cupsdStopPolling(void); +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + extern void cupsdUpdateDNSSDName(void); +-#endif /* HAVE_DNSSD */ ++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */ + #ifdef HAVE_LDAP + extern void cupsdUpdateLDAPBrowse(void); + #endif /* HAVE_LDAP */ +--- a/scheduler/ipp.c ++++ b/scheduler/ipp.c +@@ -6087,7 +6087,7 @@ + ippAddDate(con->response, IPP_TAG_PRINTER, "printer-current-time", + ippTimeToDate(curtime)); + +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + if (!ra || cupsArrayFind(ra, "printer-dns-sd-name")) + { + if (printer->reg_name) +@@ -6097,7 +6097,7 @@ + ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_NOVALUE, + "printer-dns-sd-name", 0); + } +-#endif /* HAVE_DNSSD */ ++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */ + + if (!ra || cupsArrayFind(ra, "printer-error-policy")) + ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_NAME, +--- a/scheduler/printers.c ++++ b/scheduler/printers.c +@@ -883,9 +883,9 @@ + cupsdClearString(&p->alert); + cupsdClearString(&p->alert_description); + +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + cupsdClearString(&p->pdl); +-#endif /* HAVE_DNSSD */ ++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */ + + cupsArrayDelete(p->filetypes); + +@@ -3765,7 +3765,7 @@ + attr->values[i].string.text = _cupsStrAlloc(mimetype); + } + +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + { + char pdl[1024]; /* Buffer to build pdl list */ + mime_filter_t *filter; /* MIME filter looping var */ +@@ -3821,7 +3821,7 @@ + + cupsdSetString(&p->pdl, pdl); + } +-#endif /* HAVE_DNSSD */ ++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */ + } + + +--- a/scheduler/printers.h ++++ b/scheduler/printers.h +@@ -16,6 +16,9 @@ + #ifdef HAVE_DNSSD + # include <dns_sd.h> + #endif /* HAVE_DNSSD */ ++#ifdef HAVE_AVAHI ++# include "avahi.h" ++#endif /* HAVE_AVAHI */ + #include <cups/pwg-private.h> + + +@@ -95,16 +98,23 @@ + time_t marker_time; /* Last time marker attributes were updated */ + _ppd_cache_t *pc; /* PPD cache and mapping data */ + +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + char *reg_name, /* Name used for service registration */ +- *pdl, /* pdl value for TXT record */ +- *ipp_txt, /* IPP TXT record contents */ ++ *pdl; /* pdl value for TXT record */ ++#endif /* defined(HAVE_DNSSD) || defined(HAVE_AVAHI) */ ++#ifdef HAVE_DNSSD ++ char *ipp_txt, /* IPP TXT record contents */ + *printer_txt; /* LPD TXT record contents */ + int ipp_len, /* IPP TXT record length */ + printer_len; /* LPD TXT record length */ + DNSServiceRef ipp_ref, /* Reference for _ipp._tcp,_cups */ + printer_ref; /* Reference for _printer._tcp */ + #endif /* HAVE_DNSSD */ ++#ifdef HAVE_AVAHI ++ AvahiStringList *ipp_txt, /* IPP TXT record */ ++ *printer_txt; /* LPD TXT record */ ++ AvahiEntryGroup *avahi_group; /* Avahi entry group */ ++#endif /* HAVE_AVAHI */ + }; + + +--- a/scheduler/conf.c ++++ b/scheduler/conf.c +@@ -650,7 +650,7 @@ + Browsing = CUPS_DEFAULT_BROWSING; + DefaultShared = CUPS_DEFAULT_DEFAULT_SHARED; + +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + cupsdSetString(&DNSSDRegType, "_ipp._tcp,_cups"); + #endif /* HAVE_DNSSD */ + diff --git a/extra/cups/cups-no-gcrypt.patch b/extra/cups/cups-no-gcrypt.patch index 203b4f4ac..42f71d0d4 100644 --- a/extra/cups/cups-no-gcrypt.patch +++ b/extra/cups/cups-no-gcrypt.patch @@ -1,17 +1,17 @@ diff -ruN cups-1.4.7.orig//config-scripts/cups-ssl.m4 cups-1.4.7/config-scripts/cups-ssl.m4 ---- cups-1.4.7.orig//config-scripts/cups-ssl.m4 2011-01-11 08:05:58.000000000 +0100 -+++ cups-1.4.7/config-scripts/cups-ssl.m4 2011-08-02 10:44:26.011047900 +0200 -@@ -74,7 +74,6 @@ +--- cups-1.5.0.orig//config-scripts/cups-ssl.m4 2011-01-11 08:05:58.000000000 +0100 ++++ cups-1.5.0/config-scripts/cups-ssl.m4 2011-08-02 10:44:26.011047900 +0200 +@@ -96,7 +96,6 @@ dnl Then look for GNU TLS... if test $have_ssl = 0 -a "x$enable_gnutls" != "xno" -a "x$PKGCONFIG" != x; then AC_PATH_PROG(LIBGNUTLSCONFIG,libgnutls-config) - AC_PATH_PROG(LIBGCRYPTCONFIG,libgcrypt-config) if $PKGCONFIG --exists gnutls; then - if test "x$have_pthread" = xyes; then - AC_MSG_WARN([The current version of GNU TLS cannot be made thread-safe.]) -@@ -96,16 +95,6 @@ - AC_DEFINE(HAVE_GNUTLS) - fi + have_ssl=1 + SSLLIBS=`$PKGCONFIG --libs gnutls` +@@ -110,16 +109,6 @@ + AC_DEFINE(HAVE_SSL) + AC_DEFINE(HAVE_GNUTLS) fi - - if test $have_ssl = 1; then @@ -26,14 +26,13 @@ diff -ruN cups-1.4.7.orig//config-scripts/cups-ssl.m4 cups-1.4.7/config-scripts/ fi dnl Check for the OpenSSL library last... -diff -ruN cups-1.4.7.orig//cups/http-private.h cups-1.4.7/cups/http-private.h ---- cups-1.4.7.orig//cups/http-private.h 2011-01-22 01:07:22.000000000 +0100 -+++ cups-1.4.7/cups/http-private.h 2011-08-02 10:42:43.341604107 +0200 -@@ -98,7 +98,6 @@ - * The GNU TLS library is more of a "bare metal" SSL/TLS library... - */ +--- cups-1.5.0.orig//cups/http-private.h 2011-01-22 01:07:22.000000000 +0100 ++++ cups-1.5.0/cups/http-private.h 2011-08-02 10:42:43.341604107 +0200 +@@ -93,7 +93,6 @@ + # elif defined HAVE_GNUTLS # include <gnutls/gnutls.h> + # include <gnutls/x509.h> -# include <gcrypt.h> - - typedef struct - { + # elif defined(HAVE_CDSASSL) + # include <CoreFoundation/CoreFoundation.h> + # include <Security/Security.h> diff --git a/extra/ffmpegthumbnailer/PKGBUILD b/extra/ffmpegthumbnailer/PKGBUILD index 8be79eb47..82a96c06a 100644 --- a/extra/ffmpegthumbnailer/PKGBUILD +++ b/extra/ffmpegthumbnailer/PKGBUILD @@ -3,7 +3,7 @@ # Contributor: boromil@gmail.com pkgname=ffmpegthumbnailer -pkgver=2.0.6 +pkgver=2.0.7 pkgrel=1 pkgdesc="Lightweight video thumbnailer that can be used by file managers." url="http://code.google.com/p/ffmpegthumbnailer/" @@ -11,9 +11,11 @@ license=('GPL2') arch=('i686' 'x86_64') depends=('ffmpeg' 'libjpeg' 'libpng') optdepends=('gvfs: support for gio uris') -source=(http://ffmpegthumbnailer.googlecode.com/files/$pkgname-$pkgver.tar.gz) +source=(http://ffmpegthumbnailer.googlecode.com/files/$pkgname-$pkgver.tar.gz + ffmpegthumbnailer.desktop) options=(!libtool) -md5sums=('5003ceaadc1c5a1be1dbb34739a12bab') +sha1sums=('b8f5371aa995fefd1fb75e306e8cd76e8c9f3a73' + 'bdd3ae35a5c6f0e1f4b0c7926f72b3429b2eaa53') build() { cd "${srcdir}/${pkgname}-${pkgver}" @@ -25,6 +27,10 @@ build() { package() { cd "${srcdir}/${pkgname}-${pkgver}" make DESTDIR="${pkgdir}" install + + # FS#24105: Generate thumbnails in nautilus + install -Dm644 ${srcdir}/ffmpegthumbnailer.desktop \ + ${pkgdir}/usr/share/thumbnailers/ffmpegthumbnailer.desktop } diff --git a/extra/ffmpegthumbnailer/ffmpegthumbnailer.desktop b/extra/ffmpegthumbnailer/ffmpegthumbnailer.desktop new file mode 100644 index 000000000..79203e5bc --- /dev/null +++ b/extra/ffmpegthumbnailer/ffmpegthumbnailer.desktop @@ -0,0 +1,4 @@ +[Thumbnailer Entry] +TryExec=ffmpegthumbnailer +Exec=ffmpegthumbnailer -s %s -i %u -o %o -c png -f -t 10 +MimeType=video/flv;video/webm;video/mkv;video/mp4;video/mpeg;video/avi;video/ogg;video/quicktime;video/x-avi;video/x-flv;video/x-mp4;video/x-mpeg;video/x-webm;video/x-mkv;application/x-extension-webm;video/x-matroska;video/x-ms-wmv;video/x-msvideo;video/x-msvideo/avi;video/x-theora/ogg;video/x-theora/ogv;video/x-ms-asf;video/x-m4v; diff --git a/extra/fftw/PKGBUILD b/extra/fftw/PKGBUILD index d8b00ff55..65087f373 100644 --- a/extra/fftw/PKGBUILD +++ b/extra/fftw/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 110392 2011-02-19 07:05:55Z allan $ +# $Id: PKGBUILD 136896 2011-09-02 17:27:59Z ronald $ # Maintainer: Ronald van Haren <ronald.archlinux.org> # Contributor: damir <damir@archlinux.org> pkgname=fftw -pkgver=3.2.2 -pkgrel=2 +pkgver=3.3 +pkgrel=1 pkgdesc="A library for computing the discrete Fourier transform (DFT)" arch=('i686' 'x86_64') license=('GPL2') @@ -14,13 +14,13 @@ makedepends=('gcc-fortran') options=(!libtool) source=(http://www.fftw.org/${pkgname}-${pkgver}.tar.gz) install=fftw.install +sha1sums=('e44493ba4babeacba184568e727876d9aed44205') # notes: # http://www.fftw.org/fftw2_doc/fftw_6.html#SEC69 # http://www.fftw.org/faq/section2.html#singleprec # http://www.fftw.org/fftw3_doc/Precision.html#Precision -md5sums=('b616e5c91218cc778b5aa735fefb61ae') build() { cd ${srcdir}/${pkgname}-${pkgver} diff --git a/extra/icedtea-web/PKGBUILD b/extra/icedtea-web/PKGBUILD index 05bfa4ef9..79d50449a 100644 --- a/extra/icedtea-web/PKGBUILD +++ b/extra/icedtea-web/PKGBUILD @@ -1,16 +1,16 @@ -# $Id: PKGBUILD 132127 2011-07-20 16:03:07Z andyrtr $ +# $Id: PKGBUILD 136837 2011-09-02 08:00:13Z andyrtr $ # Maintainer: Andreas Radke <andyrtr@archlinux.org> pkgbase=icedtea-web pkgname=('icedtea-web' 'icedtea-web-doc') -pkgver=1.1.1 +pkgver=1.1.2 pkgrel=1 arch=('i686' 'x86_64') url="http://icedtea.classpath.org/wiki/IcedTea-Web" license=('GPL2') makedepends=('openjdk6' 'zip' 'xulrunner') source=(http://icedtea.classpath.org/download/source/$pkgname-$pkgver.tar.gz) -md5sums=('16017dc91f7216e0631b759db1eebecb') +md5sums=('564e10820887793b86b04ac9979cb6e5') build() { _javaver=6 @@ -78,5 +78,3 @@ package_icedtea-web-doc() { rm -rf ${pkgdir}/usr/share/man rm -rf ${pkgdir}/usr/share/icedtea-web # conflicting and unneeded file it seems } - -# plugin test here http://www.java.com/en/download/help/testvm.xml
\ No newline at end of file diff --git a/extra/java-commons-daemon/PKGBUILD b/extra/java-commons-daemon/PKGBUILD index 2f98df6db..0627323e8 100644 --- a/extra/java-commons-daemon/PKGBUILD +++ b/extra/java-commons-daemon/PKGBUILD @@ -1,14 +1,14 @@ # Maintainer: Guillaume ALAUX <guillaume@archlinux.org> pkgname=('java-commons-daemon' 'java-jsvc') pkgbase=java-commons-daemon -pkgver=1.0.6 +pkgver=1.0.7 pkgrel=1 arch=('i686' 'x86_64') url="http://commons.apache.org/daemon/" license=('APACHE') _libname=commons-daemon source=(http://archive.apache.org/dist/commons/daemon/source/${_libname}-${pkgver}-src.tar.gz) -md5sums=('28dc2e0a3634b2dc3605e9e6444d079f') +md5sums=('fb6c5e7b6544fd8400b08f0e81fc9581') makedepends=('apache-ant' 'docbook2x' 'docbook-xsl') diff --git a/extra/libdvbpsi/PKGBUILD b/extra/libdvbpsi/PKGBUILD index e8483fba1..280870dd8 100644 --- a/extra/libdvbpsi/PKGBUILD +++ b/extra/libdvbpsi/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 126352 2011-06-05 00:53:01Z giovanni $ +# $Id: PKGBUILD 136933 2011-09-03 00:24:33Z giovanni $ # Maintainer: Giovanni Scafora <giovanni@archlinux.org> # Contributor: Gilles CHAUVIN <gcnweb@gmail.com> pkgname=libdvbpsi -pkgver=0.2.0 +pkgver=0.2.1 pkgrel=1 pkgdesc="A library designed for decoding and generation of MPEG TS and DVB PSI tables" arch=('i686' 'x86_64') @@ -14,7 +14,7 @@ replaces=('libdvbpsi4' 'libdvbpsi5') conflicts=('libdvbpsi4' 'libdvbpsi5') url="http://developers.videolan.org/libdvbpsi/" source=("http://download.videolan.org/pub/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.bz2") -md5sums=('b80f3fb7fd58d35276cc4c4a84b6ac03') +md5sums=('c8582dc18fc7ea1f76016d78a76ea5dd') build() { cd "${srcdir}/${pkgname}-${pkgver}" diff --git a/extra/live-media/PKGBUILD b/extra/live-media/PKGBUILD index 6e6e70550..5afd55e19 100644 --- a/extra/live-media/PKGBUILD +++ b/extra/live-media/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 135575 2011-08-16 00:19:32Z giovanni $ +# $Id: PKGBUILD 136923 2011-09-02 23:55:49Z giovanni $ # Maintainer: Giovanni Scafora <giovanni@archlinux.org> # Contributor: Gilles CHAUVIN <gcnweb@gmail.com> pkgname=live-media -pkgver=2011.08.13 +pkgver=2011.09.02 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=('0ef56c4bf6be8cc4e31656c7293e50de') +md5sums=('e66901b4bc2b4e6fbd7821880d0373fd') build() { cd ${srcdir}/live diff --git a/extra/miro/PKGBUILD b/extra/miro/PKGBUILD index 64ea31e79..8d518a86f 100644 --- a/extra/miro/PKGBUILD +++ b/extra/miro/PKGBUILD @@ -1,8 +1,8 @@ -# $Id: PKGBUILD 130052 2011-07-01 16:18:58Z ronald $ +# $Id: PKGBUILD 136884 2011-09-02 16:14:24Z ronald $ # Maintainer: Ronald van Haren <ronald.archlinux.org> pkgname=miro -pkgver=4.0.2 +pkgver=4.0.3 pkgrel=1 pkgdesc="The free and open source internet TV platform" arch=('i686' 'x86_64') @@ -17,7 +17,7 @@ depends=('dbus-python' 'pyrex' 'pygtk' 'gstreamer0.10' 'python2-gconf' makedepends=('pkg-config') install=miro.install source=(http://ftp.osuosl.org/pub/pculture.org/${pkgname}/src/${pkgname}-${pkgver}.tar.gz) -sha1sums=('22342897ca748fa19738c9c1c510510f314fa7eb') +sha1sums=('b08cd09d514d1af0b2403ab8dcd725b8c5d4b840') build() { cd "${srcdir}/${pkgname}-${pkgver}/linux" diff --git a/extra/pstoedit/PKGBUILD b/extra/pstoedit/PKGBUILD index 8a075012c..3ab3c566e 100644 --- a/extra/pstoedit/PKGBUILD +++ b/extra/pstoedit/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 88955 2010-08-26 15:26:52Z ronald $ +# $Id: PKGBUILD 136892 2011-09-02 17:05:04Z ronald $ # Maintainer: Ronald van Haren <ronald.archlinux.org> # Contributor: damir <damir@archlinux.org> # Contributor: Tobias Powalowski <t.powa@gmx.de> pkgname=pstoedit -pkgver=3.50 -pkgrel=4 +pkgver=3.60 +pkgrel=1 pkgdesc="Translates PostScript and PDF graphics into other vector formats" arch=("i686" "x86_64") url="http://www.pstoedit.net/" @@ -15,18 +15,13 @@ makedepends=('ghostscript') options=('!libtool' '!makeflags') source=("http://downloads.sourceforge.net/sourceforge/pstoedit/pstoedit-${pkgver}.tar.gz" 'pstoedit-3.50-parallel.patch' 'pstoedit-3.50-plugin-close.patch') -sha1sums=('5685bef29fa00aae7cc314d3a1dd21612a98eb2b' +sha1sums=('649ade3d873429548eb6dd9f3e13cb79a8d6a1a2' '6e278b164d3e59fbb11e7fd5ae8ffb038932d69a' '54bbe019de66eb4cb8525371462595d21fbd074e') - build() { cd "${srcdir}/${pkgname}-${pkgver}" - # fix FS#19221 - [pstoedit] plugin close problem - patch -Np1 -i ../pstoedit-3.50-parallel.patch - patch -Np1 -i ../pstoedit-3.50-plugin-close.patch - sed -i 's/-pedantic//' configure ./configure --prefix=/usr diff --git a/extra/pygobject2/PKGBUILD b/extra/pygobject2/PKGBUILD new file mode 100644 index 000000000..31ec9761a --- /dev/null +++ b/extra/pygobject2/PKGBUILD @@ -0,0 +1,89 @@ +# $Id: PKGBUILD 136848 2011-09-02 11:44:37Z ibiru $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgbase=pygobject2 +pkgname=(python-gobject2 python2-gobject2 pygobject2-devel) +pkgver=2.28.6 +pkgrel=1 +arch=('i686' 'x86_64') +url="http://www.pygtk.org/" +license=('LGPL') +depends=('glib2' 'gobject-introspection') +makedepends=(python python2 python-cairo python2-cairo) +source=(http://ftp.gnome.org/pub/gnome/sources/pygobject/${pkgver%.*}/pygobject-${pkgver}.tar.xz + python3-fix-build.patch + python3-fix-maketrans.patch) +options=('!libtool') +sha256sums=('fb8a1d4f665130a125011659bd347c7339c944232163dbb9a34fd0686577adb8' + 'feafd4664f8455edf0bf8407ac45e219bb550df806ce0d601baae951e8c188ca' + '4bff9adcea13a824c45d14ec501c927df47d23c22507a2456d8b5ec885924c0a') + +build() { + cd "${srcdir}" + cp -a "pygobject-${pkgver}" python2-build + mkdir devel + + ( + cd python2-build + export PYTHON=/usr/bin/python2 + ./configure --prefix=/usr + make + ) + + ( + cd "pygobject-${pkgver}" + #patches available in 2.28 branch but unreleased. + patch -Np1 -i "${srcdir}/python3-fix-build.patch" + patch -Np1 -i "${srcdir}/python3-fix-maketrans.patch" + + ./configure --prefix=/usr + make + ) +} + +package_python-gobject2() { + pkgdesc="Python 3 bindings for GObject2" + depends+=('python' 'python-cairo' 'pygobject2-devel') + replaces=('py3gobject') + provides=("py3gobject=$pkgver") + + cd "${srcdir}/pygobject-${pkgver}" + make DESTDIR="${pkgdir}" install + + # Delete devel stuff + rm -r "$pkgdir"/usr/{bin,include,lib/pkgconfig,share/{gtk-doc,pygobject/{2.0/codegen,xsl}}} +} + +package_python2-gobject2() { + pkgdesc="Python 2 bindings for GObject2" + depends+=('python2' 'python2-cairo' 'pygobject2-devel') + replaces=('pygobject') + provides=("pygobject=$pkgver") + + cd "${srcdir}/python2-build" + make DESTDIR="${pkgdir}" install + + find "$pkgdir"/usr/share/pygobject -name '*.py' | \ + xargs sed -i "s|#![ ]*/usr/bin/env python$|#!/usr/bin/env python2|" + + # Split devel stuff + mv "$pkgdir"/usr/{bin,include,lib/pkgconfig,share/{gtk-doc,pygobject/{2.0/codegen,xsl}}} \ + "$srcdir/devel/" +} + +package_pygobject2-devel() { + pkgdesc="Development files for the pygobject bindings" + depends=(python2) + replaces=pygobject-devel + provides=pygobject-devel + + cd "${srcdir}/devel" + mkdir -p "$pkgdir"/usr/{include,lib,share/pygobject/2.0} + + mv bin "$pkgdir/usr/" + mv include "$pkgdir/usr/" + mv pkgconfig "$pkgdir/usr/lib/" + mv gtk-doc "$pkgdir/usr/share/" + mv codegen "$pkgdir/usr/share/pygobject/2.0/" + mv xsl "$pkgdir/usr/share/pygobject/" +} diff --git a/extra/pygobject2/python3-fix-build.patch b/extra/pygobject2/python3-fix-build.patch new file mode 100644 index 000000000..4cb8cfe57 --- /dev/null +++ b/extra/pygobject2/python3-fix-build.patch @@ -0,0 +1,34 @@ +From e2dc4ac346a16b6976b92e84819c7203629beb4a Mon Sep 17 00:00:00 2001 +From: Ignacio Casal Quinteiro <icq@gnome.org> +Date: Thu, 21 Apr 2011 14:52:20 +0000 +Subject: [python3] fix build. PYcairo_IMPORT doesn't exists anymore + +--- +diff --git a/gi/pygi-foreign-cairo.c b/gi/pygi-foreign-cairo.c +index 81b9865..edf52d7 100644 +--- a/gi/pygi-foreign-cairo.c ++++ b/gi/pygi-foreign-cairo.c +@@ -30,7 +30,7 @@ + #include <pycairo/py3cairo.h> + #endif + +-Pycairo_CAPI_t *Pycairo_CAPI; ++static Pycairo_CAPI_t *Pycairo_CAPI; + + #include "pygi-foreign.h" + +@@ -117,7 +117,12 @@ cairo_surface_release (GIBaseInfo *base_info, + static PyMethodDef _gi_cairo_functions[] = {0,}; + PYGLIB_MODULE_START(_gi_cairo, "_gi_cairo") + { ++#if PY_VERSION_HEX < 0x03000000 + Pycairo_IMPORT; ++#else ++ Pycairo_CAPI = (Pycairo_CAPI_t*) PyCObject_Import("cairo", "CAPI"); ++#endif ++ + if (Pycairo_CAPI == NULL) + return PYGLIB_MODULE_ERROR_RETURN; + +-- +cgit v0.9 diff --git a/extra/pygobject2/python3-fix-maketrans.patch b/extra/pygobject2/python3-fix-maketrans.patch new file mode 100644 index 000000000..f5bc0e77c --- /dev/null +++ b/extra/pygobject2/python3-fix-maketrans.patch @@ -0,0 +1,36 @@ +From 667bec76ccbc85cc1d54a0e68977dbda241c028c Mon Sep 17 00:00:00 2001 +From: Martin Pitt <martin.pitt@ubuntu.com> +Date: Wed, 13 Jul 2011 06:42:22 +0000 +Subject: [python3] Fix maketrans import + +Python3 moved the maketrans() function from the string module to a str method. +This unbreaks gi/module.py for Python 3 again. +--- +diff --git a/gi/module.py b/gi/module.py +index 70df76c..d56bdaf 100644 +--- a/gi/module.py ++++ b/gi/module.py +@@ -24,7 +24,11 @@ from __future__ import absolute_import + + import os + import gobject +-import string ++try: ++ maketrans = ''.maketrans ++except AttributeError: ++ # fallback for Python 2 ++ from string import maketrans + + import gi + from .overrides import registry +@@ -124,7 +128,7 @@ class IntrospectionModule(object): + # Don't use upper() here to avoid locale specific + # identifier conversion (e. g. in Turkish 'i'.upper() == 'i') + # see https://bugzilla.gnome.org/show_bug.cgi?id=649165 +- ascii_upper_trans = string.maketrans( ++ ascii_upper_trans = maketrans( + 'abcdefgjhijklmnopqrstuvwxyz', + 'ABCDEFGJHIJKLMNOPQRSTUVWXYZ') + for value_info in info.get_values(): +-- +cgit v0.9 diff --git a/extra/qtiplot/PKGBUILD b/extra/qtiplot/PKGBUILD index be97b60dc..41c84d82a 100644 --- a/extra/qtiplot/PKGBUILD +++ b/extra/qtiplot/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 131207 2011-07-11 21:16:26Z ronald $ +# $Id: PKGBUILD 136909 2011-09-02 18:19:47Z ronald $ # Maintainer: Ronald van Haren <ronald.archlinux.org> # Contributor: damir <damir.archlinux.org> # Contributor: Gergely Imreh <imrehg@gmail.com> pkgname=qtiplot -pkgver=0.9.8.6 +pkgver=0.9.8.8 pkgrel=1 arch=('i686' 'x86_64') url="http://soft.proindependent.com/qtiplot.html" @@ -25,7 +25,7 @@ source=(http://download.berlios.de/qtiplot/qtiplot-${pkgver}.tar.bz2 qtiplot-0.9.8.6-gold.patch qtiplot-0.9.8.6-kde.patch qtiplot-0.9.8.6-tamuanova.patch) -sha1sums=('e8a5ea1e1fb0e87cf76985f63b25e263b03f5fa9' +sha1sums=('02801cdf31b543c0f5d7ef1b1f358f0738d93d48' '4d5d7cf3965a0a1b1aa9cafc34e70ee207700bc8' '4301cb2a36024a10108b689990d28c4fe5c7416e' 'b3af6c866b3e63b537b418b6d00e57ef468f8f2b' @@ -35,14 +35,13 @@ sha1sums=('e8a5ea1e1fb0e87cf76985f63b25e263b03f5fa9' 'a1d4bec744c9b8fe29bf177851e66c97cdd9d975' '830b518e3ef63625df84363a8047417124f243b0') - build() { cd "${srcdir}/${pkgname}-${pkgver}" # gentoo fixes patch -Np1 -i "${srcdir}/qtiplot-0.9.8.6-gold.patch" patch -Np1 -i "${srcdir}/qtiplot-0.9.8.6-kde.patch" - patch -Np1 -i "${srcdir}/qtiplot-0.9.8.6-tamuanova.patch" +# patch -Np1 -i "${srcdir}/qtiplot-0.9.8.6-tamuanova.patch" # build also static qwtplot3d lib echo "unix:CONFIG += staticlib" >> 3rdparty/qwtplot3d/qwtplot3d.pro diff --git a/extra/qwt/PKGBUILD b/extra/qwt/PKGBUILD index 913a21ba7..4eac3c05c 100644 --- a/extra/qwt/PKGBUILD +++ b/extra/qwt/PKGBUILD @@ -1,8 +1,8 @@ -# $Id: PKGBUILD 131712 2011-07-13 18:32:34Z ronald $ +# $Id: PKGBUILD 136901 2011-09-02 17:44:52Z ronald $ # Maintainer: Ronald van Haren <ronald.archlinux.org> pkgname=qwt -pkgver=6.0.0 +pkgver=6.0.1 pkgrel=1 pkgdesc="Qt Widgets for Technical Applications" arch=('i686' 'x86_64') @@ -12,7 +12,7 @@ options=('!makeflags') license=("custom:$pkgname") source=("http://downloads.sourceforge.net/sourceforge/qwt/$pkgname-$pkgver.tar.bz2" \ "qwtconfig-archlinux.pri") -sha1sums=('306957fc06c90f2049aec57e13a971f54c3cb21a' +sha1sums=('301cca0c49c7efc14363b42e082b09056178973e' 'aba0fc75f6d450237028b7b143bdcf05a79cabb3') build() { @@ -33,8 +33,8 @@ package() { make INSTALL_ROOT=${pkgdir} QTDIR=/usr install # Move man files to proper directory. - install -d ${pkgdir}/usr/share/man/man3 - mv -f ${pkgdir}/usr/share/doc/qwt/man/man3/* ${pkgdir}/usr/share/man/man3 +# install -d ${pkgdir}/usr/share/man/man3 +# mv -f ${pkgdir}/usr/share/doc/qwt/man/man3/* ${pkgdir}/usr/share/man/man3 # install licence install -Dm644 ${srcdir}/${pkgname}-${pkgver}/COPYING \ diff --git a/extra/smb4k/PKGBUILD b/extra/smb4k/PKGBUILD index 280cd0fcd..ec3d45edd 100644 --- a/extra/smb4k/PKGBUILD +++ b/extra/smb4k/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 131691 2011-07-13 14:56:55Z giovanni $ +# $Id: PKGBUILD 136927 2011-09-03 00:05:20Z giovanni $ # Maintainer: Giovanni Scafora <giovanni@archlinux.org> # Contributor: Emanuele Rampichini <emanuele.rampichini@gmail.com> pkgname=smb4k -pkgver=0.10.70 +pkgver=0.10.73 pkgrel=1 pkgdesc="A KDE program that browses samba shares" arch=('i686' 'x86_64') @@ -13,7 +13,7 @@ depends=('kdebase-runtime') makedepends=('cmake' 'automoc4' 'docbook-xsl') install=smb4k.install source=("http://download.berlios.de/smb4k/${pkgname}-${pkgver}.tar.bz2") -md5sums=('30f916d8f72fc43a9eca8f344960b43a') +md5sums=('8f161a1b1146dc44217826901deb35c8') build() { cd "${srcdir}/${pkgname}-${pkgver}" diff --git a/extra/source-highlight/PKGBUILD b/extra/source-highlight/PKGBUILD index c80a86f16..037f20817 100644 --- a/extra/source-highlight/PKGBUILD +++ b/extra/source-highlight/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 133028 2011-07-26 22:29:32Z eric $ +# $Id: PKGBUILD 136931 2011-09-03 00:12:21Z giovanni $ # Maintainer: Giovanni Scafora <giovanni@archlinux.org> # Contributor: Douglas Soares de Andrade <douglas@archlinux.org> pkgname=source-highlight -pkgver=3.1.4 -pkgrel=4 +pkgver=3.1.5 +pkgrel=1 pkgdesc="Convert source code to syntax highlighted document" arch=('i686' 'x86_64') url="http://www.gnu.org/software/src-highlite/" @@ -14,7 +14,7 @@ makedepends=('ctags' 'boost') options=('!libtool') install=$pkgname.install source=("ftp://ftp.gnu.org/gnu/src-highlite/${pkgname}-${pkgver}.tar.gz") -md5sums=('becf8292b84ece6b532b0f0c92b530ee') +md5sums=('3117ee47c1c6b0668667e20d2aca3757') build() { cd "${srcdir}/${pkgname}-${pkgver}" diff --git a/gnome-unstable/colord/PKGBUILD b/gnome-unstable/colord/PKGBUILD index 20587226d..307286006 100644 --- a/gnome-unstable/colord/PKGBUILD +++ b/gnome-unstable/colord/PKGBUILD @@ -1,13 +1,13 @@ -# $Id: PKGBUILD 136591 2011-08-30 17:45:54Z ibiru $ +# $Id: PKGBUILD 136856 2011-09-02 13:05:04Z heftig $ # Maintainer: Ionut Biru <ibiru@archlinux.org> pkgname=colord pkgver=0.1.12 -pkgrel=1 +pkgrel=2 pkgdesc="Color daemon" arch=('i686' 'x86_64') url="http://www.freedesktop.org/software/colord/" license=('GPL2') -depends=('lcms2' 'sqlite3' 'polkit' 'udev') +depends=('lcms2' 'sqlite3' 'polkit' 'udev' 'sane') makedepends=('intltool' 'gobject-introspection' 'vala' 'docbook2x') source=($url/releases/$pkgname-$pkgver.tar.xz) options=('!libtool') @@ -16,7 +16,7 @@ sha1sums=(9bc0c4193c0f790702923e0a783962f0f26487e6) build() { cd "$srcdir/$pkgname-$pkgver" ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib/colord \ - --localstatedir=/var --disable-static + --localstatedir=/var --disable-static --enable-sane make } diff --git a/gnome-unstable/eog/PKGBUILD b/gnome-unstable/eog/PKGBUILD new file mode 100644 index 000000000..1c7216831 --- /dev/null +++ b/gnome-unstable/eog/PKGBUILD @@ -0,0 +1,32 @@ +# $Id: PKGBUILD 136854 2011-09-02 13:02:13Z ibiru $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgname=eog +pkgver=3.1.90 +pkgrel=1 +pkgdesc="Eye of Gnome: An image viewing and cataloging program" +arch=('i686' 'x86_64') +license=('GPL') +depends=('gnome-desktop' 'libexif' 'lcms2' 'desktop-file-utils' 'exempi' 'libpeas' 'librsvg' 'gnome-icon-theme' 'dconf') +makedepends=('gtk-doc' 'intltool') +install=eog.install +groups=('gnome-extra') +options=('!emptydirs' '!libtool') +url="http://www.gnome.org" +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz) +sha256sums=('0335c8a753579ab9ff15d5f7510dfb0a11293a8c52d4c1e4499c2b6c7abaa117') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + PYTHON=/usr/bin/python2 ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-scrollkeeper + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install + + # remove it from Xfce menu that ships its own thingy + echo "NotShowIn=XFCE" >> ${pkgdir}/usr/share/applications/eog.desktop +} diff --git a/gnome-unstable/eog/eog.install b/gnome-unstable/eog/eog.install new file mode 100644 index 000000000..284b24b18 --- /dev/null +++ b/gnome-unstable/eog/eog.install @@ -0,0 +1,19 @@ +post_install() { + usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas + update-desktop-database -q + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +pre_upgrade() { + if (( $(vercmp $2 2.90.0) < 0 )); then + usr/sbin/gconfpkg --uninstall eog + fi +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/gnome-unstable/evince/PKGBUILD b/gnome-unstable/evince/PKGBUILD new file mode 100644 index 000000000..f67f02414 --- /dev/null +++ b/gnome-unstable/evince/PKGBUILD @@ -0,0 +1,37 @@ +# $Id: PKGBUILD 136894 2011-09-02 17:09:04Z heftig $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgname=evince +pkgver=3.1.90.1 +pkgrel=1 +pkgdesc="Simply a document viewer" +url="http://projects.gnome.org/evince/" +arch=('i686' 'x86_64') +license=('GPL') +depends=('gtk3' 'libspectre' 'gsfonts' 'poppler-glib' 'djvulibre' 'gnome-icon-theme' + 't1lib' 'libgnome-keyring' 'desktop-file-utils' 'dconf' 'gsettings-desktop-schemas') +makedepends=('gnome-doc-utils' 'nautilus' 'texlive-bin' 'intltool' 'gobject-introspection') +optdepends=('texlive-bin: DVI support') +groups=('gnome-extra') +install=evince.install +options=('!libtool' '!emptydirs') +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*.*}/${pkgname}-${pkgver}.tar.xz) +sha256sums=('035c18c752e9f7f5ecbde5cd53a4d13170249eff580f671ad19eebaa24163458') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --libexecdir=/usr/lib/evince \ + --disable-static --enable-nautilus \ + --enable-pdf --enable-tiff \ + --enable-djvu --enable-dvi \ + --enable-t1lib --enable-comics \ + --disable-scrollkeeper --disable-schemas-compile \ + --enable-introspection + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install +} diff --git a/gnome-unstable/evince/evince.install b/gnome-unstable/evince/evince.install new file mode 100644 index 000000000..9643a9ba0 --- /dev/null +++ b/gnome-unstable/evince/evince.install @@ -0,0 +1,19 @@ +post_install() { + usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas + update-desktop-database -q + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +pre_upgrade() { + if (( $(vercmp $2 2.90.0) < 0 )); then + usr/sbin/gconfpkg --uninstall evince + fi +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/gnome-unstable/gdm/2.91_fix_external_program_directories.patch b/gnome-unstable/gdm/2.91_fix_external_program_directories.patch new file mode 100644 index 000000000..912b5cdae --- /dev/null +++ b/gnome-unstable/gdm/2.91_fix_external_program_directories.patch @@ -0,0 +1,48 @@ +diff -Nur gdm-2.91.91.orig/daemon/gdm-server.c gdm-2.91.91/daemon/gdm-server.c +--- gdm-2.91.91.orig/daemon/gdm-server.c 2011-02-17 19:27:53.000000000 -0800 ++++ gdm-2.91.91/daemon/gdm-server.c 2011-02-27 16:56:51.283347074 -0800 +@@ -131,7 +131,7 @@ + g_return_val_if_fail (GDM_IS_SERVER (server), NULL); + + error = NULL; +- command = g_strdup_printf (LIBEXECDIR "/ck-get-x11-display-device --display %s", ++ command = g_strdup_printf ("/usr/lib/ConsoleKit/ck-get-x11-display-device --display %s", + server->priv->display_name); + + g_debug ("GdmServer: Running helper %s", command); +diff -Nur gdm-2.91.91.orig/data/greeter-autostart/gnome-settings-daemon.desktop.in.in gdm-2.91.91/data/greeter-autostart/gnome-settings-daemon.desktop.in.in +--- gdm-2.91.91.orig/data/greeter-autostart/gnome-settings-daemon.desktop.in.in 2011-02-17 19:27:53.000000000 -0800 ++++ gdm-2.91.91/data/greeter-autostart/gnome-settings-daemon.desktop.in.in 2011-02-26 08:43:28.700009251 -0800 +@@ -1,8 +1,8 @@ + [Desktop Entry] + Type=Application + _Name=GNOME Settings Daemon +-TryExec=@LIBEXECDIR@/gnome-settings-daemon +-Exec=@LIBEXECDIR@/gnome-settings-daemon ++TryExec=/usr/bin/gnome-settings-daemon ++Exec=/usr/bin/gnome-settings-daemon + OnlyShowIn=GNOME; + X-GNOME-Autostart-Phase=Initialization + X-GNOME-Autostart-Notify=true +diff -Nur gdm-2.91.91.orig/data/greeter-autostart/polkit-gnome-authentication-agent-1.desktop.in.in gdm-2.91.91/data/greeter-autostart/polkit-gnome-authentication-agent-1.desktop.in.in +--- gdm-2.91.91.orig/data/greeter-autostart/polkit-gnome-authentication-agent-1.desktop.in.in 2011-02-17 19:27:53.000000000 -0800 ++++ gdm-2.91.91/data/greeter-autostart/polkit-gnome-authentication-agent-1.desktop.in.in 2011-02-26 08:44:06.810009153 -0800 +@@ -1,5 +1,5 @@ + [Desktop Entry] + Type=Application + _Name=PolicyKit Authentication Agent +-Exec=@LIBEXECDIR@/polkit-gnome-authentication-agent-1 ++Exec=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 + OnlyShowIn=GNOME; +diff -Nur gdm-2.91.91.orig/gui/simple-chooser/gdm-chooser-session.c gdm-2.91.91/gui/simple-chooser/gdm-chooser-session.c +--- gdm-2.91.91.orig/gui/simple-chooser/gdm-chooser-session.c 2011-02-17 19:27:53.000000000 -0800 ++++ gdm-2.91.91/gui/simple-chooser/gdm-chooser-session.c 2011-02-26 08:45:01.946675918 -0800 +@@ -131,7 +131,7 @@ + ret = FALSE; + + error = NULL; +- g_spawn_command_line_async (LIBEXECDIR "/gnome-settings-daemon", &error); ++ g_spawn_command_line_async ("/usr/bin/gnome-settings-daemon", &error); + if (error != NULL) { + g_warning ("Error starting settings daemon: %s", error->message); + g_error_free (error); diff --git a/gnome-unstable/gdm/PKGBUILD b/gnome-unstable/gdm/PKGBUILD new file mode 100644 index 000000000..5c668372f --- /dev/null +++ b/gnome-unstable/gdm/PKGBUILD @@ -0,0 +1,58 @@ +# $Id: PKGBUILD 136868 2011-09-02 14:23:08Z ibiru $ +# Maintainer: Jan de Groot <jgc@archlinux.org> +pkgname=gdm +pkgver=3.1.90 +pkgrel=1 +pkgdesc="Gnome Display Manager (a reimplementation of xdm)" +arch=('i686' 'x86_64') +license=('GPL') +url="http://www.gnome.org" +backup=('etc/pam.d/gdm' 'etc/pam.d/gdm-autologin' 'etc/gdm/custom.conf') +groups=('gnome-extra') +options=('!libtool') +depends=('libcanberra' 'libxklavier' 'gnome-session' 'upower' 'accountsservice' 'consolekit' 'xorg-xrdb' 'nss') +makedepends=('intltool' 'gnome-doc-utils' 'xorg-server') +install=gdm.install +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz + fix_external_program_directories.patch + gdm.pam + gdm-autologin.pam + gdm) +sha256sums=('3fb9c52b8a18f39539c53d84645b89836de25a3eb3a0b84388e76a4f988178bf' + 'c02af756912f744a0b32c05f2b552fd425b4d30cf9f8fe22e04be8746c325fc0' + 'f1dfa4d88288d4b0a631a68a51b46c2da537bee8fe5a99f9f288c8ff75a50b19' + '3daff680ff6b7ea56f84f40843e46e72477c81e9e405028203c942af04d07ae5' + '272c08d8e8b50bf424d0705ac864d4c18c47ec4f6893b1af732c2efbc86c9550') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/fix_external_program_directories.patch" + + ./configure --prefix=/usr --sysconfdir=/etc \ + --libexecdir=/usr/lib/gdm \ + --localstatedir=/var \ + --with-at-spi-registryd-directory=/usr/lib/at-spi2-core \ + --disable-scrollkeeper \ + --disable-static \ + --without-tcp-wrappers + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install + install -m755 -d "${pkgdir}/usr/share/gconf/schemas" + gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain gdm ${pkgdir}/etc/gconf/schemas/*.schemas + rm -r "${pkgdir}/etc/gconf/" + + install -m644 "${srcdir}/gdm.pam" "${pkgdir}/etc/pam.d/gdm" + install -m644 "${srcdir}/gdm-autologin.pam" "${pkgdir}/etc/pam.d/gdm-autologin" + sed -e 's/include\s*system-auth/required\tpam_unix.so/' -i "${pkgdir}/etc/pam.d/gdm-welcome" + + install -m755 -d "${pkgdir}/etc/rc.d" + install -m755 "${srcdir}/gdm" "${pkgdir}/etc/rc.d/" + + rmdir "${pkgdir}/var/gdm" + chmod 1770 "${pkgdir}/var/log/gdm" + rm -rf "${pkgdir}/var/run" +} diff --git a/gnome-unstable/gdm/fix_external_program_directories.patch b/gnome-unstable/gdm/fix_external_program_directories.patch new file mode 100644 index 000000000..e6f03c438 --- /dev/null +++ b/gnome-unstable/gdm/fix_external_program_directories.patch @@ -0,0 +1,24 @@ +diff -Nur gdm-3.1.90.orig/daemon/gdm-server.c gdm-3.1.90/daemon/gdm-server.c +--- gdm-3.1.90.orig/daemon/gdm-server.c 2011-09-02 13:13:16.132989960 +0000 ++++ gdm-3.1.90/daemon/gdm-server.c 2011-09-02 13:18:17.495996840 +0000 +@@ -131,7 +131,7 @@ + g_return_val_if_fail (GDM_IS_SERVER (server), NULL); + + error = NULL; +- command = g_strdup_printf (LIBEXECDIR "/ck-get-x11-display-device --display %s", ++ command = g_strdup_printf ("/usr/lib/ConsoleKit/ck-get-x11-display-device --display %s", + server->priv->display_name); + + g_debug ("GdmServer: Running helper %s", command); +diff -Nur gdm-3.1.90.orig/gui/simple-chooser/gdm-chooser-session.c gdm-3.1.90/gui/simple-chooser/gdm-chooser-session.c +--- gdm-3.1.90.orig/gui/simple-chooser/gdm-chooser-session.c 2011-09-02 13:13:16.136323327 +0000 ++++ gdm-3.1.90/gui/simple-chooser/gdm-chooser-session.c 2011-09-02 13:22:54.168703021 +0000 +@@ -131,7 +131,7 @@ + ret = FALSE; + + error = NULL; +- g_spawn_command_line_async (LIBEXECDIR "/gnome-settings-daemon", &error); ++ g_spawn_command_line_async ("/usr/lib/gnome-settings-daemon/gnome-settings-daemon", &error); + if (error != NULL) { + g_warning ("Error starting settings daemon: %s", error->message); + g_error_free (error); diff --git a/gnome-unstable/gdm/gdm b/gnome-unstable/gdm/gdm new file mode 100755 index 000000000..c3e635a6d --- /dev/null +++ b/gnome-unstable/gdm/gdm @@ -0,0 +1,36 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +case "$1" in + start) + stat_busy "Starting GDM" + /usr/sbin/gdm & + if [ $? -gt 0 ]; then + stat_fail + else + + add_daemon gdm + stat_done + fi + ;; + stop) + stat_busy "Stopping GDM" + [ -f /var/run/gdm.pid ] && kill `cat /var/run/gdm.pid` &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon gdm + stat_done + fi + ;; + restart) + $0 stop + sleep 2 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/gnome-unstable/gdm/gdm-autologin.pam b/gnome-unstable/gdm/gdm-autologin.pam new file mode 100644 index 000000000..7c2f9a985 --- /dev/null +++ b/gnome-unstable/gdm/gdm-autologin.pam @@ -0,0 +1,8 @@ +#%PAM-1.0 +auth requisite pam_nologin.so +auth required pam_env.so +auth required pam_permit.so +account required pam_unix.so +password required pam_unix.so +session required pam_limits.so +session required pam_unix.so diff --git a/gnome-unstable/gdm/gdm-vt-allocation-hack.patch b/gnome-unstable/gdm/gdm-vt-allocation-hack.patch new file mode 100644 index 000000000..56fa5a151 --- /dev/null +++ b/gnome-unstable/gdm/gdm-vt-allocation-hack.patch @@ -0,0 +1,118 @@ +diff --git a/daemon/gdm-server.c b/daemon/gdm-server.c +index 39def47..03488fd 100644 +--- a/daemon/gdm-server.c ++++ b/daemon/gdm-server.c +@@ -33,6 +33,8 @@ + #include <grp.h> + #include <signal.h> + #include <sys/resource.h> ++#include <sys/ioctl.h> ++#include <sys/vt.h> + + #include <glib.h> + #include <glib/gi18n.h> +@@ -150,6 +152,92 @@ _gdm_server_query_ck_for_display_device (GdmServer *server) + return out; + } + ++#ifndef O_NOCTTY ++# define O_NOCTTY 0 ++#endif ++ ++static int ++open_vt (int vtno) ++{ ++ char *vtname; ++ int fd; ++ ++ vtname = g_strdup_printf ("/dev/tty%d", vtno); ++ ++ do { ++ errno = 0; ++ fd = open (vtname, O_RDWR | O_NOCTTY, 0); ++ } while (errno == EINTR); ++ ++ g_free (vtname); ++ return fd; ++} ++ ++static gint ++find_first_probably_free_vt (void) ++{ ++ int fd, fdv; ++ int vtno; ++ unsigned short vtmask; ++ struct vt_stat vtstat; ++ guint v_state; ++ ++ fdv = -1; ++ ++ do { ++ errno = 0; ++ fd = open ("/dev/console", O_WRONLY | O_NOCTTY, 0); ++ } while (errno == EINTR); ++ ++ if (fd >= 0) { ++ if (ioctl (fd, VT_GETSTATE, &vtstat) >= 0) { ++ v_state = vtstat.v_state; ++ } else { ++ close (fd); ++ v_state = 0; ++ fd = -1; ++ } ++ } else { ++ v_state = 0; ++ } ++ ++ if (fd < 0) { ++ do { ++ errno = 0; ++ fd = open ("/dev/console", O_RDONLY | O_NOCTTY, 0); ++ } while (errno == EINTR); ++ ++ if (fd >= 0) { ++ if (ioctl (fd, VT_GETSTATE, &vtstat) >= 0) ++ v_state = vtstat.v_state; ++ } ++ } ++ ++ for (vtno = 7, vtmask = 1 << vtno; vtmask; vtno++, vtmask <<= 1) { ++ /* Is this console in use? */ ++ if (v_state & vtmask) ++ continue; ++ ++ /* No, try to open it */ ++ fdv = open_vt (vtno); ++ if (fdv >= 0) ++ break; ++ ++ /* If we're here, kernel indicated that the console was free, ++ * but we failed to open it. Just go on to higher VTs. */ ++ } ++ ++ if (fdv >= 0) ++ close (fdv); ++ else ++ vtno = -1; ++ ++ if (fd >= 0) ++ close (fd); ++ ++ return vtno; ++} ++ + char * + gdm_server_get_display_device (GdmServer *server) + { +@@ -310,6 +398,11 @@ gdm_server_resolve_command_line (GdmServer *server, + + if (vtarg != NULL && ! gotvtarg) { + argv[len++] = g_strdup (vtarg); ++ } else if (!query_in_arglist && !gotvtarg) { ++ gint vtnum = find_first_probably_free_vt (); ++ ++ if (vtnum > 0) ++ argv [len++] = g_strdup_printf ("vt%d", vtnum); + } + + argv[len++] = NULL; diff --git a/gnome-unstable/gdm/gdm.install b/gnome-unstable/gdm/gdm.install new file mode 100644 index 000000000..b9732be50 --- /dev/null +++ b/gnome-unstable/gdm/gdm.install @@ -0,0 +1,29 @@ +pkgname=gdm + +post_install() { + getent group gdm >/dev/null 2>&1 || groupadd -g 120 gdm + getent passwd gdm > /dev/null 2>&1 || usr/sbin/useradd -c 'Gnome Display Manager' -u 120 -g gdm -d /var/lib/gdm -s /sbin/nologin gdm + passwd -l gdm > /dev/null + chown -R gdm:gdm /var/lib/gdm > /dev/null + + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor + gconfpkg --install ${pkgname} + glib-compile-schemas usr/share/glib-2.0/schemas +} + +pre_remove() { + if [ -f usr/share/gconf/schemas/${pkgname}.schemas ]; then + gconfpkg --uninstall ${pkgname} + fi +} + +post_upgrade() { + post_install +} + +post_remove() { + glib-compile-schemas usr/share/glib-2.0/schemas + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor + getent passwd gdm >/dev/null 2>&1 && userdel gdm + getent group gdm >/dev/null 2>&1 && groupdel gdm +} diff --git a/gnome-unstable/gdm/gdm.pam b/gnome-unstable/gdm/gdm.pam new file mode 100644 index 000000000..655299cb7 --- /dev/null +++ b/gnome-unstable/gdm/gdm.pam @@ -0,0 +1,10 @@ +#%PAM-1.0 +auth requisite pam_nologin.so +auth required pam_env.so +auth required pam_unix.so +auth optional pam_gnome_keyring.so +account required pam_unix.so +session required pam_limits.so +session required pam_unix.so +session optional pam_gnome_keyring.so auto_start +password required pam_unix.so diff --git a/gnome-unstable/gnome-applets/PKGBUILD b/gnome-unstable/gnome-applets/PKGBUILD new file mode 100644 index 000000000..9392798fb --- /dev/null +++ b/gnome-unstable/gnome-applets/PKGBUILD @@ -0,0 +1,36 @@ +# $Id: PKGBUILD 136871 2011-09-02 14:46:33Z ibiru $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgname=gnome-applets +pkgver=3.1.90 +pkgrel=1 +pkgdesc="GNOME Applets" +arch=(i686 x86_64) +license=('GPL') +depends=('gnome-panel' 'libgtop' 'gucharmap' 'libnotify' 'cpufrequtils') +makedepends=('gnome-doc-utils' 'intltool' 'gnome-settings-daemon' 'networkmanager' 'gnome-common') +options=(!emptydirs) +url="http://www.gnome.org" +groups=(gnome) +install=gnome-applets.install +source=(http://download.gnome.org/sources/${pkgname}/3.1/${pkgname}-${pkgver}.tar.xz) +sha256sums=('33e102f7535705113d1fef302d53863e63f08ac354e22a96ea5d92c0db3f5f9d') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + PYTHON=/usr/bin/python2 ./configure --prefix=/usr \ + --sysconfdir=/etc --libexecdir=/usr/lib/gnome-applets \ + --localstatedir=/var --disable-static \ + --disable-scrollkeeper --disable-schemas-install \ + --without-hal + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install + + install -m755 -d "${pkgdir}/usr/share/gconf/schemas" + gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain gnome-applets-3.0 ${pkgdir}/etc/gconf/schemas/*.schemas + rm -f ${pkgdir}/etc/gconf/schemas/*.schemas +} diff --git a/gnome-unstable/gnome-applets/gnome-applets.install b/gnome-unstable/gnome-applets/gnome-applets.install new file mode 100644 index 000000000..dd9c34269 --- /dev/null +++ b/gnome-unstable/gnome-applets/gnome-applets.install @@ -0,0 +1,22 @@ +pkgname=gnome-applets + +post_install() { + usr/sbin/gconfpkg --install ${pkgname} + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +pre_upgrade() { + pre_remove $1 +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + usr/sbin/gconfpkg --uninstall ${pkgname} +} + +post_remove() { + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} diff --git a/gnome-unstable/gnome-bluetooth/61-gnome-bluetooth-rfkill.rules b/gnome-unstable/gnome-bluetooth/61-gnome-bluetooth-rfkill.rules new file mode 100644 index 000000000..a76c1e73c --- /dev/null +++ b/gnome-unstable/gnome-bluetooth/61-gnome-bluetooth-rfkill.rules @@ -0,0 +1,11 @@ +# Get access to /dev/rfkill for users +# See https://bugzilla.redhat.com/show_bug.cgi?id=514798 +# +# Updated for udev >= 154 +# http://bugs.debian.org/582188 +# https://bugzilla.redhat.com/show_bug.cgi?id=588660 + +ENV{ACL_MANAGE}=="0", GOTO="gnome_bluetooth_end" +ACTION!="add|change", GOTO="gnome_bluetooth_end" +KERNEL=="rfkill", TAG+="udev-acl" +LABEL="gnome_bluetooth_end" diff --git a/gnome-unstable/gnome-bluetooth/PKGBUILD b/gnome-unstable/gnome-bluetooth/PKGBUILD new file mode 100644 index 000000000..a4997d18d --- /dev/null +++ b/gnome-unstable/gnome-bluetooth/PKGBUILD @@ -0,0 +1,40 @@ +# $Id: PKGBUILD 136835 2011-09-02 04:51:59Z heftig $ +# Maintainer: +# Contributor: Roman Kyrylych <roman@archlinux.org> + +pkgname=gnome-bluetooth +pkgver=3.1.4 +pkgrel=1 +pkgdesc="The GNOME Bluetooth Subsystem" +arch=('i686' 'x86_64') +url="http://live.gnome.org/GnomeBluetooth" +license=('GPL' 'LGPL') +depends=('gnome-control-center' 'hicolor-icon-theme' 'gvfs-obexftp' 'obexd-client' 'dconf') +makedepends=('intltool' 'gnome-doc-utils' 'nautilus-sendto' 'gobject-introspection') +options=('!libtool' '!emptydirs') +install=gnome-bluetooth.install +source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz + 61-gnome-bluetooth-rfkill.rules) +sha256sums=('128463d3fe5457ff3996b79d2b829e16c982c863ece5dcd0e659f19288115188' + 'b8acb8ea2e7f3588575cffd8ea14ec50c8641f518f2ea899771a508b299ea474') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --disable-desktop-update \ + --disable-icon-update \ + --disable-schemas-compile + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install + + install -m644 -D "${srcdir}/61-gnome-bluetooth-rfkill.rules" \ + "${pkgdir}/lib/udev/rules.d//61-gnome-bluetooth-rfkill.rules" + install -d ${pkgdir}/etc/ld.so.conf.d + echo "/usr/lib/gnome-bluetooth" > ${pkgdir}/etc/ld.so.conf.d/${pkgname}.conf +} diff --git a/gnome-unstable/gnome-bluetooth/gnome-bluetooth.install b/gnome-unstable/gnome-bluetooth/gnome-bluetooth.install new file mode 100644 index 000000000..927142ee0 --- /dev/null +++ b/gnome-unstable/gnome-bluetooth/gnome-bluetooth.install @@ -0,0 +1,12 @@ +post_install() { + usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + post_install $1 +} diff --git a/gnome-unstable/gnome-color-manager/PKGBUILD b/gnome-unstable/gnome-color-manager/PKGBUILD new file mode 100644 index 000000000..808c21006 --- /dev/null +++ b/gnome-unstable/gnome-color-manager/PKGBUILD @@ -0,0 +1,32 @@ +# $Id: PKGBUILD 136863 2011-09-02 13:47:20Z heftig $ +# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com> + +pkgname=gnome-color-manager +pkgver=3.1.90 +pkgrel=1 +pkgdesc="Color profile manager for the GNOME desktop" +arch=(i686 x86_64) +url="http://projects.gnome.org/gnome-color-manager/" +license=(GPL2) +depends=(colord gnome-settings-daemon gnome-control-center vte3 exiv2 + hicolor-icon-theme desktop-file-utils clutter-gtk mash) +makedepends=(intltool gtk-doc) +install=gnome-color-manager.install +options=('!libtool') +source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz) +sha256sums=('6e50b1da207b8aa154ba84c59059a3b19fcae0f30ac41eb68b8de0e036d54249') + +build(){ + cd "$srcdir/$pkgname-$pkgver" + + # man pages need docbook-sgml, which we don't have + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ + --libexecdir=/usr/lib --disable-static --disable-man-pages + + make +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + make DESTDIR="$pkgdir" install +} diff --git a/gnome-unstable/gnome-color-manager/gnome-color-manager.install b/gnome-unstable/gnome-color-manager/gnome-color-manager.install new file mode 100644 index 000000000..04fda0ddc --- /dev/null +++ b/gnome-unstable/gnome-color-manager/gnome-color-manager.install @@ -0,0 +1,19 @@ +post_install() { + usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas + update-desktop-database -q + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +pre_upgrade() { + if (( $(vercmp $2 2.90.0) < 0 )); then + usr/sbin/gconfpkg --uninstall gnome-color-manager + fi +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/gnome-unstable/gnome-games/PKGBUILD b/gnome-unstable/gnome-games/PKGBUILD new file mode 100644 index 000000000..2838f5ee8 --- /dev/null +++ b/gnome-unstable/gnome-games/PKGBUILD @@ -0,0 +1,43 @@ +# $Id: PKGBUILD 136888 2011-09-02 16:27:34Z heftig $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgname=gnome-games +pkgver=3.1.90 +pkgrel=1 +pkgdesc="Some Games for GNOME" +arch=('i686' 'x86_64') +license=('GPL') +depends=('libsm' 'gconf' 'guile' 'desktop-file-utils' 'libcanberra' 'clutter-gtk' 'hicolor-icon-theme' 'librsvg' 'seed' 'pygobject') +makedepends=('gnome-doc-utils' 'intltool' 'gobject-introspection') +provides=('glchess') +conflicts=('glchess') +options=('!emptydirs' '!libtool') +install=gnome-games.install +url="http://www.gnome.org" +groups=('gnome-extra') +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz) +sha256sums=('f4b865a86d0dc02645b65e33fcdd4e1a04fdce4acb849951e4cfb37fe6c18d77') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + PYTHON=/usr/bin/python2 ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-scrollkeeper \ + --disable-static \ + --with-scores-user=root --with-scores-group=games \ + --enable-introspection=yes + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make -j1 GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install + + # Remove all scores, we generate them from postinstall + rm -rf "${pkgdir}/var" + + install -m755 -d "${pkgdir}/usr/share/gconf/schemas" + gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain gnome-games ${pkgdir}/etc/gconf/schemas/*.schemas + rm -f ${pkgdir}/etc/gconf/schemas/*.schemas + + sed -i 's_#! /usr/bin/env python_#!/usr/bin/env python2_' ${pkgdir}/usr/bin/gnome-sudoku +} diff --git a/gnome-unstable/gnome-games/gnome-games.install b/gnome-unstable/gnome-games/gnome-games.install new file mode 100644 index 000000000..1f67c2e01 --- /dev/null +++ b/gnome-unstable/gnome-games/gnome-games.install @@ -0,0 +1,153 @@ +pkgname=gnome-games +scores=(glines.Large.scores + glines.Medium.scores + glines.Small.scores + gnibbles.1.0.scores + gnibbles.1.1.scores + gnibbles.2.0.scores + gnibbles.2.1.scores + gnibbles.3.0.scores + gnibbles.3.1.scores + gnibbles.4.0.scores + gnibbles.4.1.scores + gnobots2.classic_robots-safe.scores + gnobots2.classic_robots-super-safe.scores + gnobots2.classic_robots.scores + gnobots2.nightmare-safe.scores + gnobots2.nightmare-super-safe.scores + gnobots2.nightmare.scores + gnobots2.robots2-safe.scores + gnobots2.robots2-super-safe.scores + gnobots2.robots2.scores + gnobots2.robots2_easy-safe.scores + gnobots2.robots2_easy-super-safe.scores + gnobots2.robots2_easy.scores + gnobots2.robots_with_safe_teleport-safe.scores + gnobots2.robots_with_safe_teleport-super-safe.scores + gnobots2.robots_with_safe_teleport.scores + gnomine.Custom.scores + gnomine.Large.scores + gnomine.Medium.scores + gnomine.Small.scores + gnotravex.2x2.scores + gnotravex.3x3.scores + gnotravex.4x4.scores + gnotravex.5x5.scores + gnotravex.6x6.scores + gnotski.1.scores + gnotski.10.scores + gnotski.11.scores + gnotski.12.scores + gnotski.13.scores + gnotski.14.scores + gnotski.15.scores + gnotski.16.scores + gnotski.17.scores + gnotski.18.scores + gnotski.19.scores + gnotski.2.scores + gnotski.20.scores + gnotski.21.scores + gnotski.22.scores + gnotski.23.scores + gnotski.24.scores + gnotski.25.scores + gnotski.26.scores + gnotski.27.scores + gnotski.28.scores + gnotski.29.scores + gnotski.3.scores + gnotski.30.scores + gnotski.31.scores + gnotski.32.scores + gnotski.33.scores + gnotski.34.scores + gnotski.35.scores + gnotski.36.scores + gnotski.37.scores + gnotski.4.scores + gnotski.5.scores + gnotski.6.scores + gnotski.7.scores + gnotski.8.scores + gnotski.9.scores + gtali.Colors.scores + gtali.Regular.scores + mahjongg.bridges.scores + mahjongg.cloud.scores + mahjongg.confounding.scores + mahjongg.difficult.scores + mahjongg.dragon.scores + mahjongg.easy.scores + mahjongg.pyramid.scores + mahjongg.tictactoe.scores + mahjongg.ziggurat.scores + swell-foop.Large.scores + swell-foop.Medium.scores + swell-foop.Small.scores + quadrapassel.scores) + +post_install() { + usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas + usr/sbin/gconfpkg --install ${pkgname} + update-desktop-database -q + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor + + for sz in Large Medium Small; do + if [ -e "opt/gnome/var/games/same-gnome.${sz}.scores" ]; then + mv "opt/gnome/var/games/same-gnome.${sz}.scores" \ + "var/games/swell-foop.${sz}.scores" + elif [ -e "var/games/same-gnome.${sz}.scores" ]; then + mv "var/games/same-gnome.${sz}.scores" \ + "var/games/swell-foop.${sz}.scores" + fi + done + if [ -e "opt/gnome/var/games/gnometris.scores" ]; then + mv "opt/gnome/var/games/gnometris.scores" \ + "var/games/quadrapassel.scores" + elif [ -e "var/games/gnometris.scores" ]; then + mv "var/games/gnometris.scores" \ + "var/games/quadrapassel.scores" + fi + + for score in "${scores[@]}" ; do + if [ -e "var/games/${score}" ]; then + continue + fi + if [ -e "opt/gnome/var/games/${score}" ]; then + mv "opt/gnome/var/games/${score}" var/games/ + else + touch "var/games/${score}" + fi + chown root:games "var/games/${score}" + chmod 664 "var/games/${score}" + done +} + +pre_upgrade() { + pre_remove $1 +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + usr/sbin/gconfpkg --uninstall ${pkgname} + + if [ -f usr/share/ggz/gnect-client.dsc ]; then + ggz-config -r -m usr/share/ggz/gnect-client.dsc >& /dev/null + ggz-config -r -m usr/share/ggz/gnibbles-client.dsc >& /dev/null + ggz-config -r -m usr/share/ggz/iagno-client.dsc >& /dev/null + fi +} + +post_remove() { + usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas + update-desktop-database -q + gtk-update-icon-cache -q -f -t usr/share/icons/hicolor + + for score in "${scores[@]}" ; do + rm -f "var/games/${score}" + done +} diff --git a/gnome-unstable/gnome-keyring/PKGBUILD b/gnome-unstable/gnome-keyring/PKGBUILD index e0e7cd043..1b31febf4 100644 --- a/gnome-unstable/gnome-keyring/PKGBUILD +++ b/gnome-unstable/gnome-keyring/PKGBUILD @@ -1,13 +1,13 @@ -#$Id: PKGBUILD 136804 2011-09-01 16:56:45Z ibiru $ +#$Id: PKGBUILD 136929 2011-09-03 00:09:33Z ibiru $ # Maintainer: Jan De Groot <jgc@archlinux.org> pkgname=gnome-keyring pkgver=3.1.90 -pkgrel=1 +pkgrel=2 pkgdesc="GNOME Password Management daemon" arch=(i686 x86_64) license=('GPL' 'LGPL') -depends=('gtk3' 'dconf' 'libgcrypt' 'p11-kit' 'desktop-file-utils' 'hicolor-icon-theme') +depends=('gtk3' 'dconf' 'libgcrypt' 'libcap-ng' 'p11-kit' 'desktop-file-utils' 'hicolor-icon-theme') makedepends=('intltool' 'python2') groups=('gnome') options=('!libtool' '!emptydirs') diff --git a/gnome-unstable/gnome-keyring/gnome-keyring.install b/gnome-unstable/gnome-keyring/gnome-keyring.install index 630857290..37d76c56a 100644 --- a/gnome-unstable/gnome-keyring/gnome-keyring.install +++ b/gnome-unstable/gnome-keyring/gnome-keyring.install @@ -3,6 +3,7 @@ post_install() { update-mime-database usr/share/mime 1> /dev/null gtk-update-icon-cache -q -t -f usr/share/icons/hicolor update-desktop-database -q + setcap cap_ipc_lock=ep usr/bin/gnome-keyring-daemon } post_upgrade() { diff --git a/gnome-unstable/gnome-panel/PKGBUILD b/gnome-unstable/gnome-panel/PKGBUILD new file mode 100644 index 000000000..da5792a99 --- /dev/null +++ b/gnome-unstable/gnome-panel/PKGBUILD @@ -0,0 +1,38 @@ +# $Id: PKGBUILD 136869 2011-09-02 14:24:33Z ibiru $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgname=gnome-panel +pkgver=3.1.5 +pkgrel=1 +arch=('i686' 'x86_64') +license=('GPL') +pkgdesc="The GNOME Panel" +url="http://www.gnome.org" +depends=('gnome-menus' 'gnome-desktop' 'evolution-data-server' 'librsvg' 'libwnck3' 'libsm' 'dconf' 'telepathy-glib') +makedepends=('gnome-doc-utils' 'intltool' 'gobject-introspection' 'networkmanager' 'libcanberra') +install=gnome-panel.install +groups=('gnome') +replaces=('gnome-panel-bonobo') +provides=("gnome-panel-bonobo=${pkgver}") +options=('!libtool' '!emptydirs') +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz) +sha256sums=('86214f5abebac973073dd3102813add2dcc199567c6ba2bbd48305ed53d9a19b') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + PYTHON=/usr/bin/python2 ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static \ + --libexecdir=/usr/lib/gnome-panel \ + --disable-scrollkeeper \ + --disable-schemas-compile + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install + + install -m755 -d "${pkgdir}/usr/share/gconf/schemas" + gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain gnome-panel-3.0 ${pkgdir}/etc/gconf/schemas/*.schemas + rm -f ${pkgdir}/etc/gconf/schemas/*.schemas +} diff --git a/gnome-unstable/gnome-panel/gnome-panel.install b/gnome-unstable/gnome-panel/gnome-panel.install new file mode 100644 index 000000000..e3175df5e --- /dev/null +++ b/gnome-unstable/gnome-panel/gnome-panel.install @@ -0,0 +1,24 @@ +pkgname=gnome-panel + +post_install() { + usr/sbin/gconfpkg --install ${pkgname} + usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +pre_upgrade() { + pre_remove +} + +post_upgrade() { + post_install +} + +pre_remove() { + usr/sbin/gconfpkg --uninstall ${pkgname} +} + +post_remove() { + usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} diff --git a/gnome-unstable/gnome-screensaver/PKGBUILD b/gnome-unstable/gnome-screensaver/PKGBUILD new file mode 100644 index 000000000..e6576a9e5 --- /dev/null +++ b/gnome-unstable/gnome-screensaver/PKGBUILD @@ -0,0 +1,36 @@ +# $Id: PKGBUILD 136937 2011-09-03 00:52:21Z ibiru $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgname=gnome-screensaver +pkgver=3.1.90 +pkgrel=1 +pkgdesc="Screensaver designed to integrate well with the GNOME desktop." +arch=('i686' 'x86_64') +license=('GPL') +url="http://live.gnome.org/GnomeScreensaver" +backup=(etc/pam.d/gnome-screensaver) +depends=('dbus-glib' 'libgnomekbd' 'gnome-desktop' 'gsettings-desktop-schemas') +makedepends=('pkgconfig' 'intltool' 'libxss') +groups=('gnome') +options=(!emptydirs) +install=gnome-screensaver.install +source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz + gnome-screensaver.pam) +sha256sums=('0ed0620dd32f763386f1d98b445d29d1c257a2c1c57f511ccaeb984f673f3c27' + '2744d1fc39da46fc681b7cf1c9230d2035b2bb8d9f510213fbe439c114eb76a2') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc \ + --libexecdir=/usr/lib/gnome-screensaver \ + --localstatedir=/var \ + --with-mit-ext + + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install + install -Dm644 "${srcdir}/gnome-screensaver.pam" "${pkgdir}/etc/pam.d/gnome-screensaver" +} diff --git a/gnome-unstable/gnome-screensaver/gnome-screensaver.install b/gnome-unstable/gnome-screensaver/gnome-screensaver.install new file mode 100644 index 000000000..3b0e06046 --- /dev/null +++ b/gnome-unstable/gnome-screensaver/gnome-screensaver.install @@ -0,0 +1,7 @@ +pkgname=gnome-screensaver + +pre_upgrade() { + if [ -f usr/share/gconf/schemas/${pkgname}.schemas ]; then + usr/sbin/gconfpkg --uninstall ${pkgname} + fi +} diff --git a/gnome-unstable/gnome-screensaver/gnome-screensaver.pam b/gnome-unstable/gnome-screensaver/gnome-screensaver.pam new file mode 100644 index 000000000..c776a5410 --- /dev/null +++ b/gnome-unstable/gnome-screensaver/gnome-screensaver.pam @@ -0,0 +1,3 @@ +#%PAM-1.0 +auth required pam_unix_auth.so +auth optional pam_gnome_keyring.so diff --git a/gnome-unstable/gnome-shell/PKGBUILD b/gnome-unstable/gnome-shell/PKGBUILD new file mode 100644 index 000000000..9e3bb3b9b --- /dev/null +++ b/gnome-unstable/gnome-shell/PKGBUILD @@ -0,0 +1,39 @@ +# $Id: PKGBUILD 136881 2011-09-02 16:06:28Z ibiru $ +# Maintainer: Ionut Biru <ibiru@archlinux.org> +# Contributor: Flamelab <panosfilip@gmail.com + +pkgname=gnome-shell +pkgver=3.1.90.1 +pkgrel=1 +pkgdesc="The next generation GNOME Shell" +arch=('i686' 'x86_64') +url="http://live.gnome.org/GnomeShell" +license=('GPL2') +depends=('mutter' 'gjs' 'libcroco' 'gnome-bluetooth' 'folks' 'telepathy-logger' 'networkmanager') +makedepends=('intltool' 'gnome-doc-utils') +optdepends=('network-manager-applet: shell integration for networkmanager' + 'gnome-power-manager: shell integration for power management') +options=('!libtool' '!emptydirs') +install=gnome-shell.install +groups=(gnome) +source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver%.*.*}/$pkgname-$pkgver.tar.xz) +sha256sums=('710d5aeb32a22b7ecf53c3a74ab1f12ada64428ec23ff68ba1c96fe7a7f0cb4e') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + + PYTHON=/usr/bin/python2 ./configure --prefix=/usr --sysconfdir=/etc \ + --libexecdir=/usr/lib/gnome-shell \ + --localstatedir=/var --disable-static \ + --disable-schemas-compile + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install + + install -m755 -d "${pkgdir}/usr/share/gconf/schemas" + gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain gnome-shell ${pkgdir}/etc/gconf/schemas/*.schemas + rm -f ${pkgdir}/etc/gconf/schemas/*.schemas +} diff --git a/gnome-unstable/gnome-shell/gnome-shell.install b/gnome-unstable/gnome-shell/gnome-shell.install new file mode 100644 index 000000000..a07105c24 --- /dev/null +++ b/gnome-unstable/gnome-shell/gnome-shell.install @@ -0,0 +1,22 @@ +pkgname=gnome-shell + +post_install() { + glib-compile-schemas usr/share/glib-2.0/schemas + usr/sbin/gconfpkg --install ${pkgname} +} + +pre_upgrade() { + pre_remove $1 +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + usr/sbin/gconfpkg --uninstall ${pkgname} +} + +post_remove() { + glib-compile-schemas usr/share/glib-2.0/schemas +} diff --git a/gnome-unstable/grilo/PKGBUILD b/gnome-unstable/grilo/PKGBUILD new file mode 100644 index 000000000..e09f67740 --- /dev/null +++ b/gnome-unstable/grilo/PKGBUILD @@ -0,0 +1,27 @@ +# $Id: PKGBUILD 136898 2011-09-02 17:34:31Z heftig $ +# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com> + +pkgname=grilo +pkgver=0.1.16 +pkgrel=1 +pkgdesc="Framework that provides access to various sources of multimedia content" +url="http://www.gnome.org" +arch=('i686' 'x86_64') +license=('LGPL') +depends=('gtk3' 'libxml2' 'libsoup') +makedepends=('gobject-introspection' 'gtk-doc' 'vala') +options=('!libtool' '!emptydirs') +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2) +sha256sums=('690dabd2bf0fb5f1f11ec9c69005c7c7b1b7c1585dc9ab7b93d3ee3aab284c74') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + sed -i 's/vala-0.12/vala-0.14/g' configure + ./configure --prefix=/usr --sysconfdir=/etc --disable-static + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install +} diff --git a/gnome-unstable/libcap-ng/PKGBUILD b/gnome-unstable/libcap-ng/PKGBUILD new file mode 100644 index 000000000..f19e7038e --- /dev/null +++ b/gnome-unstable/libcap-ng/PKGBUILD @@ -0,0 +1,30 @@ +# $Id: PKGBUILD 136925 2011-09-02 23:57:33Z ibiru $ +# Maintainer: Ionut Biru <ibiru@archlinux.org> +# Contributor: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar> + +pkgname=libcap-ng +pkgver=0.6.6 +pkgrel=1 +pkgdesc="A library intended to make programming with POSIX capabilities much easier than the traditional libcap" +arch=('i686' 'x86_64') +url="http://people.redhat.com/sgrubb/libcap-ng/" +license=('GPL2' 'LGPL2.1') +depends=('glibc') +options=('!libtool') +source=(http://people.redhat.com/sgrubb/$pkgname/$pkgname-$pkgver.tar.gz) +md5sums=('eb71f967cecb44b4342baac98ef8cb0f') + +build() { + cd $srcdir/$pkgname-$pkgver + + ./configure --prefix=/usr --enable-static=no --with-python=no + make +} + +package() { + cd $srcdir/$pkgname-$pkgver + + make DESTDIR=$pkgdir install +} + +# vim:set ts=2 sw=2 et: diff --git a/gnome-unstable/libpeas/PKGBUILD b/gnome-unstable/libpeas/PKGBUILD new file mode 100644 index 000000000..5b272047c --- /dev/null +++ b/gnome-unstable/libpeas/PKGBUILD @@ -0,0 +1,31 @@ +# $Id: PKGBUILD 136852 2011-09-02 12:37:57Z ibiru $ +# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com> +pkgname=libpeas +pkgver=1.1.3 +pkgrel=1 +pkgdesc="A GObject-based plugins engine" +arch=('i686' 'x86_64') +url="http://www.gtk.org/" +license=('GPL2') +depends=('gtk3' 'hicolor-icon-theme' 'gobject-introspection') +makedepends=('gtk-doc' 'intltool' 'vala' 'python2-gobject' 'gjs' 'seed') +optdepends=('gjs: gobject-based plugin engine - gjs runtime loader' + 'seed: gbject-based plugin engine - seed runtime loader') +options=('!libtool') +install=libpeas.install +source=(http://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-${pkgver}.tar.xz) +sha256sums=('74e80a86f7f34bb03ab914ecd6f5fb8201c062f577b9b60317e6cc72bbedb2c0') + +build() { + cd "$srcdir/$pkgname-$pkgver" + PYTHON=/usr/bin/python2 ./configure --prefix=/usr \ + --sysconfdir=/etc --localstatedir=/var + make +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + make DESTDIR="${pkgdir}" install +} + +# vim:set ts=2 sw=2 et: diff --git a/gnome-unstable/libpeas/libpeas.install b/gnome-unstable/libpeas/libpeas.install new file mode 100644 index 000000000..1a05f573e --- /dev/null +++ b/gnome-unstable/libpeas/libpeas.install @@ -0,0 +1,11 @@ +post_install() { + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/gnome-unstable/mash/PKGBUILD b/gnome-unstable/mash/PKGBUILD new file mode 100644 index 000000000..8093bf8fc --- /dev/null +++ b/gnome-unstable/mash/PKGBUILD @@ -0,0 +1,26 @@ +# $Id: PKGBUILD 136860 2011-09-02 13:21:16Z heftig $ +# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com> + +pkgname=mash +pkgver=0.1.0 +pkgrel=1 +pkgdesc="A small library for using 3D models within a Clutter scene" +arch=('i686' 'x86_64') +url="http://clutter-project.org/" +options=('!libtool') +license=('LGPL') +depends=('clutter') +makedepends=('gtk-doc' 'gobject-introspection') +source=(http://www.clutter-project.org/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2) +sha256sums=('81f4b01d5661010dd742d4a82f9af4555624601ba3fb4e0780cfe2b34c13c24f') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --disable-static + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install +} diff --git a/gnome-unstable/mutter/PKGBUILD b/gnome-unstable/mutter/PKGBUILD new file mode 100644 index 000000000..4a718fbc4 --- /dev/null +++ b/gnome-unstable/mutter/PKGBUILD @@ -0,0 +1,36 @@ +# $Id: PKGBUILD 136864 2011-09-02 14:00:59Z ibiru $ +# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com> +# Maintainer: Ionut Biru <ibiru@archlinux.org> +# Contributor: Michael Kanis <mkanis_at_gmx_dot_de> + +pkgname=mutter +pkgver=3.1.90.1 +pkgrel=1 +pkgdesc="A window manager for GNOME" +arch=(i686 x86_64) +license=('GPL') +depends=('startup-notification' 'gconf' 'zenity' 'libcanberra' 'clutter' 'gobject-introspection') +makedepends=('intltool' 'gnome-doc-utils') +url="http://www.gnome.org" +groups=('gnome') +options=('!libtool' '!emptydirs') +install=mutter.install +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*.*}/${pkgname}-${pkgver}.tar.xz) +sha256sums=('6ff689cc3f533fce8682bd8a0eaf50147b0e5d831be8d91cc9b00cf49dfb5bd3') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc \ + --libexecdir=/usr/lib/mutter \ + --localstatedir=/var --disable-static + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install + + install -m755 -d "${pkgdir}/usr/share/gconf/schemas" + gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain mutter ${pkgdir}/etc/gconf/schemas/*.schemas + rm -f ${pkgdir}/etc/gconf/schemas/*.schemas +} diff --git a/gnome-unstable/mutter/mutter.install b/gnome-unstable/mutter/mutter.install new file mode 100644 index 000000000..199f12584 --- /dev/null +++ b/gnome-unstable/mutter/mutter.install @@ -0,0 +1,17 @@ +pkgname=mutter + +post_install() { + usr/sbin/gconfpkg --install ${pkgname} +} + +pre_upgrade() { + pre_remove $1 +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + usr/sbin/gconfpkg --uninstall ${pkgname} +} diff --git a/gnome-unstable/mx/PKGBUILD b/gnome-unstable/mx/PKGBUILD new file mode 100644 index 000000000..cbe98dcab --- /dev/null +++ b/gnome-unstable/mx/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 136911 2011-09-02 18:22:52Z heftig $ +# Contributor: Andrea Scarpino <andrea@archlinux.org> +# Contributor: Guenther Wutz <admin@wutzara.de> + +pkgname=mx +pkgver=1.3.1 +pkgrel=1 +pkgdesc="A widget toolkit using Clutter" +arch=('i686' 'x86_64') +url="http://www.clutter-project.org" +license=('LGPL') +depends=('clutter' 'libxrandr' 'dbus-glib' 'gtk2' 'startup-notification') +makedepends=('intltool' 'gobject-introspection' 'gtk-doc') +options=('!libtool') +source=("http://source.clutter-project.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz") +sha256sums=('4fab2d721252afe041165b909c503cca80e426aeeeb9f46676365ec25bb51cfa') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + + ./configure --prefix=/usr + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install +} diff --git a/gnome-unstable/nautilus/PKGBUILD b/gnome-unstable/nautilus/PKGBUILD new file mode 100644 index 000000000..11914a97b --- /dev/null +++ b/gnome-unstable/nautilus/PKGBUILD @@ -0,0 +1,34 @@ +# $Id: PKGBUILD 136839 2011-09-02 08:13:37Z ibiru $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgname=nautilus +pkgver=3.1.90 +pkgrel=1 +pkgdesc="GNOME file manager" +arch=('i686' 'x86_64') +license=('GPL') +depends=('libexif' 'gnome-desktop' 'exempi' 'gvfs' 'desktop-file-utils' 'gnome-icon-theme' 'dconf') +makedepends=('intltool' 'gobject-introspection') +url="http://www.gnome.org" +groups=('gnome') +options=('!libtool' '!emptydirs') +install=nautilus.install +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz) +sha256sums=('0770544a533f63c969377105afdce1bf66073152604a669e242a5e78502045ad') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static \ + --libexecdir=/usr/lib/nautilus \ + --disable-nst-extension \ + --disable-update-mimedb \ + --disable-packagekit \ + --disable-schemas-compile + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install +} diff --git a/gnome-unstable/nautilus/nautilus.install b/gnome-unstable/nautilus/nautilus.install new file mode 100644 index 000000000..631e38649 --- /dev/null +++ b/gnome-unstable/nautilus/nautilus.install @@ -0,0 +1,20 @@ +post_install() { + usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas + update-desktop-database -q + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor + update-mime-database usr/share/mime > /dev/null +} + +pre_upgrade() { + if (( $(vercmp $2 2.90.0) < 0 )); then + usr/sbin/gconfpkg --uninstall nautilus + fi +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/gnome-unstable/pygobject/PKGBUILD b/gnome-unstable/pygobject/PKGBUILD new file mode 100644 index 000000000..19317b013 --- /dev/null +++ b/gnome-unstable/pygobject/PKGBUILD @@ -0,0 +1,58 @@ +# $Id: PKGBUILD 136917 2011-09-02 19:06:48Z ibiru $ +# Maintainer: Ionut Biru <ibiru@archlinux.org> + +pkgbase=pygobject +pkgname=(python-gobject python2-gobject) +pkgver=2.90.3 +pkgrel=3 +arch=('i686' 'x86_64') +url="https://live.gnome.org/PyGObject" +license=('LGPL') +depends=('glib2' 'gobject-introspection') +makedepends=(python python2 python-cairo python2-cairo) +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgbase}/${pkgver%.*}/${pkgbase}-${pkgver}.tar.xz + documentation-location.patch) +options=('!libtool') +sha256sums=('8e14f8db0780ad26a8ce6583da30313463ca40519b35f5cda8780f02bd6ddca4' + '6174cdeea99e134168ef8235251d9c3802200ee75dc63f86144de75f864e1344') + +build() { + cd "${srcdir}" + cp -a "${pkgbase}-${pkgver}" python2-build + + ( + cd python2-build + patch -Np1 -i ${srcdir}/documentation-location.patch + autoreconf -fi + export PYTHON=/usr/bin/python2 + ./configure --prefix=/usr + make + ) + + ( + cd "${pkgbase}-${pkgver}" + patch -Np1 -i ${srcdir}/documentation-location.patch + autoreconf -fi + ./configure --prefix=/usr + make + ) +} + +package_python-gobject() { + pkgdesc="Python 3 bindings for GObject" + depends+=('python' 'python-cairo') + + cd "${srcdir}/${pkgbase}-${pkgver}" + make DESTDIR="${pkgdir}" install + rm -rf "${pkgdir}/usr/lib/python3.2/site-packages/gtk-2.0/" +} + +package_python2-gobject() { + pkgdesc="Python 2 bindings for GObject" + depends+=('python2' 'python2-cairo') + conflicts=('python-gobject') + + cd "${srcdir}/python2-build" + make DESTDIR="${pkgdir}" install + rm -rf "${pkgdir}/usr/lib/python2.7/site-packages/gtk-2.0/" +} diff --git a/gnome-unstable/pygobject/documentation-location.patch b/gnome-unstable/pygobject/documentation-location.patch new file mode 100644 index 000000000..a3bacd345 --- /dev/null +++ b/gnome-unstable/pygobject/documentation-location.patch @@ -0,0 +1,39 @@ +From 07cbf21a0c729000db28da7cb9ba08e5b79f7674 Mon Sep 17 00:00:00 2001 +From: Dieter Verfaillie <dieterv@optionexplicit.be> +Date: Tue, 23 Aug 2011 10:45:50 +0200 +Subject: [PATCH] Fix documentation installation directory + +--- + docs/Makefile.am | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/docs/Makefile.am b/docs/Makefile.am +index 775e1e9..b9086a9 100644 +--- a/docs/Makefile.am ++++ b/docs/Makefile.am +@@ -1,3 +1,4 @@ ++PLATFORM_VERSION = 3.0 + REF_VERSION = $(PYGOBJECT_MAJOR_VERSION).$(PYGOBJECT_MINOR_VERSION) + FULL_VERSION = $(REF_VERSION).$(PYGOBJECT_MICRO_VERSION) + +@@ -52,7 +53,7 @@ XSL_FILES = \ + # so the date is newer then the files in HTML_FILES + FIXXREF = xsl/fixxref.py + +-TARGET_DIR = $(datadir)/gtk-doc/html/pygobject ++TARGET_DIR = $(datadir)/gtk-doc/html/pygobject-$(PLATFORM_VERSION) + CSSdir = $(TARGET_DIR) + CSS_DATA = $(CSS_FILES) + +@@ -75,7 +76,7 @@ uninstall-local: + rm -f $(DESTDIR)$(TARGET_DIR)/* + + +-XSLdir = $(datadir)/pygobject/xsl ++XSLdir = $(datadir)/pygobject-$(PLATFORM_VERSION)/xsl + XSL_DATA = $(XSL_FILES) $(FIXXREF) + + EXTRA_DIST = \ +-- +1.7.6.msysgit.0 + diff --git a/gnome-unstable/pygobject2/PKGBUILD b/gnome-unstable/pygobject2/PKGBUILD new file mode 100644 index 000000000..5aef1bcb4 --- /dev/null +++ b/gnome-unstable/pygobject2/PKGBUILD @@ -0,0 +1,87 @@ +# $Id: PKGBUILD 136913 2011-09-02 18:43:01Z ibiru $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgbase=pygobject2 +pkgname=(python-gobject2 python2-gobject2 pygobject2-devel) +pkgver=2.28.6 +pkgrel=2 +arch=('i686' 'x86_64') +url="http://www.pygtk.org/" +license=('LGPL') +depends=('glib2' 'pygobject2-devel') +makedepends=(python python2 'namcap') +source=(http://ftp.gnome.org/pub/gnome/sources/pygobject/${pkgver%.*}/pygobject-${pkgver}.tar.xz + python3-fix-build.patch + python3-fix-maketrans.patch) +options=('!libtool') +sha256sums=('fb8a1d4f665130a125011659bd347c7339c944232163dbb9a34fd0686577adb8' + 'feafd4664f8455edf0bf8407ac45e219bb550df806ce0d601baae951e8c188ca' + '4bff9adcea13a824c45d14ec501c927df47d23c22507a2456d8b5ec885924c0a') + +build() { + cd "${srcdir}" + cp -a "pygobject-${pkgver}" python2-build + mkdir devel + + ( + cd python2-build + export PYTHON=/usr/bin/python2 + ./configure --prefix=/usr --disable-introspection + make + ) + + ( + cd "pygobject-${pkgver}" + #patches available in 2.28 branch but unreleased. + patch -Np1 -i "${srcdir}/python3-fix-build.patch" + patch -Np1 -i "${srcdir}/python3-fix-maketrans.patch" + + ./configure --prefix=/usr --disable-introspection + make + ) +} + +package_python-gobject2() { + pkgdesc="Python 3 bindings for GObject2" + replaces=('py3gobject') + provides=("py3gobject=$pkgver") + + cd "${srcdir}/pygobject-${pkgver}" + make DESTDIR="${pkgdir}" install + + # Delete devel stuff + rm -r "$pkgdir"/usr/{bin,include,lib/pkgconfig,share/{gtk-doc,pygobject/{2.0/codegen,xsl}}} +} + +package_python2-gobject2() { + pkgdesc="Python 2 bindings for GObject2" + replaces=('pygobject') + provides=("pygobject=$pkgver") + + cd "${srcdir}/python2-build" + make DESTDIR="${pkgdir}" install + + find "$pkgdir"/usr/share/pygobject -name '*.py' | \ + xargs sed -i "s|#![ ]*/usr/bin/env python$|#!/usr/bin/env python2|" + + # Split devel stuff + mv "$pkgdir"/usr/{bin,include,lib/pkgconfig,share/{gtk-doc,pygobject/{2.0/codegen,xsl}}} \ + "$srcdir/devel/" +} + +package_pygobject2-devel() { + pkgdesc="Development files for the pygobject bindings" + depends=('python2') + replaces=('pygobject-devel') + provides=('pygobject-devel') + + cd "${srcdir}/devel" + mkdir -p "$pkgdir"/usr/{include,lib,share/pygobject/2.0} + + mv bin "$pkgdir/usr/" + mv include "$pkgdir/usr/" + mv pkgconfig "$pkgdir/usr/lib/" + mv gtk-doc "$pkgdir/usr/share/" + mv codegen "$pkgdir/usr/share/pygobject/2.0/" + mv xsl "$pkgdir/usr/share/pygobject/" +} diff --git a/gnome-unstable/pygobject2/python3-fix-build.patch b/gnome-unstable/pygobject2/python3-fix-build.patch new file mode 100644 index 000000000..4cb8cfe57 --- /dev/null +++ b/gnome-unstable/pygobject2/python3-fix-build.patch @@ -0,0 +1,34 @@ +From e2dc4ac346a16b6976b92e84819c7203629beb4a Mon Sep 17 00:00:00 2001 +From: Ignacio Casal Quinteiro <icq@gnome.org> +Date: Thu, 21 Apr 2011 14:52:20 +0000 +Subject: [python3] fix build. PYcairo_IMPORT doesn't exists anymore + +--- +diff --git a/gi/pygi-foreign-cairo.c b/gi/pygi-foreign-cairo.c +index 81b9865..edf52d7 100644 +--- a/gi/pygi-foreign-cairo.c ++++ b/gi/pygi-foreign-cairo.c +@@ -30,7 +30,7 @@ + #include <pycairo/py3cairo.h> + #endif + +-Pycairo_CAPI_t *Pycairo_CAPI; ++static Pycairo_CAPI_t *Pycairo_CAPI; + + #include "pygi-foreign.h" + +@@ -117,7 +117,12 @@ cairo_surface_release (GIBaseInfo *base_info, + static PyMethodDef _gi_cairo_functions[] = {0,}; + PYGLIB_MODULE_START(_gi_cairo, "_gi_cairo") + { ++#if PY_VERSION_HEX < 0x03000000 + Pycairo_IMPORT; ++#else ++ Pycairo_CAPI = (Pycairo_CAPI_t*) PyCObject_Import("cairo", "CAPI"); ++#endif ++ + if (Pycairo_CAPI == NULL) + return PYGLIB_MODULE_ERROR_RETURN; + +-- +cgit v0.9 diff --git a/gnome-unstable/pygobject2/python3-fix-maketrans.patch b/gnome-unstable/pygobject2/python3-fix-maketrans.patch new file mode 100644 index 000000000..f5bc0e77c --- /dev/null +++ b/gnome-unstable/pygobject2/python3-fix-maketrans.patch @@ -0,0 +1,36 @@ +From 667bec76ccbc85cc1d54a0e68977dbda241c028c Mon Sep 17 00:00:00 2001 +From: Martin Pitt <martin.pitt@ubuntu.com> +Date: Wed, 13 Jul 2011 06:42:22 +0000 +Subject: [python3] Fix maketrans import + +Python3 moved the maketrans() function from the string module to a str method. +This unbreaks gi/module.py for Python 3 again. +--- +diff --git a/gi/module.py b/gi/module.py +index 70df76c..d56bdaf 100644 +--- a/gi/module.py ++++ b/gi/module.py +@@ -24,7 +24,11 @@ from __future__ import absolute_import + + import os + import gobject +-import string ++try: ++ maketrans = ''.maketrans ++except AttributeError: ++ # fallback for Python 2 ++ from string import maketrans + + import gi + from .overrides import registry +@@ -124,7 +128,7 @@ class IntrospectionModule(object): + # Don't use upper() here to avoid locale specific + # identifier conversion (e. g. in Turkish 'i'.upper() == 'i') + # see https://bugzilla.gnome.org/show_bug.cgi?id=649165 +- ascii_upper_trans = string.maketrans( ++ ascii_upper_trans = maketrans( + 'abcdefgjhijklmnopqrstuvwxyz', + 'ABCDEFGJHIJKLMNOPQRSTUVWXYZ') + for value_info in info.get_values(): +-- +cgit v0.9 diff --git a/gnome-unstable/seahorse/PKGBUILD b/gnome-unstable/seahorse/PKGBUILD new file mode 100644 index 000000000..a672bdfc4 --- /dev/null +++ b/gnome-unstable/seahorse/PKGBUILD @@ -0,0 +1,34 @@ +# $Id: PKGBUILD 136875 2011-09-02 14:51:00Z ibiru $ +# Maintainer: Jan de Groot <jgc@archlinux.org> +# Contributor: Michel Brabants <michel.linux@tiscali.be> + +pkgname=seahorse +pkgver=3.1.90 +pkgrel=1 +pkgdesc="GNOME application for managing PGP keys." +arch=(i686 x86_64) +license=('GPL') +url="http://projects.gnome.org/seahorse/" +depends=('gtk3' 'libgnome-keyring' 'gnome-keyring' 'libsoup' 'gpgme' 'desktop-file-utils' 'hicolor-icon-theme' 'dconf') +makedepends=('gettext' 'libldap' 'intltool' 'pkgconfig' 'gnome-doc-utils' 'gobject-introspection' 'openssh' 'libsm') +options=('!libtool' '!emptydirs') +groups=('gnome-extra') +install=seahorse.install +source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz) +sha256sums=('e866d3dd46d3e1e303bc76fa47073a0fb48b8825fe9839157ac37916e4cd19a2') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static \ + --enable-ldap --enable-hkp \ + --disable-scrollkeeper \ + --disable-update-mime-database \ + --disable-schemas-compile + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install +} diff --git a/gnome-unstable/seahorse/seahorse.install b/gnome-unstable/seahorse/seahorse.install new file mode 100644 index 000000000..9a98d52e0 --- /dev/null +++ b/gnome-unstable/seahorse/seahorse.install @@ -0,0 +1,21 @@ +pkgname=seahorse + +post_install() { + glib-compile-schemas usr/share/glib-2.0/schemas + update-desktop-database -q + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +pre_upgrade() { + if [ -f usr/share/gconf/schemas/$pkgname.schemas ]; then + usr/sbin/gconfpkg --uninstall $pkgname + fi +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/multilib/lib32-gtk2/PKGBUILD b/multilib/lib32-gtk2/PKGBUILD index da890b247..cd2373e56 100644 --- a/multilib/lib32-gtk2/PKGBUILD +++ b/multilib/lib32-gtk2/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 49586 2011-06-18 08:35:08Z bluewind $ +# $Id: PKGBUILD 55098 2011-09-02 12:49:18Z bluewind $ # Maintainer: Ionut Biru <ibiru@archlinux.org # Contributor: Pierre Schmitz <pierre@archlinux.de> # Contributor: Mikko Seppälä <t-r-a-y@mbnet.fi> _pkgbasename=gtk2 pkgname=lib32-$_pkgbasename -pkgver=2.24.5 +pkgver=2.24.6 pkgrel=1 pkgdesc="The GTK+ Toolkit (v2) (32-bit)" arch=('x86_64') @@ -20,7 +20,7 @@ license=('LGPL') source=(http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-${pkgver}.tar.xz xid-collision-debug.patch gtk-modules-32.patch) -sha256sums=('d6b30889efbb9fab9aa598092d08887826a7b2a3069b3bd5155dede28d9866f3' +sha256sums=('8a026b545dc1fa0c1a69b395232ad7c8ee8fa260be5f7d9a2f2ffcd799efefca' 'd758bb93e59df15a4ea7732cf984d1c3c19dff67c94b957575efea132b8fe558' '2effb13404442ae266d4c663347e88cd1ca19e9a83b452da1743bac16af9c7b0') diff --git a/multilib/lib32-keyutils/PKGBUILD b/multilib/lib32-keyutils/PKGBUILD index 347bbe56a..8398edd1d 100644 --- a/multilib/lib32-keyutils/PKGBUILD +++ b/multilib/lib32-keyutils/PKGBUILD @@ -2,7 +2,7 @@ # Maintainer: Tobias Powalowski <tpowa@archlinux.org> _pkgbasename=keyutils pkgname=lib32-$_pkgbasename -pkgver=1.4 +pkgver=1.5.2 pkgrel=1 pkgdesc="Linux Key Management Utilities (32-bit)" arch=(x86_64) @@ -11,6 +11,7 @@ license=('GPL2' 'LGPL2.1') depends=(lib32-glibc $_pkgbasename) makedepends=(gcc-multilib) source=(http://people.redhat.com/~dhowells/$_pkgbasename/$_pkgbasename-$pkgver.tar.bz2) +md5sums=('19811ee31f683058a9aae3e6a3a23a7f') build() { cd "$srcdir/$_pkgbasename-$pkgver" @@ -19,7 +20,6 @@ build() { export CXX="g++ -m32" export PKG_CONFIG_PATH="/usr/lib32/pkgconfig" - sed -i -e '/CFLAGS/s|:= -g -O2|+=|' Makefile sed -i -e 's/^\(USR\)\?LIBDIR\s*:=.*$/\1LIBDIR=\/usr\/lib32/' Makefile make CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" } @@ -30,4 +30,3 @@ package() { rm -rf "${pkgdir}"/{usr/{include,share,bin,sbin},etc,{s,}bin} } -md5sums=('e168c1bdaf5aa93c2cbf8a5e7f8ef27b') diff --git a/testing/diffutils/PKGBUILD b/testing/diffutils/PKGBUILD index 871dcd363..502ab22f5 100644 --- a/testing/diffutils/PKGBUILD +++ b/testing/diffutils/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 135546 2011-08-15 04:47:49Z allan $ +# $Id: PKGBUILD 136919 2011-09-02 23:36:04Z allan $ # Maintainer: Allan McRae <allan@archlinux.org> # Contributor: Andreas Radke <andyrtr@archlinux.org> pkgname=diffutils -pkgver=3.1 +pkgver=3.2 pkgrel=1 pkgdesc="Utility programs used for creating patch files" arch=('i686' 'x86_64') @@ -13,7 +13,7 @@ groups=('base') depends=('glibc' 'sh') install=diffutils.install source=(ftp://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.xz) -md5sums=('fbb1d804849fa32ff5853f028a3be46f') +md5sums=('26ff64c332429c830c154be46b393382') build() { cd ${srcdir}/${pkgname}-${pkgver} diff --git a/testing/iptables/PKGBUILD b/testing/iptables/PKGBUILD new file mode 100644 index 000000000..d856612e3 --- /dev/null +++ b/testing/iptables/PKGBUILD @@ -0,0 +1,69 @@ +# $Id: PKGBUILD 136877 2011-09-02 16:01:49Z ronald $ +# Maintainer: Ronald van Haren <ronald.archlinux.org> +# Contributor: Thomas Baechler <thomas@archlinux.org> + +pkgname=iptables +pkgver=1.4.12.1 +pkgrel=1 +pkgdesc="A Linux kernel packet control tool" +arch=('i686' 'x86_64') +license=('GPL2') +url="http://www.netfilter.org/projects/iptables/index.html" +depends=('glibc' 'bash') +makedepends=('linux-api-headers') +options=('!libtool') +source=(http://www.iptables.org/projects/iptables/files/${pkgname}-${pkgver}.tar.bz2 + iptables + ip6tables + empty.rules + simple_firewall.rules + iptables.conf.d + empty-filter.rules + empty-mangle.rules + empty-nat.rules + empty-raw.rules + empty-security.rules) +backup=(etc/conf.d/iptables) +sha1sums=('86022c3b5129ad7105f5087ec1349e99cc5a9728' + '5bb6fa526665cdd728c26f0f282f5a51f220cf88' + '2db68906b603e5268736f48c8e251f3a49da1d75' + '83b3363878e3660ce23b2ad325b53cbd6c796ecf' + '9907f9e815592837abc7fa3264a401567b7606ab' + 'cdb830137192bbe002c6d01058656bd053ed0ddd' + 'd9f9f06b46b4187648e860afa0552335aafe3ce4' + 'c45b738b5ec4cfb11611b984c21a83b91a2d58f3' + '1694d79b3e6e9d9d543f6a6e75fed06066c9a6c6' + '7db53bb882f62f6c677cc8559cff83d8bae2ef73' + 'ebbd1424a1564fd45f455a81c61ce348f0a14c2e') +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + + # http://bugs.archlinux.org/task/17046 + sed -i '87 i libxt_RATEEST.so: libxt_RATEEST.oo' extensions/GNUmakefile.in + sed -i '88 i \\t${AM_VERBOSE_CCLD} ${CCLD} ${AM_LDFLAGS} -lm -shared ${LDFLAGS} -o $@ $<;\n' extensions/GNUmakefile.in + + # FS#25358: libxt_statistic.so undefined symbol: lround + export LDFLAGS="-lm" + + ./configure --prefix=/usr \ + --libexecdir=/usr/lib/iptables --sysconfdir=/etc \ + --with-xtlibdir=/usr/lib/iptables \ + --enable-devel --enable-libipq + + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install + + cd "${srcdir}" + install -D -m755 iptables "${pkgdir}"/etc/rc.d/iptables + install -D -m755 ip6tables "${pkgdir}"/etc/rc.d/ip6tables + install -D -m644 empty.rules "${pkgdir}"/etc/iptables/empty.rules + install -D -m644 simple_firewall.rules "${pkgdir}"/etc/iptables/simple_firewall.rules + install -D -m644 iptables.conf.d "${pkgdir}"/etc/conf.d/iptables + + mkdir -p "${pkgdir}/var/lib/iptables" + install -m644 empty-{filter,mangle,nat,raw,security}.rules ${pkgdir}/var/lib/iptables/ +} diff --git a/testing/iptables/empty-filter.rules b/testing/iptables/empty-filter.rules new file mode 100644 index 000000000..5a4de4876 --- /dev/null +++ b/testing/iptables/empty-filter.rules @@ -0,0 +1,6 @@ +# Empty iptables filter table rule file +*filter +:INPUT ACCEPT [0:0] +:FORWARD ACCEPT [0:0] +:OUTPUT ACCEPT [0:0] +COMMIT diff --git a/testing/iptables/empty-mangle.rules b/testing/iptables/empty-mangle.rules new file mode 100644 index 000000000..49d493c4d --- /dev/null +++ b/testing/iptables/empty-mangle.rules @@ -0,0 +1,8 @@ +# Empty iptables mangle table rules file +*mangle +:PREROUTING ACCEPT [0:0] +:INPUT ACCEPT [0:0] +:FORWARD ACCEPT [0:0] +:OUTPUT ACCEPT [0:0] +:POSTROUTING ACCEPT [0:0] +COMMIT diff --git a/testing/iptables/empty-nat.rules b/testing/iptables/empty-nat.rules new file mode 100644 index 000000000..437e96411 --- /dev/null +++ b/testing/iptables/empty-nat.rules @@ -0,0 +1,7 @@ +# Empty iptables nat table rules file +*nat +:PREROUTING ACCEPT [0:0] +:INPUT ACCEPT [0:0] +:OUTPUT ACCEPT [0:0] +:POSTROUTING ACCEPT [0:0] +COMMIT diff --git a/testing/iptables/empty-raw.rules b/testing/iptables/empty-raw.rules new file mode 100644 index 000000000..8dc50d23e --- /dev/null +++ b/testing/iptables/empty-raw.rules @@ -0,0 +1,5 @@ +# Empty iptables raw table rules file +*raw +:PREROUTING ACCEPT [0:0] +:OUTPUT ACCEPT [0:0] +COMMIT diff --git a/testing/iptables/empty-security.rules b/testing/iptables/empty-security.rules new file mode 100644 index 000000000..4531fa13f --- /dev/null +++ b/testing/iptables/empty-security.rules @@ -0,0 +1,6 @@ +# Empty iptables security table rules file +*security +:INPUT ACCEPT [0:0] +:FORWARD ACCEPT [0:0] +:OUTPUT ACCEPT [0:0] +COMMIT diff --git a/testing/iptables/empty.rules b/testing/iptables/empty.rules new file mode 100644 index 000000000..e24e1aa30 --- /dev/null +++ b/testing/iptables/empty.rules @@ -0,0 +1,6 @@ +# Empty iptables rule file +*filter +:INPUT ACCEPT [0:0] +:FORWARD ACCEPT [0:0] +:OUTPUT ACCEPT [0:0] +COMMIT diff --git a/testing/iptables/ip6tables b/testing/iptables/ip6tables new file mode 100755 index 000000000..2d119e3ed --- /dev/null +++ b/testing/iptables/ip6tables @@ -0,0 +1,69 @@ +#!/bin/bash + +# source application-specific settings +[ -f /etc/conf.d/iptables ] && . /etc/conf.d/iptables + +# Set defaults if settings are missing +[ -z "$IP6TABLES_CONF" ] && IP6TABLES_CONF=/etc/iptables/ip6tables.rules + +. /etc/rc.conf +. /etc/rc.d/functions + +case "$1" in + start) + if [ ! -f "$IP6TABLES_CONF" ]; then + echo "Cannot load ip6tables rules: $IP6TABLES_CONF is missing!" >&2 + exit 1 + fi + stat_busy "Starting IP6 Tables" + if [ "$IPTABLES_FORWARD" = "1" ]; then + echo 1 >/proc/sys/net/ipv6/conf/default/forwarding + echo 1 >/proc/sys/net/ipv6/conf/all/forwarding + fi + if ck_daemon ip6tables; then + /usr/sbin/ip6tables-restore < $IP6TABLES_CONF + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon ip6tables + stat_done + fi + else + stat_fail + fi + ;; + stop) + stat_busy "Stopping IP6 Tables" + if ! ck_daemon ip6tables; then + fail=0 + for table in $(cat /proc/net/ip6_tables_names); do + ip6tables-restore < /var/lib/iptables/empty-$table.rules + [ $? -gt 0 ] && fail=1 + done + if [ $fail -gt 0 ]; then + stat_fail + else + rm_daemon ip6tables + stat_done + fi + else + stat_fail + fi + ;; + restart) + $0 stop + $0 start + ;; + save) + stat_busy "Saving IP6 Tables" + /usr/sbin/ip6tables-save >$IP6TABLES_CONF + if [ $? -gt 0 ]; then + stat_fail + else + stat_done + fi + ;; + *) + echo "usage: $0 {start|stop|restart|save}" +esac +exit 0 diff --git a/testing/iptables/iptables b/testing/iptables/iptables new file mode 100755 index 000000000..fbb02face --- /dev/null +++ b/testing/iptables/iptables @@ -0,0 +1,68 @@ +#!/bin/bash + +# source application-specific settings +[ -f /etc/conf.d/iptables ] && . /etc/conf.d/iptables + +# Set defaults if settings are missing +[ -z "$IPTABLES_CONF" ] && IPTABLES_CONF=/etc/iptables/iptables.rules + +. /etc/rc.conf +. /etc/rc.d/functions + +case "$1" in + start) + if [ ! -f "$IPTABLES_CONF" ]; then + echo "Cannot load iptables rules: $IPTABLES_CONF is missing!" >&2 + exit 1 + fi + stat_busy "Starting IP Tables" + if [ "$IPTABLES_FORWARD" = "1" ]; then + echo 1 >/proc/sys/net/ipv4/ip_forward + fi + if ck_daemon iptables; then + /usr/sbin/iptables-restore < $IPTABLES_CONF + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon iptables + stat_done + fi + else + stat_fail + fi + ;; + stop) + stat_busy "Stopping IP Tables" + if ! ck_daemon iptables; then + fail=0 + for table in $(cat /proc/net/ip_tables_names); do + iptables-restore < /var/lib/iptables/empty-$table.rules + [ $? -gt 0 ] && fail=1 + done + if [ $fail -gt 0 ]; then + stat_fail + else + rm_daemon iptables + stat_done + fi + else + stat_fail + fi + ;; + restart) + $0 stop + $0 start + ;; + save) + stat_busy "Saving IP Tables" + /usr/sbin/iptables-save >$IPTABLES_CONF + if [ $? -gt 0 ]; then + stat_fail + else + stat_done + fi + ;; + *) + echo "usage: $0 {start|stop|restart|save}" +esac +exit 0 diff --git a/testing/iptables/iptables.conf.d b/testing/iptables/iptables.conf.d new file mode 100644 index 000000000..1c6cc7b5d --- /dev/null +++ b/testing/iptables/iptables.conf.d @@ -0,0 +1,12 @@ +# Configuration for iptables rules +IPTABLES_CONF=/etc/iptables/iptables.rules +IP6TABLES_CONF=/etc/iptables/ip6tables.rules + +# Enable IP forwarding (both IPv4 and IPv6) +# NOTE: this is not the recommended way to do this, and is supported only for +# backward compatibility. Instead, use /etc/sysctl.conf and set the following +# options: +# * net.ipv4.ip_forward=1 +# * net.ipv6.conf.default.forwarding=1 +# * net.ipv6.conf.all.forwarding=1 +#IPTABLES_FORWARD=0 diff --git a/testing/iptables/simple_firewall.rules b/testing/iptables/simple_firewall.rules new file mode 100644 index 000000000..e1604cc36 --- /dev/null +++ b/testing/iptables/simple_firewall.rules @@ -0,0 +1,11 @@ +*filter +:INPUT DROP [0:0] +:FORWARD DROP [0:0] +:OUTPUT ACCEPT [0:0] +-A INPUT -p icmp -j ACCEPT +-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT +-A INPUT -i lo -j ACCEPT +-A INPUT -p tcp -j REJECT --reject-with tcp-reset +-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable +-A INPUT -j REJECT --reject-with icmp-proto-unreachable +COMMIT diff --git a/testing/perl/PKGBUILD b/testing/perl/PKGBUILD index 56152f25d..c7fd16191 100644 --- a/testing/perl/PKGBUILD +++ b/testing/perl/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 135875 2011-08-19 22:28:42Z eric $ +# $Id: PKGBUILD 136841 2011-09-02 08:20:58Z bluewind $ # Maintainer: Angel Velasquez <angvp@archlinux.org> # Contributor: kevin <kevin.archlinux.org> # Contributor: judd <jvinet.zeroflux.org> # Contributor: francois <francois.archlinux.org> pkgname=perl pkgver=5.14.1 -pkgrel=4 +pkgrel=5 pkgdesc="A highly capable, feature-rich programming language" arch=(i686 x86_64) license=('GPL' 'PerlArtistic') @@ -23,7 +23,7 @@ options=('!makeflags' '!purge') md5sums=('97cd306a2c22929cc141a09568f43bb0' '5ed2542fdb9a60682f215bd33701e61a' '1f0cbbee783e8a6d32f01be5118e0d5e' - '6124591798c83c386975f7ef35514f0e' + '31fc0b5bb4935414394c5cfbec2cb8e5' 'c25d86206d649046538c3daab7874564') build() { diff --git a/testing/perl/provides.pl b/testing/perl/provides.pl index f5f5f20a0..3bf369577 100644 --- a/testing/perl/provides.pl +++ b/testing/perl/provides.pl @@ -258,15 +258,29 @@ sub version package main; +my %CPANNAME = ('List-Util' => 'Scalar-List-Utils', + 'Text-Tabs' => 'Text-Tabs+Wrap', + 'Cwd' => 'PathTools'); + my $perldir = shift or die "Usage: $0 [path to perl source directory]\n"; die "$perldir is not a valid directory." unless -d $perldir; -my @dists = sort { $a->[0] cmp $b->[0] } - (Dists::find($perldir), Modules::find($perldir)); - +my @dists = (Dists::find($perldir), Modules::find($perldir)); for my $dist (@dists) { - my ($name, $ver) = @$dist; + my $name = $dist->[0]; + $dist->[0] = $CPANNAME{$name} if exists $CPANNAME{$name}; +} + +my @pkgs = map { + my ($name, $ver) = @$_; $name = Dist2Pkg::name($name); $ver = Dist2Pkg::version($ver); + [ $name, $ver ]; +} @dists; + +@pkgs = sort { $a->[0] cmp $b->[0] } @pkgs; + +for my $pkg (@pkgs) { + my ($name, $ver) = @$pkg; print "$name=$ver\n"; } |