From 7f188658c1e6a9eaf4d9644bc725c78c3f6cc5c6 Mon Sep 17 00:00:00 2001
From: Cecil Hugh Watson <knoppmyth@gmail.com>
Date: Tue, 13 Jan 2009 21:23:14 -0800
Subject: Various packages needed for deps of Miro.

---
 abs/extra-testing/fam/PKGBUILD                     |  49 ++
 abs/extra-testing/fam/fam                          |  44 +
 abs/extra-testing/fam/fam-2.7.0-dnotify.patch      | 975 +++++++++++++++++++++
 abs/extra-testing/fam/fam-2.7.0-gcc43.patch        |  46 +
 abs/extra-testing/fam/fam-2.7.0-largefiles.patch   |   8 +
 abs/extra-testing/fam/fam-2.7.0-noc++.patch        |  83 ++
 abs/extra-testing/fam/include_fam_h.patch          |  11 +
 abs/extra-testing/gnome-keyring/PKGBUILD           |  34 +
 .../gnome-keyring/gnome-keyring.install            |  19 +
 .../gnome-keyring/gnome-keyring.service            |   3 +
 abs/extra-testing/gnome-mime-data/PKGBUILD         |  25 +
 abs/extra-testing/gtk-doc/PKGBUILD                 |  23 +
 abs/extra-testing/gtk-doc/gtk-doc.install          |  14 +
 abs/extra-testing/hunspell/ChangeLog               |   6 +
 abs/extra-testing/hunspell/PKGBUILD                |  23 +
 abs/extra-testing/jade/PKGBUILD                    |  31 +
 abs/extra-testing/libbonobo/PKGBUILD               |  30 +
 .../libbonobo/bonobo-activation-config.xml         |  14 +
 abs/extra-testing/libbonobo/libbonobo.install      |  23 +
 abs/extra-testing/portmap/PKGBUILD                 |  24 +
 abs/extra-testing/portmap/gcc3-errno_h.patch       |  18 +
 abs/extra-testing/portmap/portmap                  |  38 +
 abs/extra-testing/portmap/portmap_5beta.patch.bz2  | Bin 0 -> 9958 bytes
 abs/extra-testing/rarian/PKGBUILD                  |  29 +
 abs/extra-testing/rarian/user-segfault.patch       |  14 +
 abs/extra-testing/shared-mime-info/PKGBUILD        |  22 +
 .../shared-mime-info/shared-mime-info.install      |  12 +
 abs/extra-testing/startup-notification/PKGBUILD    |  19 +
 28 files changed, 1637 insertions(+)
 create mode 100644 abs/extra-testing/fam/PKGBUILD
 create mode 100755 abs/extra-testing/fam/fam
 create mode 100644 abs/extra-testing/fam/fam-2.7.0-dnotify.patch
 create mode 100644 abs/extra-testing/fam/fam-2.7.0-gcc43.patch
 create mode 100644 abs/extra-testing/fam/fam-2.7.0-largefiles.patch
 create mode 100644 abs/extra-testing/fam/fam-2.7.0-noc++.patch
 create mode 100644 abs/extra-testing/fam/include_fam_h.patch
 create mode 100644 abs/extra-testing/gnome-keyring/PKGBUILD
 create mode 100644 abs/extra-testing/gnome-keyring/gnome-keyring.install
 create mode 100644 abs/extra-testing/gnome-keyring/gnome-keyring.service
 create mode 100644 abs/extra-testing/gnome-mime-data/PKGBUILD
 create mode 100644 abs/extra-testing/gtk-doc/PKGBUILD
 create mode 100644 abs/extra-testing/gtk-doc/gtk-doc.install
 create mode 100644 abs/extra-testing/hunspell/ChangeLog
 create mode 100644 abs/extra-testing/hunspell/PKGBUILD
 create mode 100644 abs/extra-testing/jade/PKGBUILD
 create mode 100644 abs/extra-testing/libbonobo/PKGBUILD
 create mode 100644 abs/extra-testing/libbonobo/bonobo-activation-config.xml
 create mode 100644 abs/extra-testing/libbonobo/libbonobo.install
 create mode 100644 abs/extra-testing/portmap/PKGBUILD
 create mode 100644 abs/extra-testing/portmap/gcc3-errno_h.patch
 create mode 100755 abs/extra-testing/portmap/portmap
 create mode 100644 abs/extra-testing/portmap/portmap_5beta.patch.bz2
 create mode 100644 abs/extra-testing/rarian/PKGBUILD
 create mode 100644 abs/extra-testing/rarian/user-segfault.patch
 create mode 100644 abs/extra-testing/shared-mime-info/PKGBUILD
 create mode 100644 abs/extra-testing/shared-mime-info/shared-mime-info.install
 create mode 100644 abs/extra-testing/startup-notification/PKGBUILD

diff --git a/abs/extra-testing/fam/PKGBUILD b/abs/extra-testing/fam/PKGBUILD
new file mode 100644
index 0000000..e7f5e41
--- /dev/null
+++ b/abs/extra-testing/fam/PKGBUILD
@@ -0,0 +1,49 @@
+# $Id: PKGBUILD 15741 2008-10-18 01:59:29Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+pkgname=fam
+pkgver=2.7.0
+pkgrel=11
+pkgdesc="File Alteration Monitor - used by KDE, GNOME and others"
+arch=('i686' 'x86_64')
+license=('LGPL' 'GPL')
+depends=('portmap')
+url="http://oss.sgi.com/projects/fam/"
+backup=(etc/fam/fam.conf)
+options=('!makeflags') # Don't !libtool
+source=(ftp://oss.sgi.com/projects/fam/download/stable/${pkgname}-${pkgver}.tar.gz
+	fam-2.7.0-dnotify.patch
+	fam-2.7.0-largefiles.patch
+	fam-2.7.0-noc++.patch
+	fam-2.7.0-gcc43.patch
+	include_fam_h.patch
+	fam)
+md5sums=('1bf3ae6c0c58d3201afc97c6a4834e39'
+         '073d1763318344635ea316293390205c'
+         '47b41e0b0498793af004696a096d7da1'
+         '0274cd113d3dcb015653b5606c7714ac'
+         '13c14778038aa9601a27498448e855e0'
+         '2638b8ffacb9f03b6e438e08ea7b290a'
+         '45b648907ba1c7edec17fb544f1f4a13')
+
+build() {
+  cd ${srcdir}/${pkgname}-${pkgver}
+  patch -Np1 -i ${srcdir}/fam-2.7.0-dnotify.patch || return 1
+  patch -Np1 -i ${srcdir}/fam-2.7.0-largefiles.patch || return 1
+  patch -Np0 -i ${srcdir}/include_fam_h.patch || return 1
+  patch -Np1 -i ${srcdir}/fam-2.7.0-noc++.patch || return 1
+  patch -Np1 -i ${srcdir}/fam-2.7.0-gcc43.patch || return 1
+
+  chmod 755 configure || return 1
+
+  autoheader || return 1
+  aclocal || return 1
+  automake -a -c || return 1
+  autoconf || return 1
+  libtoolize --copy --force || return 1
+
+  ./configure --prefix=/usr --sysconfdir=/etc/fam
+  make || return 1
+  make DESTDIR=${pkgdir} install
+  install -D -m755 ../fam ${pkgdir}/etc/rc.d/fam
+}
diff --git a/abs/extra-testing/fam/fam b/abs/extra-testing/fam/fam
new file mode 100755
index 0000000..3acceff
--- /dev/null
+++ b/abs/extra-testing/fam/fam
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/famd`
+case "$1" in
+  start)
+    #Check for running portmap, start when not running
+    ck_daemon portmap && /etc/rc.d/portmap start
+    stat_busy "Starting File Alteration Monitor"
+    if [ ! -f /var/run/daemons/portmap ]; then
+      stat_fail
+      echo "ERROR: PORTMAP is not running"
+      exit 1
+    fi
+    if [ -z "$PID" ]; then
+       /usr/sbin/famd -T 0 -c /etc/fam/fam.conf
+    fi
+    if [ ! -z "$PID" -o $? -gt 0 ]; then
+      stat_fail
+    else
+      add_daemon fam
+      stat_done
+    fi
+    ;;
+  stop)
+    stat_busy "Stopping File Alteration Monitor"
+    [ ! -z "$PID" ]  && kill $PID &> /dev/null
+    if [ $? -gt 0 ]; then
+      stat_fail
+    else
+      rm_daemon fam
+      stat_done
+    fi
+    ;;
+  restart)
+    $0 stop
+    sleep 1
+    $0 start
+    ;;
+  *)
+    echo "usage: $0 {start|stop|restart}"  
+esac
diff --git a/abs/extra-testing/fam/fam-2.7.0-dnotify.patch b/abs/extra-testing/fam/fam-2.7.0-dnotify.patch
new file mode 100644
index 0000000..1d8910e
--- /dev/null
+++ b/abs/extra-testing/fam/fam-2.7.0-dnotify.patch
@@ -0,0 +1,975 @@
+--- fam-2.7.0/src/DNotify.c++	2004-01-30 00:00:00.000000000 +0100
++++ fam-2.7.0.dnotify/src/DNotify.c++	2004-01-30 00:00:00.000000000 +0100
+@@ -0,0 +1,582 @@
++//  Copyright (C) 2001 Red Hat, Inc.  All Rights Reserved.
++//  Copyright (C) 1999 Silicon Graphics, Inc.  All Rights Reserved.
++//  
++//  This program is free software; you can redistribute it and/or modify it
++//  under the terms of version 2 of the GNU General Public License as
++//  published by the Free Software Foundation.
++//
++//  This program is distributed in the hope that it would be useful, but
++//  WITHOUT ANY WARRANTY; without even the implied warranty of
++//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  Further, any
++//  license provided herein, whether implied or otherwise, is limited to
++//  this program in accordance with the express provisions of the GNU
++//  General Public License.  Patent licenses, if any, provided herein do not
++//  apply to combinations of this program with other product or programs, or
++//  any other product whatsoever.  This program is distributed without any
++//  warranty that the program is delivered free of the rightful claim of any
++//  third person by way of infringement or the like.  See the GNU General
++//  Public License for more details.
++//
++//  You should have received a copy of the GNU General Public License along
++//  with this program; if not, write the Free Software Foundation, Inc., 59
++//  Temple Place - Suite 330, Boston MA 02111-1307, USA.
++
++#define _GNU_SOURCE  
++#include <fcntl.h>
++
++#include <string.h>
++#include <signal.h>
++#include <stdio.h>
++#include <unistd.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <libgen.h>
++
++#include "DNotify.h"
++
++#include "Interest.h"
++#include "Log.h"
++#include "Scheduler.h"
++#include <memory>
++
++
++int DNotify::pipe_write_fd = -2;
++int DNotify::pipe_read_fd = -2;
++volatile sig_atomic_t DNotify::queue_overflowed = 0;
++volatile sig_atomic_t DNotify::queue_changed = 0;
++int DNotify::change_queue[QUEUESIZE];
++volatile int DNotify::queue_head = 0; // Only modified by read handler
++volatile int DNotify::queue_tail = 0; // Only modified by signal handler
++DNotify::EventHandler DNotify::ehandler;
++
++DNotify::DirWatch *DNotify::dir_hash[DIR_HASHSIZE];
++DNotify::FileWatch *DNotify::file_hash[FILE_HASHSIZE];
++
++struct DNotify::FileWatch
++{
++    DirWatch *dir_watch;
++    dev_t file_dev;
++    ino_t file_ino;
++    FileWatch *next; // The DirWatch.watches list
++    FileWatch *hash_link;
++};
++
++struct DNotify::DirWatch
++{
++    int fd;
++    dev_t dir_dev;
++    ino_t dir_ino;
++    
++    DirWatch *hash_link;
++    FileWatch *watches;
++};
++
++struct DNotify::ChangeEventData
++{
++    dev_t file_dev;
++    ino_t file_ino;
++};    
++
++DNotify::DNotify(EventHandler h)
++{
++    assert(ehandler == NULL);
++    ehandler = h;
++}
++
++DNotify::~DNotify()
++{
++    if (pipe_read_fd >= 0)
++    {
++	//  Tell the scheduler.
++
++	(void) Scheduler::remove_read_handler(pipe_read_fd);
++
++	//  Close the pipe.
++
++	if (close(pipe_read_fd) < 0)
++	    Log::perror("can't pipe read end");
++	else
++	    Log::debug("closed pipe read end");
++	
++	if (close(pipe_write_fd) < 0)
++	    Log::perror("can't pipe write end");
++	else
++	    Log::debug("closed pipe write end");
++	pipe_read_fd = -1;
++    }
++    ehandler = NULL;
++}
++
++void
++DNotify::overflow_signal_handler(int sig, siginfo_t *si, void *data)
++{
++  char c = 'x';
++
++  {
++    char *str = "*************** overflow sigqueue ***********************\n";
++    write (STDERR_FILENO, str, strlen(str));
++  }
++
++  if (!queue_overflowed)
++  {
++      queue_overflowed = 1;
++      // Trigger the read handler
++      write(pipe_write_fd, &c, 1);
++  }
++}
++
++void
++DNotify::signal_handler(int sig, siginfo_t *si, void *data)
++{
++  int left;
++  char c = 'x';
++
++  if (queue_head <= queue_tail)
++    left = (QUEUESIZE + queue_head) - queue_tail;
++  else 
++    left = queue_head - queue_tail;
++  
++  // Must leave at least one item unused to see difference
++  // Betweeen empty and full
++  if (left <= 1)
++  {
++      queue_overflowed = 1;
++      {
++	char *str = "*************** overflow famqueue ****************\n";
++	write (STDERR_FILENO, str, strlen(str));
++      }
++  }
++  else
++  {
++      change_queue[queue_tail] = si->si_fd;
++      queue_tail = (queue_tail + 1) % QUEUESIZE;
++  }
++  
++  if (!queue_changed)
++  {
++      queue_changed = 1;
++      // Trigger the read handler
++      write(pipe_write_fd, &c, 1);
++  }
++}
++
++bool
++DNotify::is_active()
++{
++    if (pipe_read_fd == -2)
++    {
++        int filedes[2];
++	int res;
++	
++	res = pipe (filedes);
++	if (res >= 0)
++	{   Log::debug("opened pipe");
++   	    pipe_read_fd = filedes[0];
++   	    pipe_write_fd = filedes[1];
++
++	    // Setup signal handler:
++	    struct sigaction act;
++	    
++	    act.sa_sigaction = signal_handler;
++	    sigemptyset(&act.sa_mask);
++	    act.sa_flags = SA_SIGINFO;
++	    sigaction(SIGRTMIN, &act, NULL);
++
++	    // When the RT queue overflows we get a SIGIO
++	    act.sa_sigaction = overflow_signal_handler;
++	    sigemptyset(&act.sa_mask);
++	    sigaction(SIGIO, &act, NULL);
++
++	    (void) Scheduler::install_read_handler(pipe_read_fd, read_handler, NULL);
++	}
++    }
++    return pipe_read_fd >= 0;
++}
++
++DNotify::DirWatch *
++DNotify::lookup_dirwatch (int fd)
++{
++  DirWatch **p;
++  DirWatch *w;
++
++  p = dir_hashchain (fd);
++
++  while (*p)
++    {
++      w = *p;
++
++      if (w->fd == fd)
++	return w;
++
++      p = &w->hash_link;
++    }
++  
++  return *p;
++}
++
++// This colud be made faster by using another hash table.
++// But it's not that bad, since it is only used by express/revoke
++DNotify::DirWatch *
++DNotify::lookup_dirwatch (dev_t dir_dev, ino_t dir_ino)
++{
++  DirWatch *p;
++  int i;
++
++  for (i=0;i<DIR_HASHSIZE;i++)
++    {
++      p = dir_hash[i];
++      
++      while (p)
++	{
++	  if (p->dir_dev == dir_dev && p->dir_ino == dir_ino)
++	    return p;
++	  
++	  p = p->hash_link;
++	}
++    }
++  
++  return NULL;
++}
++
++DNotify::FileWatch *
++DNotify::lookup_filewatch (dev_t dev, ino_t ino)
++{
++  FileWatch **p;
++  FileWatch *w;
++
++  p = file_hashchain (dev, ino);
++
++  while (*p)
++    {
++      w = *p;
++
++      if (w->file_dev == dev && w->file_ino == ino)
++	return w;
++
++      p = &w->hash_link;
++    }
++  
++  return *p;
++}
++
++// Make sure w is not already in the hash table before calling
++// this function.
++void
++DNotify::hash_dirwatch(DirWatch *w)
++{
++  DirWatch **p;
++  p = dir_hashchain (w->fd);
++  w->hash_link = *p;
++  *p = w;
++}
++
++// Make sure w is not already in the hash table before calling
++// this function.
++void
++DNotify::hash_filewatch(FileWatch *w)
++{
++  FileWatch **p;
++  p = file_hashchain (w->file_dev, w->file_ino);
++  w->hash_link = *p;
++  *p = w;
++}
++
++void
++DNotify::unhash_dirwatch(DirWatch *w)
++{
++  DirWatch **p;
++  
++  p = dir_hashchain (w->fd);
++  
++  while (*p)
++    {
++      if (*p == w)
++	{
++	  *p = w->hash_link;
++	  break;
++	}
++      p = &(*p)->hash_link;
++    }
++  w->hash_link = NULL;
++}
++
++void
++DNotify::unhash_filewatch(FileWatch *w)
++{
++  FileWatch **p;
++  
++  p = file_hashchain (w->file_dev, w->file_ino);
++  
++  while (*p)
++    {
++      if (*p == w)
++	{
++	  *p = w->hash_link;
++	  break;
++	}
++      p = &(*p)->hash_link;
++    }
++  w->hash_link = NULL;
++}
++
++DNotify::Status
++DNotify::watch_dir(const char *notify_dir, dev_t file_dev, ino_t file_ino)
++{
++  struct stat stat;
++  dev_t dir_dev;
++  ino_t dir_ino;
++  DirWatch *dwatch;
++  FileWatch *fw;
++    
++  if (lstat (notify_dir, &stat) == -1)
++      return BAD;
++  
++  dwatch = lookup_dirwatch(stat.st_dev, stat.st_ino);
++  if (!dwatch)
++    {
++      Log::debug ("New DirWatch for %s (%x %x)\n",
++		  notify_dir, (int)stat.st_dev, (int)stat.st_ino);
++      dwatch = new DirWatch;
++      dwatch->watches = NULL;
++      dwatch->hash_link = NULL;
++      dwatch->dir_dev = stat.st_dev;
++      dwatch->dir_ino = stat.st_ino;
++      
++      dwatch->fd = open(notify_dir, O_RDONLY);
++      fcntl (dwatch->fd, F_SETSIG, SIGRTMIN);
++      if (fcntl (dwatch->fd, F_NOTIFY,
++                 (DN_MODIFY|DN_CREATE|DN_DELETE|DN_RENAME|DN_ATTRIB) 
++		  | DN_MULTISHOT) == -1) {
++	      return BAD;
++      }
++      hash_dirwatch (dwatch);
++    }
++
++  fw = lookup_filewatch (file_dev, file_ino);
++  if (fw && fw->dir_watch == dwatch)
++	return OK;
++  
++  // No old FileWatch, need to add one:
++  Log::debug("New FileWatch for %x %x\n", (int)file_dev, (int)file_ino);
++  fw = new FileWatch;
++  fw->next = dwatch->watches;
++  dwatch->watches = fw;
++  fw->file_dev = file_dev;
++  fw->file_ino = file_ino;
++  fw->dir_watch = dwatch;
++  hash_filewatch(fw);
++  return OK;
++}
++
++char *
++dirname_dup (const char *name)
++{
++  char *copy = strdup(name);
++  char *res = dirname(copy);
++  res = strdup(res);
++  free (copy);
++  return res;
++}
++
++DNotify::Status
++DNotify::express(const char *name, struct stat *status)
++{
++    struct stat stat;
++    char *notify_dir;
++    int res;
++    Status s;
++    dev_t dev;
++    ino_t ino;
++
++    Log::debug("express() name: %s\n", name);
++
++    if (!is_active())
++	return BAD;
++
++    if (::lstat (name, &stat) == -1)
++      return BAD;
++
++    dev = stat.st_dev;
++    ino = stat.st_ino;
++    
++    if ((stat.st_mode & S_IFMT) != S_IFDIR)
++	notify_dir = dirname_dup (name);
++    else
++	notify_dir = (char *)name;
++
++    s = watch_dir (notify_dir, dev, ino);
++    if (notify_dir != name)
++        free (notify_dir);
++    if (s)
++      return s;
++
++    // Check for a race condition; if someone removed or changed the
++    // file at the same time that we are expressing interest in it,
++    // revoke the interest so we don't get notifications about changes
++    // to a recycled inode that we don't otherwise care about.
++    //
++    struct stat st;
++    if (status == NULL) {
++	status = &st;
++    }
++    if (::lstat(name, status) == -1) {
++	Log::perror("stat on \"%s\" failed", name);
++	revoke(name, stat.st_dev, stat.st_ino);
++	return BAD;
++    }
++    if (status->st_dev != stat.st_dev
++	|| status->st_ino != stat.st_ino) {
++	Log::error("File \"%s\" changed between express and stat",
++		   name);
++	revoke(name, stat.st_dev, stat.st_ino);
++	return BAD;
++    }	
++
++    Log::debug("told dnotify to monitor \"%s\" = dev %d/%d, ino %d", name,
++	       major(status->st_dev), minor(status->st_dev),
++	       status->st_ino);
++    return OK;
++}
++
++DNotify::Status
++DNotify::revoke(const char *name, dev_t dev, ino_t ino)
++{
++    FileWatch *fwatch;
++    DirWatch *dwatch;
++    
++    Log::debug("revoke() name: %s, dev: %x, ino: %x\n", name, dev, ino);
++
++    if (!is_active())
++	return BAD;
++
++    // Lookup FileWatch by dev:ino, and its DirWatch.
++    fwatch = lookup_filewatch (dev, ino);
++    if (fwatch == NULL)
++	return BAD;
++    
++    dwatch = fwatch->dir_watch;
++    
++    // delete FileWatch, if last FileWatch: close fd, delete DirWatch
++    Log::debug ("Destroying FileWatch for (%x %x)\n",
++		(int)fwatch->file_dev, (int)fwatch->file_ino);
++    FileWatch **p;
++    for (p=&dwatch->watches; *p; p=&(*p)->next)
++    {
++      if (*p == fwatch)
++	{
++	  *p = (*p)->next;
++	  break;
++	}
++    }
++    unhash_filewatch(fwatch);
++    delete fwatch;
++    if (dwatch->watches == NULL)
++      {
++	Log::debug ("Destroying DirWatch for (%x %x)\n",
++		    (int)dwatch->dir_dev, (int)dwatch->dir_ino);
++	close(dwatch->fd);
++	unhash_dirwatch(dwatch);
++	delete dwatch;
++      }
++  
++    return OK;
++}
++
++
++void
++DNotify::all_watches_changed(void)
++{
++  int i;
++  FileWatch *fw;
++
++  for (i=0; i<FILE_HASHSIZE; i++)
++  {
++      fw = file_hash[i];
++      while (fw)
++      {
++	  (*ehandler)(fw->file_dev, fw->file_ino, CHANGE);
++
++	  fw = fw->hash_link;
++      }
++  }
++}
++
++
++void
++DNotify::read_handler(int fd, void *)
++{
++    static char readbuf[5000];
++    DirWatch *dw;
++    FileWatch *fw;
++    int snap_queue_tail;
++    int last_fd;
++
++    int rc = read(fd, readbuf, sizeof readbuf);
++    queue_changed = 0;
++    if (rc < 0)
++        Log::perror("pipe read");
++    else if (queue_overflowed)
++    {
++	  // There is a *slight* race condition here. Between reading
++	  // the queue_overflow flag and resetting it. But it doesn't
++	  // matter, since I'm gonna handle the overflow after reseting
++	  // anyway.
++	  queue_overflowed = false;
++
++	  // We're soon gonna check all watches anyway, so
++	  // get rid of the current queue
++	  queue_head = queue_tail;
++	  
++	  all_watches_changed ();
++    }
++    else
++    {
++	// Don't read events that happen later than
++	// the initial read. (Otherwise skipping fd's
++	// might miss some changes).
++	snap_queue_tail = queue_tail;
++	last_fd = -1;
++	while (queue_head != snap_queue_tail)
++	{
++	    fd = change_queue[queue_head];
++	    queue_head = (queue_head + 1) % QUEUESIZE;
++
++	    // Skip multiple changes to the same fd
++	    if (fd != last_fd)
++	    {
++		dw = lookup_dirwatch (fd);
++		if (dw)
++		{
++		    int n_watches, i;
++		    ChangeEventData *data;
++		    
++		    Log::debug("dnotify said dev %d/%d, ino %ld changed",
++			       major(dw->dir_dev), minor(dw->dir_dev), dw->dir_ino);
++		    
++		    n_watches = 0;
++		    for (fw=dw->watches; fw; fw=fw->next)
++			n_watches++;
++		    
++		    data = new ChangeEventData[n_watches];
++
++		    i = 0;
++		    for (fw=dw->watches; fw; fw=fw->next)
++		    {
++			data[i].file_dev = fw->file_dev;
++			data[i].file_ino = fw->file_ino;
++			i++;
++		    }
++
++		    for (i = 0; i < n_watches; i++)
++		    {
++			(*ehandler)(data[i].file_dev, data[i].file_ino, CHANGE);
++		    }
++		    
++		    delete[] data;
++		}
++	    }
++	    last_fd = fd;
++	}
++    }
++}
++
+--- fam-2.7.0/src/DNotify.h	2004-01-30 00:00:00.000000000 +0100
++++ fam-2.7.0.dnotify/src/DNotify.h	2004-01-30 00:00:00.000000000 +0100
+@@ -0,0 +1,98 @@
++//  Copyright (C) 2001 Red Hat, Inc.  All Rights Reserved.
++//  Copyright (C) 1999 Silicon Graphics, Inc.  All Rights Reserved.
++//
++//  This program is free software; you can redistribute it and/or modify it
++//  under the terms of version 2 of the GNU General Public License as
++//  published by the Free Software Foundation.
++//
++//  This program is distributed in the hope that it would be useful, but
++//  WITHOUT ANY WARRANTY; without even the implied warranty of
++//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  Further, any
++//  license provided herein, whether implied or otherwise, is limited to
++//  this program in accordance with the express provisions of the GNU
++//  General Public License.  Patent licenses, if any, provided herein do not
++//  apply to combinations of this program with other product or programs, or
++//  any other product whatsoever.  This program is distributed without any
++//  warranty that the program is delivered free of the rightful claim of any
++//  third person by way of infringement or the like.  See the GNU General
++//  Public License for more details.
++//
++//  You should have received a copy of the GNU General Public License along
++//  with this program; if not, write the Free Software Foundation, Inc., 59
++//  Temple Place - Suite 330, Boston MA 02111-1307, USA.
++
++#ifndef DNotify_included
++#define DNotify_included
++
++#include "config.h"
++#include "Monitor.h"
++#include <signal.h>
++
++//  DNotify is an object encapsulating the dnotify linux fcntl.
++//  It "emulates" the IMon interface.
++//  There can only be one instantiation of the DNotify object.
++//
++//  The user of this object uses express() and revoke() to
++//  express/revoke interest in a file.  There is also
++//  a callback, the EventHandler.  When an dnotify event comes in,
++//  the EventHandler is called.
++//
++//  The user of the DNotify object is the Interest class.
++
++class DNotify : public Monitor {
++public:
++    DNotify(EventHandler h);
++    ~DNotify();
++
++    static bool is_active();
++
++    virtual Status express(const char *name, struct stat *stat_return);
++    virtual Status revoke(const char *name, dev_t dev, ino_t ino);
++
++private:
++    struct FileWatch;
++    struct DirWatch;
++    struct ChangeEventData;
++  
++    //  Class Variables
++    enum { QUEUESIZE = 1024 };
++    static int pipe_write_fd;
++    static int pipe_read_fd;
++    static int change_queue[QUEUESIZE];
++    static volatile sig_atomic_t queue_overflowed;
++    static volatile sig_atomic_t queue_changed;
++    static volatile int queue_head; // Only modified by read handler
++    static volatile int queue_tail; // Only modified by signal handler
++    static EventHandler ehandler;
++    static void overflow_signal_handler(int sig, siginfo_t *si, void *data);
++    static void signal_handler(int sig, siginfo_t *si, void *data);
++    static void read_handler(int fd, void *closure);
++ 
++    enum { DIR_HASHSIZE = 367 };
++    static DirWatch *dir_hash[DIR_HASHSIZE];
++    enum { FILE_HASHSIZE = 823 };
++    static FileWatch *file_hash[FILE_HASHSIZE];
++
++    static DirWatch **dir_hashchain(int fd)
++			  { return &dir_hash[(unsigned) (fd) % DIR_HASHSIZE]; }
++    static FileWatch **file_hashchain(dev_t d, ino_t i)
++			  { return &file_hash[(unsigned) (d+i) % FILE_HASHSIZE]; }
++
++    static DirWatch *lookup_dirwatch (int fd);
++    static DirWatch *lookup_dirwatch (dev_t dir_dev, ino_t dir_ino);
++    static FileWatch *lookup_filewatch (dev_t file_dev, ino_t file_ino);
++    static void hash_dirwatch(DirWatch *w);
++    static void hash_filewatch(FileWatch *w);
++    static void unhash_dirwatch(DirWatch *w);
++    static void unhash_filewatch(FileWatch *w);
++    static Status watch_dir(const char *notify_dir, dev_t file_dev, ino_t file_ino);
++
++    static void all_watches_changed(void);
++    
++    DNotify(const DNotify&);			// Do not copy
++    DNotify & operator = (const DNotify&);	//  or assign.
++};
++
++#endif /* !IMon_included */
++
++
+--- fam-2.7.0/src/Interest.c++	2004-01-30 00:00:00.000000000 +0100
++++ fam-2.7.0.dnotify/src/Interest.c++	2004-01-30 00:00:00.000000000 +0100
+@@ -42,12 +42,21 @@
+ #include "Event.h"
+ #include "FileSystem.h"
+ #include "IMon.h"
++#include "DNotify.h"
+ #include "Log.h"
+ #include "Pollster.h"
+ #include "timeval.h"
+ 
+ Interest *Interest::hashtable[];
+-IMon      Interest::imon(imon_handler);
++
++#ifdef USE_DNOTIFY 
++static DNotify dnotify(Interest::monitor_handler);
++Monitor * Interest::monitor = &dnotify;
++#else
++static IMon imon(Interest::monitor_handler);
++Monitor * Interest::monitor = &imon;
++#endif
++
+ bool      Interest::xtab_verification = true;
+ 
+ Interest::Interest(const char *name, FileSystem *fs, in_addr host, ExportVerification ev)
+@@ -60,10 +69,10 @@
+       mypath_exported_to_host(ev == NO_VERIFY_EXPORTED)
+ {
+     memset(&old_stat, 0, sizeof(old_stat)); 
+-    IMon::Status s = IMon::BAD;
+ 
+-    s = imon.express(name, &old_stat);
+-    if (s != IMon::OK)
++    Monitor::Status s = Monitor::BAD;
++    s = monitor->express(name, &old_stat);
++    if (s != Monitor::OK)
+     {   int rc = lstat(name, &old_stat);
+ 	if (rc < 0)
+ 	{   Log::info("can't lstat %s", name);
+@@ -100,7 +109,7 @@
+     }
+ #endif
+ 
+-    if (exported_to_host()) fs->ll_monitor(this, s == IMon::OK);
++    if (exported_to_host()) fs->ll_monitor(this, s == Monitor::OK);
+ }
+ 
+ Interest::~Interest()
+@@ -128,7 +137,7 @@
+ 		pp = &p->hashlink;	// move to next element
+ 	    }
+ 	if (!found_same)
+-	    (void) imon.revoke(name(), dev, ino);
++	  (void) monitor->revoke(name(), dev, ino);
+     }
+ }
+ 
+@@ -147,7 +156,7 @@
+ 
+         // Express interest.
+         IMon::Status s = IMon::BAD;
+-	s = imon.express(name(), NULL);
++	s = monitor->express(name(), NULL);
+         if (s != IMon::OK) {
+             return true;
+         }
+@@ -248,23 +257,23 @@
+ }
+ 
+ void
+-Interest::imon_handler(dev_t device, ino_t inumber, int event)
++Interest::monitor_handler(dev_t device, ino_t inumber, int event)
+ {
+     assert(device || inumber);
+ 
+     for (Interest *p = *hashchain(device, inumber), *next = p; p; p = next)
+     {	next = p->hashlink;
+ 	if (p->ino == inumber && p->dev == device)
+-	{   if (event == IMon::EXEC)
++	  {   if (event == Monitor::EXEC)
+ 	    {   p->cur_exec_state = EXECUTING;
+ 		(void) p->report_exec_state();
+ 	    }
+-	    else if (event == IMon::EXIT)
++	    else if (event == Monitor::EXIT)
+ 	    {   p->cur_exec_state = NOT_EXECUTING;
+ 		(void) p->report_exec_state();
+ 	    }
+ 	    else
+-	    {   assert(event == IMon::CHANGE);
++	    {   assert(event == Monitor::CHANGE);
+ 		p->scan();
+ 	    }
+ 	}
+--- fam-2.7.0/config.h.in	2003-01-20 01:40:15.000000000 +0100
++++ fam-2.7.0.dnotify/config.h.in	2004-01-30 13:50:33.000000000 +0100
+@@ -180,3 +180,6 @@
+ 
+ /* Define to `int' if <sys/types.h> doesn't define. */
+ #undef uid_t
++
++/* Define to 1 if you have F_NOTIFY fcntl */
++#undef USE_DNOTIFY
+--- fam-2.7.0/configure.ac	2003-11-26 20:47:59.000000000 +0100
++++ fam-2.7.0.dnotify/configure.ac	2004-01-30 13:50:33.000000000 +0100
+@@ -34,7 +34,26 @@
+ AC_HEADER_DIRENT
+ AC_CHECK_HEADERS([fcntl.h limits.h linux/imon.h netinet/in.h rpc/rpc.h rpcsvc/mount.h stddef.h stdlib.h string.h syslog.h sys/imon.h sys/param.h sys/select.h sys/statvfs.h sys/syssgi.h sys/time.h sys/types.h sys/un.h unistd.h])
+ 
+-if test "$have_sys_imon_h"; then
++# Test for the linux dnotify fcntl
++AC_MSG_CHECKING([for dnotify fcntl support])
++AC_TRY_COMPILE([
++#define _GNU_SOURCE  
++#include <fcntl.h>
++#include <unistd.h>
++],
++[ int fd = 1;
++  fcntl (fd, F_NOTIFY, (DN_MODIFY|DN_CREATE|DN_DELETE|DN_RENAME|DN_ATTRIB)
++                       |DN_MULTISHOT);
++], have_dnotify=yes, have_dnotify=no)
++
++use_dnotify=false
++AC_MSG_RESULT($have_dnotify)
++
++if test "$have_dnotify"; then
++        MONITOR_FUNCS=IMonNone
++        AC_DEFINE([USE_DNOTIFY], [], [Use dnotify])
++	use_dnotify=true
++elif test "$have_sys_imon_h"; then
+ 	MONITOR_FUNCS=IMonIRIX
+ elif test "$have_linux_imon_h"; then
+ 	MONITOR_FUNCS=IMonLinux
+@@ -42,6 +62,7 @@
+ 	MONITOR_FUNCS=IMonNone
+ fi
+ AC_SUBST(MONITOR_FUNCS)
++AM_CONDITIONAL(USE_DNOTIFY, $use_dnotify)
+ 
+ # Checks for typedefs, structures, and compiler characteristics.
+ AC_HEADER_STDBOOL
+--- fam-2.7.0/src/IMon.h	2004-01-30 00:00:00.000000000 +0200
++++ fam-2.7.0.dnotify/src/IMon.h	2004-01-30 00:00:00.000000000 +0200
+@@ -24,10 +24,7 @@
+ #define IMon_included
+ 
+ #include "config.h"
+-#include <sys/stat.h>
+-#include <sys/types.h>
+-
+-#include "Boolean.h"
++#include "Monitor.h"
+ 
+ struct stat;
+ 
+@@ -41,25 +38,18 @@
+ //
+ //  The user of the IMon object is the Interest class.
+ 
+-class IMon {
++class IMon : public Monitor {
+ 
+ public:
+-
+-    enum Status { OK = 0, BAD = -1 };
+-    enum Event { EXEC, EXIT, CHANGE };
+-
+-    typedef void (*EventHandler)(dev_t, ino_t, int event);
+-
+     IMon(EventHandler h);
+     ~IMon();
+ 
+     static bool is_active();
+ 
+-    Status express(const char *name, struct stat *stat_return);
+-    Status revoke(const char *name, dev_t dev, ino_t ino);
++    virtual Status express(const char *name, struct stat *stat_return);
++    virtual Status revoke(const char *name, dev_t dev, ino_t ino);
+ 
+ private:
+-
+     //  Class Variables
+ 
+     static int imonfd;
+--- fam-2.7.0/src/Interest.h	2004-01-30 00:00:00.000000000 +0200
++++ fam-2.7.0.dnotify/src/Interest.h	2004-01-30 00:00:00.000000000 +0200
+@@ -32,7 +32,7 @@
+ 
+ class Event;
+ class FileSystem;
+-class IMon;
++class Monitor;
+ struct stat;
+ 
+ //  Interest -- abstract base class for filesystem entities of interest.
+@@ -74,7 +74,7 @@
+ 
+     //  Public Class Method
+ 
+-    static void imon_handler(dev_t, ino_t, int event);
++    static void monitor_handler(dev_t, ino_t, int event);
+ 
+     static void enable_xtab_verification(bool enable);
+ 
+@@ -121,7 +121,7 @@
+ 
+     //  Class Variables
+ 
+-    static IMon imon;
++    static Monitor *monitor;
+     static Interest *hashtable[HASHSIZE];
+     static bool xtab_verification;
+ 
+--- fam-2.7.0/src/Makefile.am	2003-01-19 13:00:17.000000000 +0100
++++ fam-2.7.0.dnotify/src/Makefile.am	2004-01-30 13:50:38.000000000 +0100
+@@ -71,7 +71,11 @@
+   main.c++ \
+   timeval.c++ \
+   timeval.h \
+-  @MONITOR_FUNCS@.c++
++  Monitor.h \
++  DNotify.h \
++  DNotify.c++ \
++  @MONITOR_FUNCS@.c++ 
+ 
+-EXTRA_famd_SOURCES = IMonIrix.c++ IMonLinux.c++ IMonNone.c++
++EXTRA_famd_SOURCES = IMonIrix.c++ IMonLinux.c++ IMonNone.c++ DNotify.c++ \
++  DNotify.h Monitor.h
+ 
+--- fam-2.7.0/src/Monitor.h	2004-01-30 00:00:00.000000000 +0200
++++ fam-2.7.0.dnotify/src/Monitor.h	2004-01-30 00:00:00.000000000 +0200
+@@ -0,0 +1,57 @@
++//  Copyright (C) 2001 Red Hat, Inc.  All Rights Reserved.
++//  Copyright (C) 1999 Silicon Graphics, Inc.  All Rights Reserved.
++//  
++//  This program is free software; you can redistribute it and/or modify it
++//  under the terms of version 2 of the GNU General Public License as
++//  published by the Free Software Foundation.
++//
++//  This program is distributed in the hope that it would be useful, but
++//  WITHOUT ANY WARRANTY; without even the implied warranty of
++//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  Further, any
++//  license provided herein, whether implied or otherwise, is limited to
++//  this program in accordance with the express provisions of the GNU
++//  General Public License.  Patent licenses, if any, provided herein do not
++//  apply to combinations of this program with other product or programs, or
++//  any other product whatsoever.  This program is distributed without any
++//  warranty that the program is delivered free of the rightful claim of any
++//  third person by way of infringement or the like.  See the GNU General
++//  Public License for more details.
++//
++//  You should have received a copy of the GNU General Public License along
++//  with this program; if not, write the Free Software Foundation, Inc., 59
++//  Temple Place - Suite 330, Boston MA 02111-1307, USA.
++
++#ifndef Monitor_included
++#define Monitor_included
++
++#include "config.h"
++#include <sys/stat.h>
++#include <sys/types.h>
++
++struct stat;
++
++//  Monitor is an abstract baseclass for differend file monitoring
++//  systems. The original system used was IMon, and the Montor API
++//  is heavily influenced by that.
++//  There can only be one instantiation of the Monitor object.
++//
++//  The user of this object uses express() and revoke() to
++//  express/revoke interest in a file to imon.  There is also
++//  a callback, the EventHandler.  When an event comes in,
++//  the EventHandler is called.
++//
++//  The main implementers of the Monitor class is IMon and DNotify
++
++class Monitor {
++public:
++
++    enum Status { OK = 0, BAD = -1 };
++    enum Event { EXEC, EXIT, CHANGE };
++
++    typedef void (*EventHandler)(dev_t, ino_t, int event);
++
++    virtual Status express(const char *name, struct stat *stat_return) = 0;
++    virtual Status revoke(const char *name, dev_t dev, ino_t ino) = 0;
++};
++
++#endif /* !Monitor_included */
diff --git a/abs/extra-testing/fam/fam-2.7.0-gcc43.patch b/abs/extra-testing/fam/fam-2.7.0-gcc43.patch
new file mode 100644
index 0000000..a5ba7f0
--- /dev/null
+++ b/abs/extra-testing/fam/fam-2.7.0-gcc43.patch
@@ -0,0 +1,46 @@
+diff -Naur fam-2.7.0-old/include/BTree.h fam-2.7.0/include/BTree.h
+--- fam-2.7.0-old/include/BTree.h	2003-01-20 14:22:30.000000000 +1000
++++ fam-2.7.0/include/BTree.h	2008-10-18 10:43:11.000000000 +1000
+@@ -23,6 +23,8 @@
+ #ifndef BTree_included
+ #define BTree_included
+ 
++#include <cstdlib>
++
+ #include "Boolean.h"
+ 
+ //  This is an in-core B-Tree implementation.
+diff -Naur fam-2.7.0-old/src/DNotify.c++ fam-2.7.0/src/DNotify.c++
+--- fam-2.7.0-old/src/DNotify.c++	2008-10-18 10:33:13.000000000 +1000
++++ fam-2.7.0/src/DNotify.c++	2008-10-18 10:41:22.000000000 +1000
+@@ -31,6 +31,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <libgen.h>
++#include <cstdlib>
+ 
+ #include "DNotify.h"
+ 
+diff -Naur fam-2.7.0-old/src/IMon.c++ fam-2.7.0/src/IMon.c++
+--- fam-2.7.0-old/src/IMon.c++	2003-01-19 00:18:12.000000000 +1000
++++ fam-2.7.0/src/IMon.c++	2008-10-18 10:40:21.000000000 +1000
+@@ -40,7 +40,7 @@
+ #include "Interest.h"
+ #include "Log.h"
+ #include "Scheduler.h"
+-#include "alloc.h"
++#include <memory>
+ 
+ int		   IMon::imonfd = -2;
+ IMon::EventHandler IMon::ehandler = NULL;
+diff -Naur fam-2.7.0-old/src/Interest.h fam-2.7.0/src/Interest.h
+--- fam-2.7.0-old/src/Interest.h	2008-10-18 10:33:13.000000000 +1000
++++ fam-2.7.0/src/Interest.h	2008-10-18 10:40:44.000000000 +1000
+@@ -23,6 +23,7 @@
+ #ifndef Interest_included
+ #define Interest_included
+ 
++#include <cstdlib>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <sys/time.h>
diff --git a/abs/extra-testing/fam/fam-2.7.0-largefiles.patch b/abs/extra-testing/fam/fam-2.7.0-largefiles.patch
new file mode 100644
index 0000000..60de9a4
--- /dev/null
+++ b/abs/extra-testing/fam/fam-2.7.0-largefiles.patch
@@ -0,0 +1,8 @@
+--- fam-2.7.0/common.am	2003-01-19 06:09:08.000000000 -0600
++++ fam-2.7.0.largefile/common.am	2005-01-12 19:08:06.462113110 -0600
+@@ -1,2 +1,5 @@
+-INCLUDES = @FAM_INC@ -DFAM_CONF=\"@FAM_CONF@\"
++INCLUDES = @FAM_INC@ -DFAM_CONF=\"@FAM_CONF@\" \
++       -D_FILE_OFFSET_BITS=64                  \
++       -D_LARGEFILE64_SOURCE
++
diff --git a/abs/extra-testing/fam/fam-2.7.0-noc++.patch b/abs/extra-testing/fam/fam-2.7.0-noc++.patch
new file mode 100644
index 0000000..9188af0
--- /dev/null
+++ b/abs/extra-testing/fam/fam-2.7.0-noc++.patch
@@ -0,0 +1,83 @@
+diff -ruN fam-2.7.0/lib/Client.c++ fam-2.7.0.noc++/lib/Client.c++
+--- fam-2.7.0/lib/Client.c++	2003-01-18 14:18:12.000000000 +0000
++++ fam-2.7.0.noc++/lib/Client.c++	2006-03-02 22:47:50.000000000 +0000
+@@ -34,8 +34,6 @@
+ #include <syslog.h>
+ #include <errno.h>
+ 
+-#include <iostream.h>
+-
+ #include "fam.h"
+ #include "Client.h"
+ 
+@@ -440,3 +438,29 @@
+     memcpy(l, p, sizeof(u_int32_t));
+     *l = ntohl(*l);
+ }
++
++/* Some C++ stuff needed when we not link to libstdc++ */
++void *operator new (size_t sz)
++{
++	void *ret = malloc (sz);
++	if (ret == NULL)
++	{
++		fputs ("libfam memory allocation failed\n", stderr);
++	}
++	return ret;
++}
++
++void *operator new[] (size_t sz)
++{
++	return ::operator new(sz);
++}
++
++void operator delete (void *ptr)
++{
++	free (ptr);
++}
++
++void operator delete[] (void *ptr)
++{
++	free (ptr);
++}
+diff -ruN fam-2.7.0/lib/Makefile.am fam-2.7.0.noc++/lib/Makefile.am
+--- fam-2.7.0/lib/Makefile.am	2003-01-19 01:55:10.000000000 +0000
++++ fam-2.7.0.noc++/lib/Makefile.am	2006-03-02 22:43:01.000000000 +0000
+@@ -7,8 +7,11 @@
+ 	Client.h \
+ 	fam.c++
+ 
+-libfam_la_LDFLAGS = -export-symbols fam.sym
+-libfam_la_LIBADD = -lstdc++
++libfam_la_LDFLAGS = -Wl,--version-script=fam.sym.version
++libfam_la_LIBADD =
++AM_CXXFLAGS = -fno-exceptions -fno-rtti
++
++CXXLD=--tag=CC $(CXX)
+ 
+ EXTRA_DIST = fam.sym
+ 
+diff -ruN fam-2.7.0/lib/fam.sym.version fam-2.7.0.noc++/lib/fam.sym.version
+--- fam-2.7.0/lib/fam.sym.version	1970-01-01 00:00:00.000000000 +0000
++++ fam-2.7.0.noc++/lib/fam.sym.version	2006-03-02 22:49:31.000000000 +0000
+@@ -0,0 +1,20 @@
++{
++   global:
++	FAMCancelMonitor;
++	FAMClose;
++	FAMDebugLevel;
++	FamErrlist;
++	FAMErrno;
++	FAMMonitorCollection;
++	FAMMonitorDirectory;
++	FAMMonitorDirectory2;
++	FAMMonitorFile;
++	FAMMonitorFile2;
++	FAMNextEvent;
++	FAMOpen;
++	FAMOpen2;
++	FAMPending;
++	FAMResumeMonitor;
++	FAMSuspendMonitor;
++   local: *;
++};
diff --git a/abs/extra-testing/fam/include_fam_h.patch b/abs/extra-testing/fam/include_fam_h.patch
new file mode 100644
index 0000000..4248957
--- /dev/null
+++ b/abs/extra-testing/fam/include_fam_h.patch
@@ -0,0 +1,11 @@
+--- include/fam.h.orig	2005-05-25 09:26:38.000000000 +0000
++++ include/fam.h	2005-05-25 09:27:04.000000000 +0000
+@@ -41,7 +41,7 @@
+ *****************************************************************************/
+ 
+ /* For NAME_MAX - maximum # of chars in a filename */
+-#include "limits.h"
++#include <limits.h>
+ 
+ 
+ 
diff --git a/abs/extra-testing/gnome-keyring/PKGBUILD b/abs/extra-testing/gnome-keyring/PKGBUILD
new file mode 100644
index 0000000..d0ea53d
--- /dev/null
+++ b/abs/extra-testing/gnome-keyring/PKGBUILD
@@ -0,0 +1,34 @@
+#$Id: PKGBUILD 15806 2008-10-19 09:55:58Z jgc $
+#Maintainer: Jan De Groot <jgc@archlinux.org>
+
+pkgname=gnome-keyring
+pkgver=2.24.1
+pkgrel=1
+pkgdesc="GNOME Password Management daemon"
+arch=(i686 x86_64)
+license=('GPL' 'LGPL')
+depends=('gconf>=2.24.0' 'hal>=0.5.11')
+makedepends=('perlxml' 'pkgconfig')
+options=('!libtool' '!emptydirs')
+url="http://www.gnome.org"
+install=gnome-keyring.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.24/${pkgname}-${pkgver}.tar.bz2
+	gnome-keyring.service)
+md5sums=('aa5552dc129f3509ee39145b7f0bf977' '16062d82eb8062201fb24f3e0ceb49a6')
+
+build() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  ./configure --prefix=/usr --sysconfdir=/etc \
+              --localstatedir=/var --disable-static \
+	      --libexecdir=/usr/lib/gnome-keyring \
+	      --with-pam-dir=/lib/security || return 1
+  make || return 1
+  make -j1 GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install || return 1
+
+  install -m755 -d "${pkgdir}/usr/share/dbus-1/services"
+  install -m644 "${srcdir}/gnome-keyring.service" "${pkgdir}/usr/share/dbus-1/services/" || return 1
+     
+  install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+  gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" ${pkgdir}/etc/gconf/schemas/*.schemas || return 1
+  rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/abs/extra-testing/gnome-keyring/gnome-keyring.install b/abs/extra-testing/gnome-keyring/gnome-keyring.install
new file mode 100644
index 0000000..8874c6e
--- /dev/null
+++ b/abs/extra-testing/gnome-keyring/gnome-keyring.install
@@ -0,0 +1,19 @@
+pkgname=gnome-keyring
+
+post_install() {
+  usr/sbin/gconfpkg --install ${pkgname}
+}
+
+pre_upgrade() {
+  pre_remove $1
+}
+
+post_upgrade() {
+  post_install $1
+}
+
+pre_remove() {
+  if [ -f usr/share/gconf/${pkgname}.schemas ]; then
+    usr/sbin/gconfpkg --uninstall ${pkgname}
+  fi
+}
diff --git a/abs/extra-testing/gnome-keyring/gnome-keyring.service b/abs/extra-testing/gnome-keyring/gnome-keyring.service
new file mode 100644
index 0000000..96ea061
--- /dev/null
+++ b/abs/extra-testing/gnome-keyring/gnome-keyring.service
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.gnome.keyring
+Exec=/usr/bin/gnome-keyring-daemon
diff --git a/abs/extra-testing/gnome-mime-data/PKGBUILD b/abs/extra-testing/gnome-mime-data/PKGBUILD
new file mode 100644
index 0000000..2ce4092
--- /dev/null
+++ b/abs/extra-testing/gnome-mime-data/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-mime-data
+pkgver=2.18.0
+pkgrel=3
+pkgdesc="The base MIME and Application database for GNOME"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('shared-mime-info') 
+makedepens=('perlxml')
+url="http://www.gnome.org"
+groups=('gnome')
+source=(ftp://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.18/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('541858188f80090d12a33b5a7c34d42c')
+
+build() {
+  cd ${startdir}/src/${pkgname}-${pkgver}
+  ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+  make || return 1
+  make DESTDIR=${startdir}/pkg install
+
+  mkdir -p ${startdir}/pkg/usr/lib
+  mv ${startdir}/pkg/usr/share/pkgconfig ${startdir}/pkg/usr/lib/
+}
diff --git a/abs/extra-testing/gtk-doc/PKGBUILD b/abs/extra-testing/gtk-doc/PKGBUILD
new file mode 100644
index 0000000..6bbbb94
--- /dev/null
+++ b/abs/extra-testing/gtk-doc/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: dorphell <dorphell@archlinux.org>
+
+pkgname=gtk-doc 
+pkgver=1.10
+pkgrel=1
+options=('docs')
+pkgdesc="Used to document the public API of libraries" 
+arch=(i686 x86_64)
+license=('GPL' 'FDL')
+depends=('perl>=5.8.8' 'rarian' 'docbook-xsl') 
+makedepends=('pkgconfig' 'jade')
+install=gtk-doc.install
+url="http://www.gtk.org/gtk-doc/"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.bz2) 
+md5sums=('cbd4be396b0cf8b8ce1fc9b927cdf451')
+
+build() { 
+  cd ${startdir}/src/${pkgname}-${pkgver} 
+  ./configure --prefix=/usr || return 1
+  make || return 1 
+  make DESTDIR=${startdir}/pkg install || return 1
+}
diff --git a/abs/extra-testing/gtk-doc/gtk-doc.install b/abs/extra-testing/gtk-doc/gtk-doc.install
new file mode 100644
index 0000000..5e39bbf
--- /dev/null
+++ b/abs/extra-testing/gtk-doc/gtk-doc.install
@@ -0,0 +1,14 @@
+post_install() {
+cat << _EOF
+==> SGML support in gtk-doc is no longer maintained, only very old projects
+==> still use SGML. Install (open)jade for SGML support. 
+_EOF
+}
+
+post_upgrade() {
+  post_install $1
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/extra-testing/hunspell/ChangeLog b/abs/extra-testing/hunspell/ChangeLog
new file mode 100644
index 0000000..dcb3a2a
--- /dev/null
+++ b/abs/extra-testing/hunspell/ChangeLog
@@ -0,0 +1,6 @@
+2008-12-02  Alexander Fehr  <pizzapunk gmail com>
+
+  * hunspell-1.2.8-1:
+  New upstream release.
+  New maintainer.
+  Added ChangeLog.
diff --git a/abs/extra-testing/hunspell/PKGBUILD b/abs/extra-testing/hunspell/PKGBUILD
new file mode 100644
index 0000000..2db38c2
--- /dev/null
+++ b/abs/extra-testing/hunspell/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 20746 2008-12-06 14:17:50Z alexanderf $
+# Maintainer: Alexander Fehr <pizzapunk gmail com>
+# Contributor: Hussam Al-Tayeb <ht990332@gmail.com>
+
+pkgname=hunspell
+pkgver=1.2.8
+pkgrel=1
+pkgdesc="Spell checker and morphological analyzer library and program"
+arch=('i686' 'x86_64')
+url="http://hunspell.sourceforge.net/"
+license=('GPL' 'LGPL' 'MPL')
+depends=('gcc-libs')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/hunspell/hunspell-$pkgver.tar.gz)
+md5sums=('1177af54a09e320d2c24015f29c3a93e')
+
+build() {
+  cd "$srcdir/hunspell-$pkgver"
+
+  ./configure --prefix=/usr --disable-static || return 1
+  make || return 1
+  make DESTDIR="$pkgdir" install || return 1
+}
diff --git a/abs/extra-testing/jade/PKGBUILD b/abs/extra-testing/jade/PKGBUILD
new file mode 100644
index 0000000..e6a7722
--- /dev/null
+++ b/abs/extra-testing/jade/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 3700 2008-06-29 13:36:31Z jgc $
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+pkgname=jade
+pkgver=1.2.1
+pkgrel=5
+_debpatch=47
+pkgdesc="James Clark's DSSSL Engine"
+url='http://www.jclark.com/jade/'
+arch=('i686' 'x86_64')
+license=('custom')
+depends=('gcc-libs')
+replaces='openjade'
+options=('!libtool')
+source=(ftp://ftp.jclark.com/pub/jade/jade-${pkgver}.tar.gz
+        http://ftp.debian.org/debian/pool/main/j/jade/jade_${pkgver}-${_debpatch}.diff.gz)
+md5sums=('4239670ca6b578bff68b8c2e7cd1225f'
+         'feb3889e2a5fa86ac6bdb742a25d0001')
+
+build() {
+  cd ${srcdir}/${pkgname}-${pkgver}
+  patch -Np1 -i ${srcdir}/jade_${pkgver}-${_debpatch}.diff || return 1
+  chmod 755 configure || return 1
+  ./configure --prefix=/usr --enable-default-catalog=/usr/share/sgml/catalog || return 1
+  make || return 1
+  install -d -m755 ${pkgdir}/usr/lib
+  make prefix=${pkgdir}/usr install || return 1
+  mv ${pkgdir}/usr/bin/sx ${pkgdir}/usr/bin/sgml2xml || return 1
+  install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname}
+  install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1
+}
diff --git a/abs/extra-testing/libbonobo/PKGBUILD b/abs/extra-testing/libbonobo/PKGBUILD
new file mode 100644
index 0000000..f913979
--- /dev/null
+++ b/abs/extra-testing/libbonobo/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 13024 2008-09-25 19:31:19Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libbonobo
+pkgver=2.24.0
+pkgrel=1
+pkgdesc="A set of language and system independant CORBA interfaces for creating reusable components"
+arch=(i686 x86_64)
+license=('GPL' 'LGPL')
+depends=('orbit2>=2.14.16' 'libxml2>=2.6.32' 'dbus-glib>=0.76')
+makedepends=('perlxml' 'pkgconfig' 'flex')
+options=('!libtool')
+backup=('etc/bonobo-activation/bonobo-activation-config.xml')
+replaces=('bonobo-activation')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/libbonobo/2.24/libbonobo-${pkgver}.tar.bz2
+	bonobo-activation-config.xml)
+install=libbonobo.install
+md5sums=('b9dd7fcd377945b227db393ac4fa3c37'
+         '6392efaca30a26f826eafc4b8ccbc01f')
+
+build() {
+  cd ${startdir}/src/${pkgname}-${pkgver}
+  ./configure --prefix=/usr --sysconfdir=/etc \
+              --localstatedir=/var --disable-static \
+	      --libexecdir=/usr/lib/bonobo || return 1
+  make || return 1
+  make DESTDIR=${startdir}/pkg install || return 1
+  install -m644 ${startdir}/src/bonobo-activation-config.xml ${startdir}/pkg/etc/bonobo-activation/ || return 1
+}
diff --git a/abs/extra-testing/libbonobo/bonobo-activation-config.xml b/abs/extra-testing/libbonobo/bonobo-activation-config.xml
new file mode 100644
index 0000000..65ee75f
--- /dev/null
+++ b/abs/extra-testing/libbonobo/bonobo-activation-config.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+
+<oafconfig>
+
+<searchpath>
+    <!-- Examples: -->
+    <item>/usr/lib/bonobo/servers</item>
+    <item>/opt/gnome/lib/bonobo/servers</item>
+    <!-- <item>/usr/local/gnome2/lib/bonobo/servers</item> -->
+    <!-- <item>/usr/local/lib/bonobo/servers</item> -->
+    <!-- <item>/opt/gnome2/bonobo-activation/lib/bonobo/servers</item> -->
+</searchpath>
+
+</oafconfig>
diff --git a/abs/extra-testing/libbonobo/libbonobo.install b/abs/extra-testing/libbonobo/libbonobo.install
new file mode 100644
index 0000000..1794e4a
--- /dev/null
+++ b/abs/extra-testing/libbonobo/libbonobo.install
@@ -0,0 +1,23 @@
+post_install() {
+  /bin/true
+}
+
+post_upgrade() {
+  ldconfig -r .
+  PID=`pidof bonobo-activation-server`
+  if [ ! -z "${PID}" ]; then
+    killall -HUP bonobo-activation-server 2>&1
+  fi
+}
+
+pre_remove() {
+  /bin/true
+}
+
+post_remove() {
+  /bin/true
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/extra-testing/portmap/PKGBUILD b/abs/extra-testing/portmap/PKGBUILD
new file mode 100644
index 0000000..dc51a0c
--- /dev/null
+++ b/abs/extra-testing/portmap/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Committer: Judd Vinet <jvinet@zeroflux.org>
+pkgname=portmap
+pkgver=6.0
+pkgrel=2
+pkgdesc="RPC connection manager"
+arch=(i686 x86_64)
+depends=('glibc')
+url="http://neil.brown.name/portmap/"
+license=('GPL')
+source=(http://neil.brown.name/portmap/portmap-6.0.tgz portmap)
+md5sums=('ac108ab68bf0f34477f8317791aaf1ff'
+         'ec37d014a47adc39e52e4bf31bf2a19a')
+
+build() {
+  cd $startdir/src/portmap_$pkgver
+  make || return 1
+  mkdir -p $startdir/pkg/sbin
+  mkdir -p $startdir/pkg/usr/share/man/man8
+  make BASEDIR=$startdir/pkg install
+  mkdir -p $startdir/pkg/etc/rc.d
+  cp ../portmap $startdir/pkg/etc/rc.d
+}
diff --git a/abs/extra-testing/portmap/gcc3-errno_h.patch b/abs/extra-testing/portmap/gcc3-errno_h.patch
new file mode 100644
index 0000000..a440e61
--- /dev/null
+++ b/abs/extra-testing/portmap/gcc3-errno_h.patch
@@ -0,0 +1,18 @@
+--- portmap_5beta/portmap.c.orig	2002-12-31 22:13:17.000000000 +0200
++++ portmap_5beta/portmap.c	2002-12-31 22:13:50.000000000 +0200
+@@ -97,6 +97,7 @@
+ 
+ extern char *strerror();
+ #include <stdlib.h>
++#include <errno.h>
+ 
+ #ifndef LOG_PERROR
+ #define LOG_PERROR 0
+@@ -124,7 +125,6 @@
+ static void callit();
+ struct pmaplist *pmaplist;
+ int debugging = 0;
+-extern int errno;
+ 
+ #include "pmap_check.h"
+ 
diff --git a/abs/extra-testing/portmap/portmap b/abs/extra-testing/portmap/portmap
new file mode 100755
index 0000000..fb83a0a
--- /dev/null
+++ b/abs/extra-testing/portmap/portmap
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /sbin/portmap`
+case "$1" in
+  start)
+    stat_busy "Starting Portmap"
+    [ -z "$PID" ] && /sbin/portmap
+    if [ $? -gt 0 ]; then
+      stat_fail
+    else
+      echo $PID > /var/run/portmap.pid
+      add_daemon portmap
+      stat_done
+    fi
+    ;;
+  stop)
+    stat_busy "Stopping Portmap"
+    [ ! -z "$PID" ]  && kill $PID &> /dev/null
+    if [ $? -gt 0 ]; then
+      stat_fail
+    else
+      rm /var/run/portmap.pid
+      rm_daemon portmap
+      stat_done
+    fi
+    ;;
+  restart)
+    $0 stop
+    sleep 1
+    $0 start
+    ;;
+  *)
+    echo "usage: $0 {start|stop|restart}"  
+esac
+exit 0
diff --git a/abs/extra-testing/portmap/portmap_5beta.patch.bz2 b/abs/extra-testing/portmap/portmap_5beta.patch.bz2
new file mode 100644
index 0000000..ecaf95e
Binary files /dev/null and b/abs/extra-testing/portmap/portmap_5beta.patch.bz2 differ
diff --git a/abs/extra-testing/rarian/PKGBUILD b/abs/extra-testing/rarian/PKGBUILD
new file mode 100644
index 0000000..b83caff
--- /dev/null
+++ b/abs/extra-testing/rarian/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 11986 2008-09-06 21:33:59Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=rarian
+pkgver=0.8.1
+pkgrel=1
+pkgdesc="Documentation meta-data library, designed as a replacement for Scrollkeeper."
+arch=('i686' 'x86_64')
+url="http://rarian.freedesktop.org/"
+license=('GPL')
+depends=('gcc-libs')
+makedepends=('libxslt')
+conflicts=('scrollkeeper')
+provides=('scrollkeeper')
+replaces=('scrollkeeper')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/0.8/${pkgname}-${pkgver}.tar.bz2
+        user-segfault.patch)
+md5sums=('75091185e13da67a0ff4279de1757b94'
+         '457e9827197009cfa360911fe49a5ad7')
+
+build() {
+  cd ${startdir}/src/${pkgname}-${pkgver}
+  patch -p0 -i ${srcdir}/user-segfault.patch || return 1
+  ./configure --prefix=/usr --sysconfdir=/etc \
+     --localstatedir=/var --disable-static || return 1
+  make || return 1
+  make DESTDIR=${startdir}/pkg install || return 1
+}
diff --git a/abs/extra-testing/rarian/user-segfault.patch b/abs/extra-testing/rarian/user-segfault.patch
new file mode 100644
index 0000000..3311cec
--- /dev/null
+++ b/abs/extra-testing/rarian/user-segfault.patch
@@ -0,0 +1,14 @@
+--- util/rarian-sk-get-cl.cpp~	2008-07-28 19:23:28.000000000 +0200
++++ util/rarian-sk-get-cl.cpp	2008-07-28 19:23:28.000000000 +0200
+@@ -160,6 +160,11 @@
+ {
+   char *filename = NULL;
+   char *user = getenv ("USERNAME");
++
++  if (user == NULL) {
++    user = getenv ("USER");
++  }
++
+   char *basepath = NULL;
+   int i=0;
+   int last = 0;
diff --git a/abs/extra-testing/shared-mime-info/PKGBUILD b/abs/extra-testing/shared-mime-info/PKGBUILD
new file mode 100644
index 0000000..4850139
--- /dev/null
+++ b/abs/extra-testing/shared-mime-info/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 15025 2008-10-12 10:43:09Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=shared-mime-info
+pkgver=0.51
+pkgrel=1
+pkgdesc="Freedesktop.org Shared MIME Info"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('libxml2>=2.6.32' 'glib2>=2.18.1')
+makedepends=('perlxml' 'pkgconfig')
+install=shared-mime-info.install
+url="http://freedesktop.org/Software/shared-mime-info"
+source=(http://freedesktop.org/~hadess/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('01d72161f7d88123fbccd378871f02f0')
+
+build() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  ./configure --prefix=/usr --disable-update-mimedb || return 1
+  make || return 1
+  make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/abs/extra-testing/shared-mime-info/shared-mime-info.install b/abs/extra-testing/shared-mime-info/shared-mime-info.install
new file mode 100644
index 0000000..6b06094
--- /dev/null
+++ b/abs/extra-testing/shared-mime-info/shared-mime-info.install
@@ -0,0 +1,12 @@
+post_install() {
+  update-mime-database /usr/share/mime > /dev/null 2>&1
+}
+
+post_upgrade() {
+  post_install $1
+}
+
+op=$1
+shift
+
+$op $*
diff --git a/abs/extra-testing/startup-notification/PKGBUILD b/abs/extra-testing/startup-notification/PKGBUILD
new file mode 100644
index 0000000..0d65123
--- /dev/null
+++ b/abs/extra-testing/startup-notification/PKGBUILD
@@ -0,0 +1,19 @@
+# $Id: PKGBUILD 21429 2008-12-13 03:30:02Z eric $
+# Maintainer: dorphell <dorphell@archlinux.org>
+pkgname=startup-notification
+pkgver=0.9
+pkgrel=1
+pkgdesc="Monitor and display application startup"
+arch=(i686 x86_64)
+depends=('libx11' 'libsm')
+options=('!libtool')
+url="http://www.freedesktop.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('624b42f1fac5a12c543a079e2cd3b366')
+
+build() {
+  cd ${startdir}/src/${pkgname}-${pkgver}
+  ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
+  make || return 1
+  make DESTDIR=${startdir}/pkg install
+}
-- 
cgit v0.12